概述
语法:
-
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)根据维度进行傅里叶变换。
说明:
- fft之后信号幅度值变大,要得到真实幅度值大小,要将变换后结果除以N再乘以2(直流即零频率处除以N),除以N得到双边频谱,乘以2得到单边频谱。如果原始信号就是复数信号,则fft得到的就是单边频谱不用乘以2。
- 对fs采样频率信号,fft之后最高频率为采样频率一半,fft之后的值关于半采样率共轭对称。
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sampling period
L = 1500; % Length of signal
t = (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点FFT
Y = 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点FFT
Y = 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)|')
最后
以上就是敏感店员为你收集整理的MATLAB —— 绘制频谱图的全部内容,希望文章能够帮你解决MATLAB —— 绘制频谱图所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复