MATLAB —— 绘制频谱图
发布日期:2021-07-01 04:02:53 浏览次数:2 分类:技术文章

本文共 1210 字,大约阅读时间需要 4 分钟。

语法:

  • Y=fft(X)

  • Y=fft(X,n)

  • Y=fft(X,n,dim)

  • Y=fft(X)用快速傅里叶转换FFT算法计算离散傅里叶变换DFT。
    • 如果X是向量,那么fft(X)返回向量的傅里叶变换。
    • 如果X是矩阵,那么fft(X)返回X中每一列向量的傅里叶变换。
  • Y=fft(X,n)指定进行n点DFT,如果X长度小于n则补零,如果X长度大于n则截断为n。
  • Y=fft(X,n,dim)根据维度进行傅里叶变换。

说明:

  1. fft之后信号幅度值变大,要得到真实幅度值大小,要将变换后结果除以N再乘以2(直流即零频率处除以N),除以N得到双边频谱,乘以2得到单边频谱。如果原始信号就是复数信号,则fft得到的就是单边频谱不用乘以2。
  2. 对fs采样频率信号,fft之后最高频率为采样频率一半,fft之后的值关于半采样率共轭对称。
Fs = 1000;            % Sampling frequency                    T = 1/Fs;             % Sampling period       L = 1500;             % Length of signalt = (0:L-1)*T;        % Time vector%50Hz和120Hz频率信号S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);%添加随机噪声X = S + 2*randn(size(t));figure;plot(1000*t(1:50),X(1:50))title('Signal Corrupted with Zero-Mean Random Noise')xlabel('t (milliseconds)')ylabel('X(t)')%加噪声后信号X长度1500,进行1500点FFTY = fft(X);%为何除以信号长度L?P2 = abs(Y/L);P1 = P2(1:L/2+1);%单边谱P1(2:end-1) = 2*P1(2:end-1);%由于P1(1)是直流吧f = Fs*(0:(L/2))/L;%采样频率Fs,因此只看fs/2内的信号figure;plot(f,P1) title('Single-Sided Amplitude Spectrum of X(t)')xlabel('f (Hz)')ylabel('|P1(f)|')%原始信号S长度1500,进行1500点FFTY = fft(S);P2 = abs(Y/L);P1 = P2(1:L/2+1);P1(2:end-1) = 2*P1(2:end-1);figure;plot(f,P1) title('Single-Sided Amplitude Spectrum of S(t)')xlabel('f (Hz)')ylabel('|P1(f)|')

转载地址:https://miracle.blog.csdn.net/article/details/109744848 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:函数与矩阵的卷积运算
下一篇:MATLAB求系统响应(单位脉冲、单位阶跃)及时域函数

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月09日 11时45分37秒