matlab绘制频谱图代码_Matlab的FFT绘制频谱图

  1. 直接使用fft()绘制
% 两个频率分别为15HZ 和 20HZ 的正弦信号
Fs=50;%采样频率50Hz
f1=15;
f2=20;
t = 0:1/Fs:10-1/Fs % 0-9.98s 一共500个点
x = sin(2*pi*f1*t) + sin(2*pi*f2*t);%原始信号
N=length(x)% N=500
figure(1);
plot(t,x);
title('Original Signal');
xlabel('Time'); 
ylabel('Amplitude'); 
%直接使用fft
figure(2);
y0 = abs(fft(x)); %快速傅里叶变换的幅值
%将横坐标转化,显示为频率f= n*(fs/N)
f = (0:N-1)*Fs/N
plot(f,y0);
xlabel('Frequency'); 
ylabel('Amplitude'); 
  • 将时间横坐标转换为频率横坐标:f = (0:N-1)*Fs/N

334af7ac8b5e70fc106c65a387cbc8f5.png

00ffc977adb65b71212d8f4b7266e6e3.png

2. fftshift() 调整0频位置

%fftshift()调整0频位置
figure(3);
f1=(0:N-1)*Fs/N-Fs/2 ;%频率范围-25Hz-25Hz, 500个采样点
y1=abs(fftshift(fft(x)));
plot(f1,y1);
xlabel('Frequency'); 
ylabel('Amplitude'); 

1362468c754ef18fe11863aa8d72b9d4.png

3. fs=50Hz,Nyquist频率为fs/2=25Hz。整个频谱图是以Nyquist频率为对称轴的。并且可以明显识别出信号中含有两种频率成分:15Hz和20Hz。由此可以知道FFT变换数据的对称性。因此用FFT对信号做谱分析,只需考察0~Nyquist频率范围内的幅频特性。幅值修正:y3=2*y2(N/2:N-1)/N

figure(4)
f3=(N/2:N-1)*Fs/N-Fs/2 ;%频率范围0Hz-25Hz
y2=abs(fftshift(fft(x)));
y3=2*y2(N/2:N-1)/N;%幅值修正得到真实幅值
plot(f3,y3);
xlabel('Frequency'); 
ylabel('Amplitude');

b5a8dd6c7fc5efa1bb5908e9261e5367.png
  • 38
    点赞
  • 184
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值