簡體   English   中英

Matlab循環內循環

[英]Matlab loop inside loop

我有一個Nx2矩陣,說D(k1,k2)。我必須比較每行的k1和k2並進行相應的切換。 還有另一個向量d(i),它具有M個值。 如果k1和k2是d(i)的任意一個值,我必須進行切換。 if D(k1,1)== d(i)&& D(k1,2)== d(i)....是否有任何方法可以比較if循環中的所有d(i)元素而不使用for為我循環?

您可以使用ismember函數檢查向量d是否包含某些值:

D_in_d = ismember(D,d);

然后您仍然必須循環執行特定行的翻轉操作:

for i=1:size(D,1)
    if all(D_in_d(i,:))
        D(i,:)=fliplr(D(i,:));
    end
end

使用matlab的vectorizion相對容易實現,完全沒有任何循環。

%交換邏輯向量(如果需要交換該行,則為1,否則為0)

swap_logical = ( ismember(D(:,1),d) | ismember(D(:,2),d) );

%基於交換布爾值的向量化交換。

Dnew = swap_logical.*D(:,2:-1:1) + ~swap_logical.*D;

暫無
暫無

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

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