嵌套循环和条件语句(Matlab)
如果您有一个随机矩阵,例如5x5:嵌套循环和条件语句(Matlab),matlab,loops,nested,conditional,Matlab,Loops,Nested,Conditional,如果您有一个随机矩阵,例如5x5: 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(1,j)的值大于A的某一列中的任何值时才需要这样做,那么我如何将B的值分配给A呢 例如,B(1,1)=4,在A的第一列中,它大于A(1,1)、A(3,1)和A(5,1),因此必须用4代替
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(1,j)的值大于A的某一列中的任何值时才需要这样做,那么我如何将B的值分配给A呢
例如,B(1,1)=4,在A的第一列中,它大于A(1,1)、A(3,1)和A(5,1),因此必须用4代替它们。在第二列中,不需要替换任何内容,等等
已经谢谢你了 您可以使用
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);
您可以使用
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);
Matlab“find”可能对您有用
如果您不关心速度或效率,还可以设置一个两个嵌套for循环,并使用一个比较a和B值的条件(即If)语句
如果您只对B的列比较感兴趣,那么可以在内部循环中使用外部循环的增量
for i,...
for j,...
if B(1,i) > A(j,i)
A(j,i)=B(i,j)
Matlab“find”可能对您有用
如果您不关心速度或效率,还可以设置一个两个嵌套for循环,并使用一个比较a和B值的条件(即If)语句
如果您只对B的列比较感兴趣,那么可以在内部循环中使用外部循环的增量
for i,...
for j,...
if B(1,i) > A(j,i)
A(j,i)=B(i,j)