zmlad
2013-12-16, 11:24
各位大神,小生有礼了。因为本人初接触matlab,所以也不知道该为本帖定什么主题,如有失误,请大神原谅。
本人最近编了一个小算法,可以计算一个二维面上的物质属性,最后想利用surf函数将这个二维面上的计算出的物性展示出来,但是因为不同的外界因素对其影响位置不太一样,每个影响因素对应了40000个不同的点,有上百个影响因素,最后需要将因素叠加求出结果,但是发现自己编的程序计算太慢,想请教各位大神有没有更好的办法解决这个问题。
我自己编得数据处理程序如下所示:
for k=1:n%n个影响因素
for i=1:200%利用meshgrid生成的200*200个平面点
for j=1:200
if (j,i)~=0%physical为已计算出的某点物性
[A,k]=min((flat_x0(:)-flat_x(i,j)).^2+(flat_y0(:)-flat_y(i,j)).^2);
%flat_x0,flat_y0(:)为刚刚计算出的200*200个影响点,flat_x,flat_y为需要将数据重新统计投入的300*300的网格点
%利用min函数返回了每个数据点最佳的统计点
[url=]physical (]physical0[/url) (k)=0 (k)+[url=]physical (]physical[/url) (i,j);
%将物性大小加到改统计点上
end
end
end
end
surf(flat_x,flat_y,physical)
这个程序每次大循环都需要运行40000次min函数,计算效率很低,请问有什么办法解决这个问题,各位大神,求教啊
本人最近编了一个小算法,可以计算一个二维面上的物质属性,最后想利用surf函数将这个二维面上的计算出的物性展示出来,但是因为不同的外界因素对其影响位置不太一样,每个影响因素对应了40000个不同的点,有上百个影响因素,最后需要将因素叠加求出结果,但是发现自己编的程序计算太慢,想请教各位大神有没有更好的办法解决这个问题。
我自己编得数据处理程序如下所示:
for k=1:n%n个影响因素
for i=1:200%利用meshgrid生成的200*200个平面点
for j=1:200
if (j,i)~=0%physical为已计算出的某点物性
[A,k]=min((flat_x0(:)-flat_x(i,j)).^2+(flat_y0(:)-flat_y(i,j)).^2);
%flat_x0,flat_y0(:)为刚刚计算出的200*200个影响点,flat_x,flat_y为需要将数据重新统计投入的300*300的网格点
%利用min函数返回了每个数据点最佳的统计点
[url=]physical (]physical0[/url) (k)=0 (k)+[url=]physical (]physical[/url) (i,j);
%将物性大小加到改统计点上
end
end
end
end
surf(flat_x,flat_y,physical)
这个程序每次大循环都需要运行40000次min函数,计算效率很低,请问有什么办法解决这个问题,各位大神,求教啊