在matlab中使用for循环更改矩阵的元素

时间:2014-09-17 09:21:40

标签: 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 = 5;
    end
end

我尝试的最简单的事情是

for item = x
    if item == 4
        item = 5;
    end
end

我通过查看工作区注意到项目的值确实发生了变化,但x(矩阵)的值保持不变。

如何获取我正在寻找的输出?

2 个答案:

答案 0 :(得分:3)

如果您只想将所有4更改为5 s,那么:

x(x==4)=5

基本上x==4会在1中的4处生成x的逻辑矩阵:

[0 0 0 1
 0 1 1 0
 0 1 0 1]

然后我们使用logical index仅影响那些x所在的1的值,并将它们全部更改为5

如果您想使用循环(我强烈建议您这样做),那么您可以这样做:

for index = 1:numel(x)
    if x(index) == 4
        x(index) = 5;
    end
end

答案 1 :(得分:2)

达到你想要的简短答案:

x(x==4) = 5

回答为什么您的代码没有按预期执行的操作: 您正在将item更改为5.但该项是新变量,它不会指向矩阵x中的相同项。因此原始矩阵x保持不变。