2012-10-13 42 views
1

我知道我可以傳遞矩陣的所有元素,並做到這一點。帶條件的Matlab多個矩陣

但也許有另一種選擇。

我想做的事:

mat1 = mat2 * mat1; 

在MAT1每個元素成爲負數或大於255大,我想離開前一個元素。

例如(結果是不正確的,這僅僅是例子):

mat1 = [10 25 12 
     33 7 163 
     232 13 77] 

mat2 = [-1 2 -3 
     4 -5 6 
     -7 -8 9] 

asume MAT1 = MAT2 * MAT1給出:

mat1 = [-77.32 59 298 
     0  -33 12 
     -600  256 80] 

所以我想修MAT1至是:

mat1 = [10 59 12 
     0 7 12 
     232 13 80] 

回答

5

如果我理解正確的話,你有一個矩陣乘法

mat2 * mat1 

最好的是矩陣乘法結果的矩陣存儲在第三矩陣

mat3 = mat2 * mat1 

隨着

idx = (mat3 < 0 | mat3 > 255) 

您要更換和零哪裏都不者。應用此指數與MAT1

mat3(idx) = mat1(idx) 

結果的值,以取代在MAT3的值是在其中每一個小於0或大於255更大的元件已被替換MAT1的值的矩陣。

2

我認爲乘以矩陣,然後「固定」的結果是最好的選擇。這是爲什麼:

  1. 你必須計算在產品矩陣中的每個單元知道,如果你想保留與否
  2. Matlab的瓶坯矩陣乘法真快

所以我只會去:

prod = mat1 * mat2 
mask = (prod < 0) | (prod > 255) 
prod(mask) = mat1(mask) 
+0

我相信這是錯誤的。在執行第2行後,掩碼全部爲零。您需要'|'而不是乘法。 – angainor