gpt4 book ai didi

fft - 使用 GNU Octave FFT 函数

转载 作者:行者123 更新时间:2023-12-04 14:52:32 27 4
gpt4 key购买 nike

我正在使用 Octave 的 fft 函数,但我真的不知道如何缩放它们的输出:我使用以下(非常短的)代码来近似函数:

function y = f(x)
y = x .^ 2;
endfunction;

X=[-4096:4095]/64;
Y = f(X);
# plot(X, Y);

F = fft(Y);
S = [0:2047]/2048;

function points = approximate(input, count)
size = size(input)(2);
fourier = [fft(input)(1:count) zeros(1, size-count)];
points = ifft(fourier);
endfunction;

Y = f(X); plot(X, Y, X, approximate(Y, 10));

基本上,它所做的是取一个函数,计算一个区间的图像,fft-it,然后保留一些谐波,然后对结果进行ifft。然而我得到了一个垂直压缩的图(输出的垂直比例是错误的)。有任何想法吗?

最佳答案

您正在丢弃转换的后半部分。对于实值输入,变换是厄米对称的,您必须保留这些线。尝试这个:

function points = approximate(inp, count)
fourier = fft(inp);
fourier((count+1):(length(fourier)-count+1)) = 0;
points = real(ifft(fourier)); %# max(imag(ifft(fourier))) should be around eps(real(...))
endfunction;

由于数值计算误差,逆变换总会有一些很小的虚部,因此 real萃取。

请注意 inputsize是 Octave 中的关键字;用你自己的变量来破坏它们是一个很好的方法,可以在路上得到非常奇怪的错误!

关于fft - 使用 GNU Octave FFT 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com