MATLAB使用手记(二):FFT示例

代码

%采样参数
T=10;                 %采样时间
N=100;               %采样次数
F_sample=N/T;         %采样频率

%被采样信号
pi=3.14;
f = 1;         			% 频率
t = linspace(0,T,N);	% 采样点个数
x_raw = cos(2*pi*f*t)+cos(3*2*pi*f*t); %假定信号是标准余弦函数

%绘制原始数据波形
subplot(2,2,1);  
plot(t,x_raw);      		
title('(a)原始数据的时域波形图') 
xlabel('时间/S');    
ylabel(' 幅度/V ');

%对原始数据进FFT
Xn = fft(x_raw);         		
F_f = (0:N-1)*F_sample/N;

%绘制直接FFT后的频谱图
subplot(2,2,2);  
plot(F_f,abs(Xn));
title('(b)fft后直接输出的频谱图');  
xlabel('频率/Hz');    
ylabel(' 幅度/V ');

%FFT后的数据进行平移
Xn_s = fftshift(Xn);
fshift = (-N/2:N/2-1)*(F_sample/N);

%绘制频移后正确的频谱图
subplot(2,2,3);  
plot(fshift,abs(Xn_s));
title('(c)shift过的频谱图');  
xlabel('频率/Hz');    
ylabel(' 幅度/V ');

%FFT的的真实的频谱幅值
Xn_r=2*abs(Xn(1:N/2+1))/N;
realf=(0:N/2)*(F_sample/N);

%绘制原始信号的真实频谱
subplot(2,2,4);  
plot(realf,Xn_r);
title('(d)真实的频谱图');  
xlabel('频率/Hz');    
ylabel(' 幅度/V ');



结果

image

posted on 2022-11-14 17:54  不回本不改名  阅读(395)  评论(0)    收藏  举报

导航