Re: [問題] 想計算距離的疑問已回收

看板MATLAB作者 (HAPPY)時間17年前 (2008/11/19 20:14), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《Luke68 (該開始衝了~)》之銘言: : 想請問各位高手, : 目前有矩陣A[n,k]、矩陣B[1,k] : 我想計算矩陣A中的每個row跟矩陣B的距離, : 我目前的寫法為: : for i=1:n : dis(i)=norm(A(i,:)-B(1,:),2); : end : 請問有其他寫法, : 可以使程式的執行速度變快嗎? : 煩請大家指點迷津, : 謝謝。 推文版本 banco:Dis = sum( (A-ones(n,1)*B).^2 , 2 ).^0.5; 回文版本 C=repmat(B,n,1); Dist=sqrt(sum((A-C).^2,2)); done! 秒數比較 size在小時 推文勝出 大時 回文勝出 差別 n,k在1~200內用推文版的就可以了 n=1000; k=900; Elapsed time is 0.074910 seconds. Elapsed time is 0.000797 seconds. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.63.252 ※ 編輯: e0101010 來自: 122.116.63.252 (11/19 20:23)

11/19 20:30, , 1F
謝謝指點,小弟銘記於心
11/19 20:30, 1F

11/20 06:18, , 2F
我也在想ones和repmat哪個快...XD
11/20 06:18, 2F

11/20 13:17, , 3F
把 ones(n,1)*B 拿到外面先算,不知會不會變快 :P
11/20 13:17, 3F

11/20 13:24, , 4F
先算?先令C=ones(n,1)*B再sqrt(sum((A-C).^2,2));嗎?
11/20 13:24, 4F

11/20 13:24, , 5F
嗯....直覺上沒差...不過還是可以profile一下
11/20 13:24, 5F
文章代碼(AID): #1990Cirh (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1990Cirh (MATLAB)