在matlab中,我有一個隨機數在0和100之間的矩陣。 所有低於10的數字都應該乘以2。如何在一個條件下用MATLAB中的標量值乘以矩陣
testmatrix = [1,2; 11,90] 應該變成[2,4; 11,90]
在矩陣執行條件操作是很容易的,但我如何引用當前元素在右側?
testmatrix(testmatrix < 10)= ??? * 2
在matlab中,我有一個隨機數在0和100之間的矩陣。 所有低於10的數字都應該乘以2。如何在一個條件下用MATLAB中的標量值乘以矩陣
testmatrix = [1,2; 11,90] 應該變成[2,4; 11,90]
在矩陣執行條件操作是很容易的,但我如何引用當前元素在右側?
testmatrix(testmatrix < 10)= ??? * 2
在完全相同的方式如在左手側:
testmatrix(testmatrix<10) = testmatrix(testmatrix<10)*2
或者作爲Amro指出,可以節省計算通過創建可重用的邏輯索引掩碼:
idx = testmatrix < 10
testmatrix(idx) = testmatrix(idx)*2
第二種方法在具有更復雜條件的更多情況下或者在con dition重複多次或當速度是一個主要問題
你需要的是:
testmatrix(testmatrix < 10) = testmatrix(testmatrix < 10)*2;
就是這樣,謝謝。 – Traubenfuchs 2013-04-22 08:23:33
@ user2306536:你應該接受Dan的回答。這是一樣的,它稍微老一點。 – 2013-04-22 08:32:36
你說得對。我選擇Roneys的答案是因爲它從一開始就出現在最前面,所以認爲它是第一個。 – Traubenfuchs 2013-04-22 08:42:56
如何:
A =蘭迪(100,1000,1) ;
cond = A < = 10;
測試= A(COND)* 2
@ user2306536:你也可以保存以備重新使用變量的邏輯索引掩模:'IDX =(testmatrix <10);'然後'testmatrix (idx)= testmatrix(idx)* 2;' – Amro 2013-04-22 08:46:30