[英]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.