2017-03-13 74 views

回答

2

第一個選擇是選擇要更改和使用二進制索引中的列:

A = round(rand(10, 10)); 
B = A(:, 1:5); 
B(B ~= 0) = 10; 
A(:, 1:5) = B 

第二種方法是,如下使用面膜:

A = round(rand(10, 10)); 
mask = zeros(size(A)); 
mask(:, 1:5) = 1; 
A(A~=0 & mask) = 10 
+0

謝謝你,但我只想和也不是零個元素改變第5列但非零的。 –

+0

我錯過了第一次,但我改變了我的答案。 – m7913d

+0

我加了一個B(B> 0)= 10;但是謝謝你! –

1

我看到你已經接受了正確的答案,所以我將只爲文檔添加一個解決方案,包含一行和一個變量,如果有人會發現它更舒服:

A((A(:,1:5))~=0)=10 

編輯:

對於@ m7913d註釋,列N1到n2更通用的解決方案,可以爲─

A((n1-1)*size(A,1)+find(A(:,n1:n2)~=0))=10 
+0

好的一線解決方案。請注意,此解決方案僅適用於前n行。對於想要將列n1更改爲n2的稍有不同的問題,結果將不正確。 – m7913d

+0

@ m7913d你絕對正確。我編輯了我的答案更一般的情況 – Adiel

相關問題