一.概述
现实生活中我们常碰到这样的问题:我们需要将矩阵满足某些条件的元素进行一些变化,其余的矩阵元素值不变,例如
A=[1 2 3;4 5 6;7 8 9];
现在我想让A中大于5的元素为另外一个数组相应位置的值怎么做?
二.解决
changIndex=A>5;
A>5操作会返回一个和矩阵A大小一致的矩阵。
若相应位置的元素满足条件,则changeIndex相应位置的元素值为1,否则为0;
当逻辑矩阵作为索引的时候,其值为1的元素会起到索引作用,该元素在矩阵中的位置被作为索引使用。
三.实例
A=[1 2 3;4 5 6;7 8 9];
changeIndex=A>5;
disp(changeIndex);
B=[5 5 5;5 5 5;5 5 5];
%将满足条件下A的相应元素值替换成B相应位置的值
A(changeIndex)=B(changeIndex);
disp(A);
在matlab运行后:
changeIndex =
3×3 logical array
0 0 0
0 0 1
1 1 1
A =1 2 3
4 5 5
5 5 5