【问题标题】:Difficulty plotting correct IFFT of 2D function from given data难以根据给定数据绘制二维函数的正确 IFFT
【发布时间】:2015-10-18 22:42:34
【问题描述】:

我正在尝试将二维数据集读入矩阵,绘制矩阵,以及绘制矩阵的 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 vs 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

有谁知道为什么读取数据并绘制它与读取每一列并绘制它会导致不同的图表不同?另外,谁能帮我正确获取二维数据的IFFT?

此处为 10cm.txt 数据文件:http://pastebin.com/0t0TwVvC

【问题讨论】:

  • 第二行的错字是弗洛伊德的失误吗?
  • 哪个错字?在分配变量 A 和 B 的行中?
  • 数据性。无论如何,两个代码 sn-ps 看起来很相似。我的猜测,尝试转置矩阵,plot(transpose(waves))
  • 哈哈没抓到那个!我已经尝试过了,但它的绘图不正确。它为图形和许多线条添加颜色
  • 你能把你的数据上传到某个地方吗?

标签: matlab fft ifft


【解决方案1】:

根据 MA​​TLAB 文档,如果您将 plot(Y)Y 设为矩阵,则 plot 函数将绘制 Y 的列与它们的行号。 x 轴刻度范围从 1 到 Y 中的行数。

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

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

我是否还建议为 python 提供一个免费且 IMO 更好的 numpy

【讨论】:

  • 现在更有意义了,感谢您的澄清! python 会比 matlab 更好地处理傅立叶变换吗?
  • python 将处理一切都一样好 + 更多的库 + 它是免费的。查看matplotlib.org/gallery.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
相关资源
最近更新 更多