嵌套循环和条件语句(Matlab的)
如果你有一个随机矩阵,例如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中,不需要替换等。
已经感谢!
回答:
Matlab“find”可能对您有用。
https://www.mathworks.com/help/matlab/matlab_prog/find-array-elements-that-meet-a-condition.html
如果你不关心速度和效率,你也可以建立一个两个嵌套的for循环与条件(即如果)语句比较A和B.
的值如果您只对B列进行明智的比较感兴趣,则可以使用内部循环中外部循环的增量。
for i,... for j,...
if B(1,i) > A(j,i)
A(j,i)=B(i,j)
回答:
可以使用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的) 的全部内容, 来源链接: utcz.com/qa/258044.html