PDA

查看完整版本 : [MATLAB基础] 请问一个二维DTFT符号运算的问题


ppyy
2010-05-04, 21:00
请问一个二维DTFT符号运算的问题
本人在做信号处理的实验中自已写了一个DTFT的运算Script,先用符号运算得到对应Omiga1 和 Omiga2的一个符号式,再
用meshgrid 得到坐标和用 eval计算各个点的值,最后再画图surf,

注明:如果直接用meshgrid 再用 surf 画图的话,只有一个Omiga有效,另一个总是不被计算,不知道为什么?
所以加了两重循环体来计算各个点,下策。

但是这样的话这个Script运行的时间非常长,大概两个小时左右,很郁闷。

本人的机子:1.83G 双核 1G内存 Matlab 2007a 运行时 CPU在50%左右

是否有什么优化的方法,请指教。非常感谢,下面是一些代码参考:

syms omgxsym1 omgxsym2
dtft2Dspeget=dtft2DFliter(data,'pars',omgxsym1,omgxsym2)
I=j;
datadtft2Dspeget=zeros(51);
for omgxsym1=0:0.01:0.5
for omgxsym2=0:0.01:0.5
datadtft2Dspeget(floor(omgxsym1/0.01)+1,floor(omgxsym2/0.01)+1)=eval(abs(dtft2Dspeget));
end
end
figure(9)
[omgxsym1,omgxsym2]=meshgrid(0:0.01:0.5, 0:0.01:0.5);
surf(omgxsym1,omgxsym2,datadtft2Dspeget),shading flat