簡體   English   中英

如何在Matlab中向量化此for循環?

[英]How to vectorize this for-loop in Matlab?

這也許是一個簡單的問題。 我有一個向量和一個矩陣,並希望基於某種操作來制作一個新的矩陣。 我使用for循環構造了新矩陣,我想知道如何用可能更快的Vector運算符編寫它。

d=[n x 1];
t= [n x n];

我想要的新增量矩陣是[nxn],如下所示:

for i=1:39
    for j=1:39
  Delta(i,j)=d(i)-d(j)-t(i,j);
    end
end

結果

[d (1) - d (1) - t( 1 ,1),d (1) - d (2) - t( 1 ,2), ...   d(1) - d (39) -  t( 1 ,39)
 d (2) - d (1) - t( 2 ,1),d (2) - d (2) - t( 2 ,2), .... ,d (2) - d (39) - t( 2 ,39)  
.                                                                     
.
.
d (38) - d (1) - t( 38 ,1),d (38) - d (2) - t( 38 ,2), ... , d(38) -d (39)-t(38,39)  
d (39) - d (1) - t( 39 ,1),d (39) - d (2) - t( 39 ,2), ...,  d(39)- d (39)- t(39 ,39)]

您可以使用高效的bsxfun

Delta = bsxfun(@minus,d,d.') - t

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM