频谱细化(ZOOMFFT)的matlab算法程序(频谱图怎么画例题)

clear;

close

all

clc;

format

long

%%初值设置

%发送端设置

sendfbandwidth =4.992e9;

%发送信号的带宽

sendtimeT =6.3068e-04;

%发送信号的周期,斜坡时间

schirp = sendfbandwidth/sendtimeT;

%chirp信号的斜率

%接收端设置

t=0.31e-6;

%每个数据间隔

N =2016;

%数据量是2016个

T = t*N;

%采样周期6.2496e-4

Fs =1/t;

%采样频率

%其他设置

c =299792458;

%光速

D =128;

fftN =4096;

%%

datafre1= readtxtdata(

1215120.txt

);

%datafre1= readdata(1.7.111102GJAING.log);

datafre=datafre1(:,3);

%%数据去除直流分量

%[tcoms,tcols]= size(datafre);

tsignal1= datafre-mean(datafre);

figure(1);subplot(2,1,1)

plot(tsignal1(:,1));title(

原始信号去除直流分量

);grid

on

xlabel(

时间轴

);ylabel(

幅值轴

);

%频率寻找最大值

%%高通滤波

Hd = hpasshamming;

%低通滤波器设计

[b,a]=tf(Hd);

%得到传递函数

tsignal2=filter(b,a,tsignal1);

%滤波后的时域数据

%%

[~, signalfabs]= signalfft(tsignal2);

%fft

[~,fpeakloc]= max(signalfabs(1:fftN/2));

fpeak =(fpeakloc-1)* Fs/fftN;

%得到中频信号

fftn =(0:fftN/2-1)* Fs/fftN;

figure(1);subplot(2,1,2)

plot(fftn ,signalfabs(1:fftN/2));title(

原始数据频谱

);xlabel(

频率Hz

);ylabel(

幅值

);

grid

on

R =(c*T .*fpeak)./(2*sendfbandwidth )*1000;

%直接计算的距离值

%%移频

f0=fpeak;

B = Fs/D;

fl=f0-B/2;

%低频截止频率

fh=f0+B/2;

%高频截止频率

%B=fh-fl;%带宽

%

N = length(datafre);

n=(0:N-1);

signalshift=datafre.*exp(-1i*n*2*pi*(fpeakloc-1)/fftN);

%移频

%对比

fn =(Fs/fftN)*(-fftN/2:fftN/2-1);

[~, xsignalfabs]= signalfftshift(signalshift);

%频移后数据fft

[~, signalfabsyuanshi]= signalfftshift(datafre);

%原始数据fft

figure(2);subplot(2,2,1);

plot(fn,signalfabsyuanshi);grid

on

figure(2);subplot(2,2,2);

plot(fn ,xsignalfabs);

xlabel(

频率/Hz

);ylabel(

fft后幅值

);title(

频移后信号fft波形

);

grid

on

%%低通滤波

Hd = lowhamming(B/2);

%低通滤波器设计

[b,a]=tf(Hd);

%得到传递函数

tsignalfil =filter(b,a,signalshift);

%滤波后的时域数据

[~, xsignalshiftabs]= signalfftshift(tsignalfil);

%fft

figure(2);subplot(2,2,[34]);

plot(fn,xsignalshiftabs);

xlabel(

频率/Hz

);ylabel(

fft后幅值

);title(

频移滤波后信号fft波形

);

grid

on

%%

yd=tsignalfil(1:D-1:N);

%重新采样

%%

%对于复频率的数据则是从尾开始按反向排列存放在数据的后半部分。如果用户只需要分析细化FFT的正频率

%域的,需要将细化FFT结果在(NFFT*3/4+1)~NFFT的数据赋值到一个新向量1~NFFT*1/4的单元,

%将排列在1~NFFT/4的数据赋值到这个新向量的(NFFT/4+1)~NFFT/2的单元,于是便可得到频率从0到

%折叠频率的正频率域的细化FFT变换结果。

[yN,~]= size(yd);

zer0= zeros(1,fftN/2-yN);

% ydata =[yd; zer0];

yresamplingmag=abs(fft(yd,fftN))/fftN*2;

zn=zeros(fftN/2,1);

zn(1:fftN/4)=yresamplingmag(fftN*0.75+1:fftN);

zn(fftN/4+1:fftN/2)=yresamplingmag(1:fftN/4);

zf =(fpeak+(-fftN/4:fftN/4-1)*(Fs/D/fftN));

%直接fft和zoomfft对比图

figure(3);subplot(2,1,1);

stem(zf,zn,

MarkerEdgeColor

red

);

%做频谱图

title(

频谱细化后fft图

); grid

on

subplot(2,1,2);

stem(fftn,signalfabs(1:fftN/2),

filled

);

hold

on

plot(fftn,signalfabs(1:fftN/2));

xlabel(

频率(Hz)

);ylabel(

幅值

);title(

原始信号频谱图

);

set(gca,

Xlim

[zf(1) zf(end)]);

grid

on

%%求距离

[~,zpeakloc]= max(zn);

%计算目标回波频率最大值

zfpeak =zf(1)+(zpeakloc-1)*(Fs/D/fftN);

%得出最大值频率点

Targetdistance = zfpeak*c/2/schirp*1000;

tr =[R Targetdistance ];

figure(4)

stem(tr);grid

on

hold

on

plot(tr);

set(gca,

XLim

[-13])

% legend(yuanshi,zoomfft1);

%axis([05018002000]);

% targetdistance2= peakfre1*c/2/schirp

delr = Targetdistance – R;

频谱细化(ZOOMFFT)的matlab算法程序(频谱图怎么画例题)

京云律所-东台站 京云律所-兴安站 京云律所-龙岩站 京云律所-原平站 京云律所-泉州站 京云律所-五常站 京云律所-冷水江站 京云律所-怀化站 京云律所-牡丹江站 京云律所-赣州站 京云律所-海东站 京云律所-深圳站 京云律所-黔西南布依族站 京云律所-唐山站 京云律所-海宁站 京云律所-辛集站 京云律所-临江站 京云律所-林芝站 京云律所-霍林郭勒站 京云律所-射洪站 京云律所-高碑店站 京云律所-阿坝站 京云律所-恩施站 京云律所-开原站 京云律所-阆中站 京云律所-临清站 京云律所-瑞昌站 京云律所-康定站 京云律所-平度站 京云律所-龙港站 京云律所-临沂站 京云律所-阿图什站 京云律所-宁德站 京云律所-柳州站 京云律所-宜城站 京云律所-邛崃站 京云律所-临夏站 京云律所-雷州站 京云律所-龙南站 京云律所-永安站 京云律所-安陆站 京云律所-孝义站 京云律所-石狮站 京云律所-乌兰察布站 京云律所-吉首站 京云律所-克孜勒苏站 京云律所-津市站 京云律所-文山壮族站 京云律所-台山站 京云律所-永城站 京云律所-新密站 京云律所-贵港站 京云律所-青州站 京云律所-乌苏站 京云律所-连云港站 京云律所-高邮站 京云律所-卫辉站 京云律所-绥化站 京云律所-扬州站 京云律所-营口站 京云律所-呼和浩特站 京云律所-清远站 京云律所-凤城站 京云律所-崇左站 京云律所-资兴站 京云律所-太仓站 京云律所-荆州站 京云律所-肥城站 京云律所-池州站 京云律所-鹰潭站 京云律所-晋城站 京云律所-随州站 京云律所-虎林站 京云律所-玉树站 京云律所-邯郸站 京云律所-广德站 京云律所-济南站 京云律所-长治站 京云律所-广安站 京云律所-武夷山站 京云律所-淄博站 京云律所-任丘站 京云律所-大同站 京云律所-丹江口站 京云律所-沙河站 京云律所-黄南站 京云律所-新泰站 京云律所-张家口站 京云律所-平果站 京云律所-绥芬河站 京云律所-利川站 京云律所-湘潭站 京云律所-错那站 京云律所-英德站 京云律所-敦化站 京云律所-武穴站 京云律所-驻马店站 京云律所-简阳站 京云律所-嫩江站 京云律所-湖州站

免责声明:文章内容来自互联网,本站仅提供信息存储空间服务,真实性请自行鉴别,本站不承担任何责任,如有侵权等情况,请与本站联系删除。

(0)
Matlab创建矩阵、矩阵大小、维度、空矩阵、向量、创建矩阵的函数(matlab中如何创建矩阵)
上一篇 2023-05-20 13:42:30
Matlab入门19:多个数据类型混合运算和连接,结果是什么类型呢?(matlab多个数据存入一个变量)
下一篇 2023-05-20 13:43:48

联系我们

在线咨询: QQ交谈

邮件:362039258#qq.com(把#换成@)

工作时间:周一至周五,10:30-16:30,节假日休息。