【问题标题】:Changing the elements of a matrix using a for loop in matlab在matlab中使用for循环更改矩阵的元素
【发布时间】:2014-11-11 06:20:07
【问题描述】:

我在让 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

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

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

【问题讨论】:

  • +1 用于显示您尝试过的内容。不知道答案是可以的。然而,不尝试,不是!除此之外,我强烈建议您遵循 Dan 的建议并避免为此出现循环。

标签: matlab loops for-loop matrix


【解决方案1】:

实现您想要的简短答案:

x(x==4) = 5

回答为什么您的代码没有达到您的预期: 您正在将 item 更改为 5。但该项目是一个新变量,它不指向矩阵 x 中的同一项目。因此原始矩阵x 保持不变。

【讨论】:

    【解决方案2】:

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

    x(x==4)=5
    

    基本上x==4 将产生一个逻辑矩阵,其中1s 在x 中存在4 的任何地方:

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

    然后,我们使用logical index 仅影响x 的值,其中1s 是,并将它们全部更改为5s。

    如果您想使用循环来执行此操作(我强烈建议不要这样做),那么您可以这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 2012-08-27
      • 2020-08-12
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多