0
我有這樣一個矩陣:如何用Matlab中的零替換一個特定值的列?
A=
1 2 7 4
3 2 8 5
2 2 9 6
,並希望只有2對零柱和得到的東西,如:
A=
1 0 7 4
3 0 8 5
2 0 9 6
是否有這樣做沒有兩個for循環中的任何巧妙的方式?所有的幫助非常感謝。
謝謝
我有這樣一個矩陣:如何用Matlab中的零替換一個特定值的列?
A=
1 2 7 4
3 2 8 5
2 2 9 6
,並希望只有2對零柱和得到的東西,如:
A=
1 0 7 4
3 0 8 5
2 0 9 6
是否有這樣做沒有兩個for循環中的任何巧妙的方式?所有的幫助非常感謝。
謝謝
您可以使用all
找出所有2的
all2 = all(A == 2, 1); % check along first dim
A(:,all2) = 0; % make column zero
的一列。如果你想設置爲零是相同數量的(不僅是2),你都可以列使用bsxfun來協助
allSame = all(bsxfun(@eq, A, A(1,:)), 1);
A(:, allSame) = 0;
您不需要'1'作爲'all'的第二個運算符,它是默認的運算符。 – Divakar
@Divakar謝謝你指出。我個人傾向於明確定義這些默認參數。但是你是正確的,它可以被省略。 – Shai
@Shai - 我同意。我喜歡明確地加入1來確保沒有歧義,並且允許理解閱讀我的代碼的其他人。 – rayryeng