实验二信号截断及补零对频谱的影响一、实验目的1、掌握频率分辨率的物理意义2、理解影响频率分辨率的因素3、了解信号截断对频谱的影响二、实验步骤创建如下两个程序:impseq函数function[f,omg]=impseq(omg0,omg1,omg2)omg=[omg1:omg2];f=[(omg-omg0)==0];k_to_fs函数functionf_axis=k_to_fs(fs,N)fork=0:N-1if(k=N/2-1)f_axis(k+1+N/2)=fs/N*k;elsef_axis(k+1-N/2)=fs/N*(k-N);endend1、N30时,取N=201)N=20补零2*30clc;T=0.001;t=-0.2:T:0.2;f1=100;f2=120;x=cos(2*pi*f1*t)+cos(2*pi*f2*t);figure(1);subplot(211);plot(t,x);xlabel('t/s');title('连续信号及频谱图');gridon;omg1=f1;omg2=f2;X_freq=1/2*(impseq(omg1,-150,150)+impseq(-omg1,-150,150)+impseq(omg2,-150,150)+impseq(-omg2,-150,150));f_hz=-150:150;figure(1);subplot(212);plot(f_hz,X_freq);xlabel('f/Hz');ylabel('幅值');gridon;%采样信号的频谱fs=600;x2=0;x2=cos(2*pi*f1*(0:40)/fs)+cos(2*pi*f2*(0:40)/fs);N=20;L=20;%N表示采样点数,L表示进行傅立叶变换的点数x3=0;f_axis=0;%初始化工作x3=x2(1:N);x_pu=fft(x3);f_axis=k_to_fs(fs,L);%%%%%%%%%%%使横坐标k能用频率fs表示%%%%%也可以用如下更为简单的函数形式实现%f_axis=-fs/2+(0:L-1)*fs/l;figure(2);subplot(211);plot(f_axis,abs(fftshift(x_pu)));xlabel('f/Hz,N=20,没有补零');ylabel('幅值');gridon;holdon;stem(f_axis,abs(fftshift(x_pu)));holdoff;%采样信号补零后的频谱图L=20+2*30;x_pu=fft(x3,L);f_axis=k_to_fs(fs,L);figure(2);subplot(212);plot(f_axis,abs(fftshift(x_pu)));xlabel('f/Hz,N=20,补零2*30');ylabel('幅值');gridon;holdon;stem(f_axis,abs(fftshift(x_pu)));holdoff;2)N=20补零7*30更改部分如下:%采样信号补零后的频谱图L=20+7*30;x_pu=fft(x3,L);f_axis=k_to_fs(fs,L);figure(2);subplot(212);plot(f_axis,abs(fftshift(x_pu)));xlabel('f/Hz,N=20,补零7*30');ylabel('幅值');gridon;holdon;stem(f_axis,abs(fftshift(x_pu)));holdoff;3)N=20补零20*30更改部分如下:%采样信号补零后的频谱图L=20+20*30;x_pu=fft(x3,L);f_axis=k_to_fs(fs,L);figure(2);subplot(212);plot(f_axis,abs(fftshift(x_pu)));xlabel('f/Hz,N=20,补零20*30');ylabel('幅值');gridon;holdon;stem(f_axis,abs(fftshift(x_pu)));holdoff;2、N30时,取N=401)N=40补零2*30clc;T=0.001;t=-0.2:T:0.2;f1=100;f2=120;x=cos(2*pi*f1*t)+cos(2*pi*f2*t);figure(1);subplot(211);plot(t,x);xlabel('t/s');title('连续信号及频谱图');gridon;omg1=f1;omg2=f2;X_freq=1/2*(impseq(omg1,-150,150)+impseq(-omg1,-150,150)+impseq(omg2,-150,150)+impseq(-omg2,-150,150));f_hz=-150:150;figure(1);subplot(212);plot(f_hz,X_freq);xlabel('f/Hz');ylabel('幅值');gridon;%采样信号的频谱fs=600;x2=0;x2=cos(2*pi*f1*(0:40)/fs)+cos(2*pi*f2*(0:40)/fs);N=40;L=40;%N表示采样点数,L表示进行傅立叶变换的点数x3=0;f_axis=0;%初始化工作x3=x2(1:N);x_pu=fft(x3);f_axis=k_to_fs(fs,L);%%%%%%%%%%%使横坐标k能用频率fs表示%%%%%也可以用如下更为简单的函数形式实现%f_axis=-fs/2+(0:L-1)*fs/l;figure(2);subplot(211);plot(f_axis,abs(fftshift(x_pu)));xlabel('f/Hz,N=20,没有补零');ylabel('幅值');gridon;holdon;stem(f_axis,abs(fftshift(x_pu)));holdoff;%采样信号补零后的频谱图L=40+2*30;x_pu=fft(x3,L);f_axis=k_to_fs(fs,L);figure(2);subplot(212);plot(f_axis,abs(fftshift(x_pu)));xlabel('f/Hz,N=40,补零2*30');ylabel('幅值');gridon;holdon;stem(f_axis,abs(fftshift(x_pu)));holdoff;2)N=40补零7*30更改部分如下:%采样信号补零后的频谱图L=40+7*30;x_pu=fft(x3,L);f_axis=k_to_fs(fs,L);figure(2);subplot(212);plot(f_axis,abs(fftshift(x_pu)));xlabel('f/Hz,N=40,补零7*30');ylabel('幅值');gridon;holdon;stem(f_axis,abs(fftshift(x_pu)));holdoff;3)N=40补零20*30更改后程序如下:%采样信号补零后的频谱图L=40+20*30;x_pu=fft(x3,L);f_axis=k_to_fs(fs,L);figure(2);subplot(212);plot(f_axis,abs(fftshift(x_pu)));xlabel('f/Hz,N=40,补零20*30');ylabel('幅值');gridon;holdon;stem(f_axis,abs(fftshift(x_pu)));holdoff;