欧阳丹 发表于 2013-5-28 13:16:10

Matlab conv计算卷积结果和按定义计算得到的结果不同为什么?

积分式如图,代码如下( table变量是离散的抽样点坐标,输入u和v相同,U是按定义计算的结果,V是用conv计算的结果,其他的变量和上式对应)function = calc( lambda,L,u,v,N,table )U=u;temp=u;k=2*pi/lambda;for x=1:N    for t=1:N      temp(t)=exp(-1i*k*((table(x)-table(t))^2)/(2*L))*u(t);    end    U(x)=trapz(table,temp);endh=exp(-1i*k*(table.^2)/(2*L));V=conv(v,h,'same');U=sqrt(1i/(lambda*L)*exp(-1i*L*k))*U;V=sqrt(1i/(lambda*L)*exp(-1i*L*k))*V;U=U/max(abs(U));V=V/max(abs(V));cla;hold on;plot(table,abs(U));plot(table,abs(V),'r');end得出的结果发现按定义式得到的结果U和conv函数得到的结果V有很大的不同请问这是为什么,有什么方法能使得结果更接近吗?因为这个函数要被迭代调用很多次,用conv得到的结果在迭代多次后和按定义计算的结果相比就面目全非了。
页: [1]
查看完整版本: Matlab conv计算卷积结果和按定义计算得到的结果不同为什么?