失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Matlab快速傅里叶变换

Matlab快速傅里叶变换

时间:2023-07-19 19:39:01

相关推荐

Matlab快速傅里叶变换

Matlab快速傅里叶变换

1.0什么是傅里叶变换

傅里叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合

这是一个博主写到对于傅里叶变换的理解

傅里叶变换是什么?一看就懂,写的超级棒!

2.0了解fft函数的使用方法

在命令行中输入

>> help fft

实例工程

使用傅里叶变换求噪声中隐藏的信号的频率分量。

%指定信号的参数,采样频率为 1 kHz,信号持续时间为 1.5 秒Fs = 1000; %设置采样频率 1000khzT = 1/Fs; %计算采样周期L = 1500; %信号长度,持续时间t = (0:L-1)*T; %采样时间点(us级) %构造一个信号,其中包含幅值为 0.7 的 50 Hz 正弦量和幅值为 2 的 150 Hz 正弦量。S = 0.7*sin(2*pi*50*t) + 2*sin(2*pi*150*t);%用噪声扰乱该信号。X = S + randn(size(t));%在时域中绘制含噪信号plot(1000*t(1:50),X(1:50))title('带噪声信号')xlabel('t (毫秒)')ylabel('X(t)')%计算信号的傅里叶变换Y = fft(X);%计算双侧频谱 P2。然后基于 P2 和偶数信号长度 L 计算单侧频谱 P1。P2 = abs(Y)/(L/2);P1 = P2(1:L/2+1);P1(2:end-1) = P1(2:end-1);%定义频域 f 并绘制单侧幅值频谱 P1。与预期相符,由于增加了噪声,幅值并不精确等于 0.7 和 1。% 一般情况下,较长的信号会产生更好的频率近似值。f = Fs*(0:(L/2))/L;plot(f,P1) title('Single-Sided Amplitude Spectrum of X(t)')xlabel('f (Hz)')ylabel('|P1(f)|')

关于计算双侧频谱和单双频谱的转换

%计算信号的傅里叶变换Y = fft(X);

直接画出来的图片是复数画所得到,我们需要求模长;

P2 = abs(Y)/(L/2);P1 = P2(1:L/2+1);P1(2:end-1) = P1(2:end-1);

未归一化处理

abs()函数计算复数的模长,同时要进行归一化处理:1.0: 左侧第一个竖线的纵坐标值,是 从原始信号中提取出来的0Hz对应的信号强度(信号振幅),又称 直流分量。它对应的信号振幅为 当前值/FFT的采样点数N。2.0 直流分量以外的分量所对应的信号振幅为 当前值/(采样点数N/2)。即 P2 = abs(Y)/(L/2);由于我们采样点设置是偶数点,所以由于对称性,只取一半区间(单边频谱)

最后变换效果图:

在50hz和150hz时候频谱和我们设置的相差不大!!

如果觉得《Matlab快速傅里叶变换》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。