matlab傅里叶变换有数据如下= 5 32 38 -33 -19 -10 1 -8 -20 10 -1 4 11 -1 -7 -2>> Fft(x)ans =0 62.0738 +33.1415i 编程FunctionN=length(s);n=(0:N-1);for k=0:N-1X(k+1)=x*exp(-j*2*pi*k*n/N)';end>> dft(x)ans =0 62.0738 -33.1415i 为什么在虚
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/28 13:52:30
matlab傅里叶变换有数据如下= 5 32 38 -33 -19 -10 1 -8 -20 10 -1 4 11 -1 -7 -2>> Fft(x)ans =0 62.0738 +33.1415i 编程FunctionN=length(s);n=(0:N-1);for k=0:N-1X(k+1)=x*exp(-j*2*pi*k*n/N)';end>> dft(x)ans =0 62.0738 -33.1415i 为什么在虚
matlab傅里叶变换
有数据如下
= 5 32 38 -33 -19 -10 1 -8 -20 10 -1 4 11 -1 -7 -2
>> Fft(x)
ans =
0 62.0738 +33.1415i
编程
Function
N=length(s);
n=(0:N-1);
for k=0:N-1
X(k+1)=x*exp(-j*2*pi*k*n/N)';
end
>> dft(x)
ans =
0 62.0738 -33.1415i
为什么在虚部差一个负号?
如果把dft函数中的X(k+1)=x*exp(-j*2*pi*k*n/N)';改为X(k+1)=x*exp(-j*2*pi*k*n/N)';,结果与matlab中内置函数计算结果相同,但是这明显违背了傅里叶变换的公式,
matlab傅里叶变换有数据如下= 5 32 38 -33 -19 -10 1 -8 -20 10 -1 4 11 -1 -7 -2>> Fft(x)ans =0 62.0738 +33.1415i 编程FunctionN=length(s);n=(0:N-1);for k=0:N-1X(k+1)=x*exp(-j*2*pi*k*n/N)';end>> dft(x)ans =0 62.0738 -33.1415i 为什么在虚
很遗憾,都不是.(我不会叫你去看书的,^_^ 因为你看了我的回答后会自己会去看书的...)
FFT是一种快速算法,它是DFT(离散傅里叶变换)的快速算法而已.它并不是一种严格数学上的变换.(但是它有严格的数学定义和物理含义,这一点希望你能明白)你应当知道,用传统的傅里叶变换,由于其频域或者时域是连续的,用计算机是实现不了的.DFT的提出就是为了解决这个问题.(注意了,DFT,是工程上为了能够让计算机计算傅里叶变换而弄出一种概念,它是人为规定了一些内容下所导出的“傅里叶变换”,这种变换物理含义有,而且计算机也能接受)
你的意思是DTFT(离散时间傅里叶变换),它主要是用于离散时间序列的频域分析,它才是真正数学严格意义上的傅里叶变换!虽然DTFT有着很高的理论价值,但是在实际应用中不便直接采纳.(呐,就如我上面说的那样,不适合计算机运算)
DFT处理结果会有一些偏差,但是由于它具有一种快速算法——FFT,所以在各类数字信号处理应用中广泛采用.
——纯手工打出来的,最后建议你先弄明白这几个概念:DFS、DTFT、DFT,FFT.(这是基本功~~~~)
-----------
64位傅里叶变换是指在进行FFT运算时,将序列先扩展(一般是填零)到64位后再进行FFT运算,一般扩展都是2的幂次数,这是FFT算法所提倡的.