我想用matlab上的fft计算信号的傅立叶级数。我遇到了以下意想不到的问题。只是一个例子
如果我定义了一个网格,然后将fft计算为:
m=59;
x=交易(1*(0:m-1)/m);
y=3*cos(2*pi*x);
yk=fftshift(fft2(y)/(m));
它给出了预期的精确分析值:yk(29)=1.5;yk(31)=1.5;其他值为零

但如果我将网格定义为,并重复FFT计算:
x=0:1/(m-1):1;
y=3*cos(2*pi*x);
yk=fftshift(fft2(y)/(m));
把YK的价值观搞砸了

这是一个恼人的问题,因为我必须像第二种方法一样分析许多信号数据,这样YK的值将是错误的。有办法解决这个问题吗?向FFT函数说明信号采样方式的选项。无法以正确的方式对数据重新取样。
避免光谱泄漏的主要原因是我对这些傅立叶项分别进行了实部和imag部的进一步操作。而光谱泄漏正在破坏最终的结果。
M=59;
x= deal(1*(0:M-1)/M);
y=3*cos(2*pi*x);
Yk=fftshift(fft2(y)/(M));
它给出了预期的精确分析值:yk(29)=1.5;yk(31)=1.5;其他值为零

但如果我将网格定义为,并重复FFT计算:
x=0:1/(M-1):1;
y=3*cos(2*pi*x);
Yk=fftshift(fft2(y)/(M));
把YK的价值观搞砸了

这是一个恼人的问题,因为我必须像第二种方法一样分析许多信号数据,这样YK的值将是错误的。有办法解决这个问题吗?向FFT函数说明信号采样方式的选项。无法以正确的方式对数据重新取样。
避免光谱泄漏的主要原因是我对这些傅立叶项分别进行了实部和imag部的进一步操作。而光谱泄漏正在破坏最终的结果。