re-us 发表于 2010-6-18 05:03

如何提高运行速度

数组A(x,y)是空间中的任意点。数组B包含有200000个空间的点,每个点的坐标用x1和y1表示,在每个点上有一个值z1。目的是:找出数组B中距离A (x,y)最近的9个点,然后求出这9个点的平均mean(z1(1:9))。

更清楚一点:比如A中的一个点是:(x0,y0),目的就是求出B中距离(x0,y0)最近的9个点,然后求出这9个点的z的平均值。
用循环很容易实现,如果不用循环如何,或者如何提高循环的速度。谢谢

clc; clear; tic
x=randn(1,1000); y=randn(1,1000);
x1=randn(1,200000); y1=randn(1,200000);
z1=randn(1,200000); z2=zeros(1,1000);
for i=1:1000   
    dis=(x(i)-x1).^2+(y(i)-y1).^2;
    =sort(dis);
    z2(i)=mean(z1(ix(1:9)));
end
toc

[ 本帖最后由 ChaChing 于 2010-6-26 23:21 编辑 ]
页: [1]
查看完整版本: 如何提高运行速度