难以从给定数据绘制正确的2D功能IFFT

时间:2015-10-18 22:42:35

标签: matlab fft ifft

我试图将2D数据集读入矩阵,绘制矩阵,以及绘制矩阵的IFFT。数据为128x2数据集,第一列(A)中的频率与第二列中的幅度(B)

不幸的是,绘制数据矩阵并没有绘制正确的波形。此外,IFFT似乎也是不正确的。

waves = csvread('10cm.txt');

A = waves(:,1);
B = abs(waves(:,2));

Matrix = [A B];

waves_transform = abs(ifft2(waves));

figure, plot(waves);
figure, plot(waves_transform)

当我读入数据的每一列并绘制A对B时,数据的波形是正确的,但数据的ifft2不正确。我需要正确地对我读过的二维数据进行逆傅里叶变换。

waves = csvread('10cm.txt');

A = waves(:,1);
B = abs(waves(:,2));

Matrix = [A B];

waves_transform = abs(ifft2(Matrix));

figure, plot(A,B);
figure, plot(waves_transform)

waves & waves_transform

有谁知道为什么读取数据并绘制它与读取每个列并绘制不同图表的结果不同?另外,任何人都可以帮我正确地获取2D数据的IFFT吗?

10cm.txt数据文件在这里:http://pastebin.com/0t0TwVvC

1 个答案:

答案 0 :(得分:0)

根据MATLAB文档,如果plot(Y)Y是矩阵,则绘图函数会绘制Y列与行号的对比。 x轴刻度的范围从1到Y中的行数。

所以,在你的情况下你必须这样做:

plot(waves(:,1), waves(:,2))

我可能还建议为python提供免费的IMO更好的numpy