2017-07-14 190 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);