[英]Changing the elements of a matrix using a for loop in matlab
我有几个问题让MATLAB做我想做的事。
说我有一个矩阵x = [1 2 3 4; 1 4 4 5; 6 4 1 4]
x = [1 2 3 4; 1 4 4 5; 6 4 1 4]
我正在尝试编写将遍历矩阵并将每个4更改为5的代码,因此它会修改输入矩阵
我尝试过几件事:
while index <= numel(x)
if index == 4
index = 5;
end
index = index + 1;
end
for item = x
if item == 4
item = 5;
end
end
我尝试过的最简单的事情就是
for item = x
if item == 4
item = 5;
end
end
我注意到通过查看工作区,项的值确实发生了变化,但x(矩阵)的值保持不变。
如何获得我正在寻找的输出?
如果您只想将所有4
秒更改为5
秒,那么:
x(x==4)=5
基本上x==4
将产生一个逻辑矩阵,其中x
为4
,每个都是1
:
[0 0 0 1
0 1 1 0
0 1 0 1]
然后我们使用逻辑索引仅影响那些1
的x
的值,并将它们全部更改为5
秒。
如果你想使用循环(我强烈建议反对)这样做,那么你可以这样做:
for index = 1:numel(x)
if x(index) == 4
x(index) = 5;
end
end
简短的回答,实现你想要的:
x(x==4) = 5
回答为什么你的代码不符合你的预期:你正在将item
更改为5.但是该项目是一个新变量,它不指向矩阵x
的相同项目。 因此原始矩阵x
保持不变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.