[討論] 不使用for迴圈的陣列運算

看板MATLAB作者 (安妮)時間11年前 (2013/06/01 01:19), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/2 (看更多)
一維陣列 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)

06/03 23:16, , 1F
可使用parfor平行化,sqrt那行可以省掉不用算省點時間
06/03 23:16, 1F
文章代碼(AID): #1HgDkuuH (MATLAB)
文章代碼(AID): #1HgDkuuH (MATLAB)