↑ 收起筛选 ↑
mAtlAB如何做FFt和iFFt
2020-06-27

有个powergui模块可以用,不过要在scope中的parameters中将data history中的save data to workplace选中才行

先将要做Ifft的数据取共轭,然后fft,结果再取共轭后处以N,结果就是ifft的结果.不过和直接ifft算法相比有精度上的误差.

fftshift就是对换数据的左右两边 比如 x=[1 2 3 4] fftshift(x) ->[3 4 1 2] ifftshift是为了当数据不是偶数长度时加出来的一个函数 x=[1 2 3 4 5] ifftshift(x) ->[4 5 3 1 2]

Y=ifft(SLM,[],1)和Y=ifft(SLM,128)才是一样的.第一种用法:ifft(SLM,[],dim)中的dim表示维度,1表示列,2表示行.第二个参数为[]表示点数与原矩阵每列元素数.如果是 ifft(SLM,N,1) 则表示列ifft的点数为N.第二种用法ifft(SLM,128)对于矩阵,仅对列进行ifft

Matlab中FFT有1D和2D的,FFT得到的是信号的频谱即t-》f 如 clear%编写骆遥 fs=1000 t=0:1/fs:0.6; f1=100; f2=300; x=sin(2*pi*f1*t)+sin(2*pi*f2*t); subplot(711) plot(x); title('f1(100Hz)\f2(300Hz)的正弦信号,初相0') xlabel('序列(n)') grid on

不是,dim表示维度.例如当X是一个二维矩阵时,dim=1时表示的是行ifft,dim=2是表示列的ifft.为了dim与前面的ifft(X,n)中的n不混淆,就在中间加了一个[],必须要加上这个东东.

原发布者:zhangtao8008 -10.7782+6.2929i 0-5.0000i 4.7782-7.7071i 5.0000 4.7782+7.7071i 0+5.0000i-10.7782-6.2929iXk与xn的维数相同,共有8个元素.Xk的第一个数对应于直流分量,即频率值为0.(2)做FFT分析时,幅值大小与FFT选择

A*B = ifft(fft(A)*fft(B));其中 fft(A) 与 fft(B)的长度要整成一样,也就是 fft(A,length1),fft(B,length2), length1 = length2

先将要做Ifft的数据取共轭,然后fft,结果再取共轭后处以N,结果就是ifft的结果.不过和直接ifft算法相比有精度上的误差.

延伸阅读: