【问题标题】:MATLAB Changing matrix elementsMATLAB 更改矩阵元素
【发布时间】:2012-11-11 17:34:14
【问题描述】:

如何迭代矩阵并在条件下更改值..例如: 我有大小为 100x100 的矩阵 m,我正在做:

m(m<10)=func(elemnt);

元素应该是迭代时的当前元素。如何访问当前元素??

【问题讨论】:

    标签: matlab


    【解决方案1】:

    尝试简单 m(m&lt;10)=func(m(m&lt;10));

    示例:

    m=[[1 2 3];[5 6 7];[8 9 10]]
    
    m =
    1    2    3
    5    6    7
    8    9   10
    
    m(mod(m,3)==2) = m(mod(m,3)==2) * 5
    m =
     1   10    3
    25    6    7
    40    9   10
    

    唯一的限制是您的自定义函数可以处理向量。

    【讨论】:

    • 感谢它的工作。但如果我正在做类似的事情: m(m=10)=func(m(m>=10));它会在整个矩阵中运行两次吗???
    • 您可以缓存临时:c=m&lt;10; m(c) = func(m(c));,但不能缓存表达式 m(c),因为该表达式是从左侧和右侧计算的:它既可以读取也可以写入。
    • 您应该暂时缓存c=m&lt;10;,因为您更改了值并且可能不想重新计算更改值的约束(m(ii) 可能是&lt;10 并且在应用func 之后,可能是&gt;10)
    猜你喜欢
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    相关资源
    最近更新 更多