我有一個矩陣100x50。我想要做的是將值> 0的單元格更改爲0,將值爲0的單元格更改爲1.我知道它很簡單,但如果有人可以請建議如何在沒有循環的情況下執行此操作。在Matlab中更改矩陣的值
回答
iiPos = M>0;
iiZeros = M==0;
M(iiPos) = 0;
M(iiZeros) = 1;
sizeMat = size(mat); % Obtain the size of the matrix
final = zeros(sizeMat); % Create a zero full matrix.
idxZero = find(Mat == 0); % Find where = 0;
final(idxZero) = 1; % switch to 1.
@Andy,僅供參考,Matlab評論爲'%'。我只是這樣做,因爲用戶可以輕鬆地將代碼複製粘貼到命令窗口中而不會出錯。 – Vuwox
恢復編輯,可能需要一些時間直到出現 –
這是幹嘛呢,使用logical not的一種巧妙的方法,如果有唯一的非負數:
M =
1 2 0 2
2 1 2 2
0 1 2 1
1 0 1 2
M = ~M;
M =
0 0 1 0
0 0 0 0
1 0 0 0
0 1 0 0
如果你有負數爲好,則:
M =
0 -1 0 3
-3 0 -1 0
0 -2 0 1
1 0 -1 1
M(M >= 0) = ~M(M >= 0)
M =
1 -1 1 0
-3 1 -1 1
1 -2 1 0
0 1 -1 0
爲什麼這麼複雜?
M = (M == 0);
爲此,零必須是確切的零。如果他們只是近似爲零,使用
M = (abs(M) < eps);
這是假設'M'不能包含負值... –
@LuisMendo該問題指定矩陣包含值> 0和值= 0,沒有別的。如果值<0,則不清楚如何處理它們。 –
@ADonda我沒有看到這個問題真的說明了這一點。當然,在這種情況下,你會對這些價值觀不做任何評價。 ...但我同意你的看法,OP的想法可能是沒有負面價值 –
對於一般的情況下,用負數:
A = A.*(A<0) + (A==0);
這是假設負值應該保留。 –
好吧,如果沒有關於負值的說法,當然應該保留! :-) –
如果*沒有*說負值,當然沒有! ;-)我想我們必須問OP。 –
- 1. 在matlab中更改矩陣
- 2. 在MATLAB中將column_vector更改爲矩陣
- 3. 更改矩陣中的值
- 4. 更改矩陣中的值
- 5. 通過函數調用在matlab中更改矩陣中的值
- 6. 更改matlab中矩陣的兩列
- 7. 矩陣矩陣在Matlab中的數組?
- 8. 閾值在矩陣matlab
- 9. 矩陣在Matlab中
- 10. Matlab在添加矩陣時更改數組值錯誤
- 11. MATLAB - 在繪製矩陣時更改刻度標記值
- 12. 矩陣在Matlab中的數值積分
- 13. 在MATLAB中映射矩陣的值
- 14. 在Matlab中爲索引子矩陣的子矩陣賦值
- 15. 如何更改矩陣中的值?
- 16. 在Matlab中修改矩陣元素
- 17. 在matlab中修改矩陣乘法
- 18. Matlab的:替換矩陣值
- 19. 更改矩陣中無循環的矩陣值
- 20. 在MATLAB矩陣
- 21. Matlab - 矩陣微分方程[更新矩陣值? ]
- 22. matlab中的矩陣
- 23. Zeropad在matlab中的矩陣
- 24. 如何在Matlab中更改矩陣的索引?
- 25. MATLAB改變矩陣元素
- 26. 在MATLAB中繪製三維矩陣*值*
- 27. Matlab - 在3d矩陣中查找2d矩陣值
- 28. 在MATLAB中更快的多個矩陣值分配
- 29. matlab條件矩陣賦值
- 30. Matlab-選擇矩陣中的特定值
做什麼用的負值?還是沒有? –