如何在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】.
请帮忙指出程序或补充说明中的错误,谢谢,万分感谢!!!