Arrays 如何在矩阵中达到某个数字时冻结数字
我有一个矩阵,z:Arrays 如何在矩阵中达到某个数字时冻结数字,arrays,matlab,if-statement,for-loop,matrix,Arrays,Matlab,If Statement,For Loop,Matrix,我有一个矩阵,z: z = [0 0 0 0 0 0 0 0 0 0] for i = 2:20 z(i,:) = z(i-1,:) + 5; end 所以这个循环将生成一个矩阵,从一行零开始,然后在每行加上额外的5 我想知道当它达到30时如何冻结它,所以该行之后的所有值都将显示30 因此应该是这样的: 0 0 0 5 10 10 10 15 15 20 20 25 25 30 30 30 30 30等。为了练习,您可以添加一个if语句: for i = 2:20 z(i,
z = [0 0 0 0 0 0 0 0 0 0]
for i = 2:20
z(i,:) = z(i-1,:) + 5;
end
所以这个循环将生成一个矩阵,从一行零开始,然后在每行加上额外的5
我想知道当它达到30时如何冻结它,所以该行之后的所有值都将显示30
因此应该是这样的:
0 0 0
5
10 10 10
15 15
20 20
25 25
30 30
30 30
30等。为了练习,您可以添加一个if语句:
for i = 2:20
z(i, :) = z(i - 1, :) + 5;
if z(i, :) > 30
z(i, :) = 30;
end
end
。。。或使用最小值将其覆盖:
但是,如果使用矢量化操作,则可以完全避免此循环,方法如下:
z = min(cumsum(5 * ones(20, 10)), 30)
使用min命令截断该值。并使用矢量化
>> z = repmat( min( 0:5:95, 30 )', [1 10] )
z =
0 0 0 0 0 0 0 0 0 0
5 5 5 5 5 5 5 5 5 5
10 10 10 10 10 10 10 10 10 10
15 15 15 15 15 15 15 15 15 15
20 20 20 20 20 20 20 20 20 20
25 25 25 25 25 25 25 25 25 25
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
一定不要在一周后就接受了正确的答案。特别是当它是一个如此简洁和彻底的答案时。谢谢你的回答。谢谢你的回答,很大的帮助。谢谢你的回答,很大的帮助。
>> z = repmat( min( 0:5:95, 30 )', [1 10] )
z =
0 0 0 0 0 0 0 0 0 0
5 5 5 5 5 5 5 5 5 5
10 10 10 10 10 10 10 10 10 10
15 15 15 15 15 15 15 15 15 15
20 20 20 20 20 20 20 20 20 20
25 25 25 25 25 25 25 25 25 25
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30