2017-07-14 196 views
0

如果你有一個隨機矩陣,例如5x5的:嵌套循環和條件語句(Matlab的)

A(i,j) = (5 4 3 2 1 
      4 3 2 1 0 
      5 4 3 2 1 
      4 3 2 1 0 
      5 4 3 2 1) 

而第二陣列:

B(1,j) = (4 5 6 7 8) 

我怎樣才能然後分配B的值如果這隻需要在B(1,j)的值大於來自A的某個列的任何值時完成,例如,B(1,1)= 4且在A的第一個列中它大於A(1,1),A(3,1)和A(5,1),所以這些必須被替換爲4.在第二個colomn中,不需要替換等。

已經感謝!

回答

5

可以使用bsxfun做到這一點沒有任何明確的循環:

A = [5 4 3 2 1 
    4 3 2 1 0 
    5 4 3 2 1 
    4 3 2 1 0 
    5 4 3 2 1]; 
B = [4 5 6 7 8]; 

A = bsxfun(@min,A,B); 

結果:

A = 

    4 4 3 2 1 
    4 3 2 1 0 
    4 4 3 2 1 
    4 3 2 1 0 
    4 4 3 2 1 

在MATLAB的更高版本(2016B和更高版本),你甚至可以忽略bsxfun並獲得相同的結果。

A = min(A,B);