两行之间的比较和变化值

时间:2017-02-13 18:46:35

标签: matlab matlab-guide

我有一个20行20列的矩阵, 如果第5行中的值1为0

matric=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; 
     1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ; 
     0 1 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1;
     0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1;
     0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;];
if (matric(5,:)==1)
matric(1:5,1:end)=0;end

我尝试比较第二行和第五行 如果我们有" 1"在第2行和第5行 第2行取0

if (matric(5,:)==matric(2,:)==1)
matric(2,1:end)=0;end
你知道吗

谢谢

所需的输出是:

 matric=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; 
     1 0 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 0 1 0 ;2row will change 
     0 1 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1;
     0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1;
     0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1; % 5 row

2 个答案:

答案 0 :(得分:0)

您可以使用逻辑索引

我强烈建议您阅读以下参考资料:

使用以下代码行:

  

0放入第5行中值1的所有列中:

matric(:, matric(5, :) == 1) = 0;
  

0放在第2行的所有列中,第2行和第5行的值均为1

matric(2, matric(2, :) == matric(5, :)) = 0;

答案 1 :(得分:0)

您可以使用逻辑索引来实现此目的。现在我必须说我对你想要根据你的描述实现什么感到困惑,但根据你的代码,第一个声明可以按如下方式完成:

matric(1:5,matric(5,:)==1) = 0;

,第二个看起来像:

matric(2,matric(5,:)==1 & matric(2,:)==1)=0;