![]() |
[求助]如何在MATLAB中验证函数经fouier变换前后能量是否守恒
我们知道,fourier变换属于幺正变换,因此其变换前后,空域(或时域)中的能量等于其相应频域中的能量。
以下一段小程序用于简单验证函数在fourier变换前后的能量关系,结果发现fourier变换前后能量不相等,请大侠们指正错误所在: %%%%%%%%% x=linspace(-10,10); y=x.^2; %原函数 yabs=abs(y); %取模 Z=fft(y); Z=fftshift(Z)./length(Z); %移动函数使能量集中在中央 Zabs=abs(Z); d1=abs(yabs(2)-yabs(1)); %变换前函数的间隔 d2=abs(Zabs(2)-Zabs(1)); %变换后函数的间隔 E1=sum(yabs.^2.*d1) %变换前函数的总能量 E2=sum(Zabs.^2.*d2) %变换后函数的总能量 得到: E1 = 8.3245e+005 E2 = 1.3354 补充: 1.程序里认为能量的表达是函数的模的平方的积分 2.认为一维函数的能量是离散后的函数值与相应采样距离的内积之和 3.fft变换时,length(Z)的使用是否正确? 4.变换前的函数自变量x为【-10,10】,而不是【-inf,inf】. 请帮忙指出程序或补充说明中的错误,谢谢,万分感谢!!! |
所有时间均为北京时间。现在的时间是 09:58。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.