作者Anny19 (安妮)
看板MATLAB
標題[討論] 不使用for迴圈的陣列運算
時間Sat Jun 1 01:19:49 2013
一維陣列 X/Y 為100個點的位置 x/y 分量
X=[x1 x2 x3....x100];
Y=[y1 y2 y3....y100];
有些情況下 X 和Y會跑出多餘的點
所以我想計算出每個點與剩餘點的距離
目的是想找出相鄰太近的質點,使其合併
我有寫出來,但總覺得用的方法太笨
求高手指點
我的程式碼:
for n=1:100
Xtemp=X(n);
Ytemp=Y(n);
distance=(Xtemp-X).^2+(Ytemp-Y).^2;
distance=sqrt(distance);
ind=find(distance~=0 & distance<20);
if isempty(ind)==0
X(n)=(X(n)+sum(X(ind)))/(length(ind)+1);
X(ind)=[];
Y(ind)=[];
end
end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.34.54.3
※ 編輯: Anny19 來自: 1.34.54.3 (06/01 01:27)
1F:→ iHakka:可使用parfor平行化,sqrt那行可以省掉不用算省點時間 06/03 23:16