根据条件改变矩阵的元素

时间:2012-08-16 12:38:42

标签: matlab if-statement indexing

假设我有矩阵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声明吗?

1 个答案:

答案 0 :(得分:8)

您不需要IF您需要的logical indexing

    IndexOfLessThan2 = A < 2;
    IndexOfGreaterThan5 = A > 5;
    IndexBtw2and5 = ~(IndexOfLessThan2 | IndexOfGreaterThan5);

    A = A + IndexOfLessThan2*10 + IndexOfGreaterThan5*20 + IndexBtw2and5*30;