【问题标题】:Change elements of matrix based on condition根据条件更改矩阵元素
【发布时间】:2012-08-12 19:28:24
【问题描述】:

假设我有矩阵 A:

A =

 1     2     3
 4     5     6   

对于每个元素x<2,加 10,
对于每个元素x>5,加 20,然后
对于每个元素2<=x<=5,加 30。

所以对于我的示例矩阵 A,我需要得到以下矩阵 B:

B = 

11    32    33
34    35    26

我需要能够以一般方式执行此操作,因为实际矩阵会非常大。有什么建议?我可以使用IF 语句吗?

【问题讨论】:

    标签: matlab if-statement indexing


    【解决方案1】:

    你不需要IF 你需要logical indexing

        IndexOfLessThan2 = A < 2;
        IndexOfGreaterThan5 = A > 5;
        IndexBtw2and5 = ~(IndexOfLessThan2 | IndexOfGreaterThan5);
    
        A = A + IndexOfLessThan2*10 + IndexOfGreaterThan5*20 + IndexBtw2and5*30;
    

    【讨论】:

    • 谢谢,这正是我需要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2015-07-23
    相关资源
    最近更新 更多