Octave / Matlab:改变矩阵中某个位置的值

时间:2013-05-04 03:38:06

标签: matlab octave vectorization

我有一个向量,它告诉我在矩阵中我必须用数据改变某些位和矩阵。例如:

a = [2
     0
     4]

data = [ 1 0 1 0;
         0 0 1 0
         1 1 1 1]

a告诉我,我必须改变(从1翻转到0)下面的值:

  • 第1行第2列
  • 第3行第4列
  • 第二排
  • 没有变化!!!

结果将是

data2 = [ 1 1 1 0;
          0 0 1 0
          1 1 1 0]

如何只使用矢量操作?我不想使用for循环因为它们太慢了。

1 个答案:

答案 0 :(得分:2)

这是一种方法:

   data2=data;
   ind=sub2ind(size(data),find(a),a(a>0));
   data2(ind)=~data(ind)