在matlab中用for循环改变矩阵元素
我在让MATLAB做我想做的事情时遇到了一些问题 假设我有一个矩阵在matlab中用for循环改变矩阵元素,matlab,loops,for-loop,matrix,Matlab,Loops,For Loop,Matrix,我在让MATLAB做我想做的事情时遇到了一些问题 假设我有一个矩阵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 =
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
通过查看工作区,我注意到item的值确实发生了变化,但x(矩阵)的值保持不变
如何获得所需的输出?简短回答以实现您的目标:
x(x==4) = 5
回答代码没有达到预期效果的原因:
您正在将
项
更改为5。但该项是一个新变量,它不指向矩阵中的同一项x
。因此,原始矩阵x
保持不变。如果您只想将所有4
s更改为5
s,则:
x(x==4)=5
基本上,x==4
将在x
中有4
的地方产生一个逻辑矩阵1
s:
[0 0 0 1
0 1 1 0
0 1 0 1]
然后,我们使用仅影响x
的值,其中1
s是,并将它们全部更改为5
s
如果您想使用循环(我强烈建议您不要这样做),那么您可以这样做:
for index = 1:numel(x)
if x(index) == 4
x(index) = 5;
end
end
+感谢你展示你所做的尝试。不知道答案是可以的。不尝试,但不是!除此之外,我强烈建议您遵循Dan的建议,避免为此循环。
for index = 1:numel(x)
if x(index) == 4
x(index) = 5;
end
end