matlab:替换for&的任何命令如果

时间:2014-03-20 02:08:06

标签: matlab if-statement for-loop

我有一个关于使用for和if循环的问题

如果我有这样的情况

我在数据矩阵a中有data_result R,其中a是问题的索引而b是答案

并且取决于数据M(x乘y),其中x = a

我有像

这样的代码
for i = 1:a
    if M(i) > constant 1
      R(i) = a;
    else if M(i) > constant 2
      R(i) = b;
    else
      R(i) = c;
    end
end

我只是想知道是否有任何可能的解决方案,以解决这个最小化循环和条件否则

1 个答案:

答案 0 :(得分:0)

您可以使用>或整个数组上的其他元素比较对所选元素进行“矢量化”更新,然后使用索引进行分配。测试返回布尔数组,您可以使用它来索引输入数组或具有相应维度的其他数组。

R = repmat(c, size(M));
% Do tests in order of increasing selectivity
R(M > 1) = a;
R(M > 2) = b;