【发布时间】:2018-04-20 00:37:25
【问题描述】:
我正在尝试绘制我拥有的一组数据的 fft。这些数据形成了一个近乎完美的 sinc 函数。这是我试图绘制 fft 的数据: .
我知道 sinc 函数的 fft 应该看起来像一个阶跃函数。但是,我得到的结果远非如此。找到 fft 本身非常容易,但我认为我的错误是当我尝试计算频率轴时。我在网上找到了几种方法,但到目前为止我一直无法使其工作。这是我的代码:
sampleRate = (max(xdata) - min(xdata))/length(xdata);
sampleN = length(xdata);
y = fft(ydata, sampleN);
Y = y.*conj(y)/sampleN;
freq = (0:1:length(Y)-1)*sampleRate/sampleNumber;
plot(freq, Y)
我在网上找到了几乎所有这些内容,但我几乎一无所知(这可能是它不起作用的原因......)
放大我使用该代码得到的结果:
它现在似乎工作了!这是我减去平均值时得到的结果:
【问题讨论】:
-
好吧,首先,您绘制的是功率谱,而不是 FFT。另外,请在您的问题中包含您实际看到的内容。情节的屏幕截图会很有用。我们没有您的数据,因此无法重现您看到的内容。
-
感谢您的指定!我想我会读一些关于功率谱的书!我已编辑以包含使用此代码获得的情节。
-
尝试将轴的 'XLim' 属性设置为
[0,0.0002]或类似的值,以放大绘图的开头。另外,尝试将“YScale”属性设置为“log”。 -
使用“Xlim”可以清楚地表明问题不是我想的那样:Y 看起来根本不像一个台阶。我更新了运行代码时得到的图片。
-
@LudovicG 当答案正确时,总是点击它的复选标记,以便其他人可以看到它的好答案......同样在这样做的过程中,你的 OP 也会获得一些声誉积分;-)。 .. 欢迎来到 SO