研发埠
标题:
Matlab conv计算卷积结果和按定义计算得到的结果不同为什么?
[打印本页]
作者:
欧阳丹
时间:
2013-5-28 13:16
标题:
Matlab conv计算卷积结果和按定义计算得到的结果不同为什么?
[img=,][/img]积分式如图,代码如下( table变量是离散的抽样点坐标,输入u和v相同,U是按定义计算的结果,V是用conv计算的结果,其他的变量和上式对应)function [U,V] = 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得到的结果在迭代多次后和按定义计算的结果相比就面目全非了。
欢迎光临 研发埠 (http://bbs.yanfabu.com/)
Powered by Discuz! X3.2