MATLAB中给矩阵中的某些元素赋值(不用循环)
再对矩阵处理的时候,我们经常会遇到对矩阵中满足条件的某些元素进行处理的情况。在不使用for循环的情况下,怎样处理这个问题呢,我们将借助find()这个函数进行具体的说明。
操作方法
- 01
对于如下矩阵A,我们想找到其中为0的元素,然后让这些元素都赋值为3。 A = [1 1 0; 1 0 1; 0 1 1];
- 02
我们首先用find()函数,找到矩阵A中所有为0的元素的下标。 zero_index = find(A==0) 我们得到的zero_index如下图所示。
- 03
然后我们用所得到的下标zero_index对对应的元素进行操作。 A(zero_index) = ~A(zero_index).*3 先对所有对应的元素取反,然后再将所有的元素乘以3,赋值到A中原先的位置。
- 04
对矩阵中部分元素通过下标来操作,包含+,-,*,/,~(取反)等。下面是部分结果示例(均是对步骤1中的矩阵A进行的操作)。 A(zero_index) = A(zero_index)+3; A(zero_index) = A(zero_index)-3; A(zero_index) = ~A(zero_index)*4; A(zero_index) = ~A(zero_index)/2; A(zero_index) = ~A(zero_index).^2;
- 05
为了实现某些情况的赋值,我们还可以将以上运算结合起来,对矩阵中的部分元素进行操作。以下面语句为例,图中是MATLAB运行结果。 A(zero_index) = (A(zero_index)+3).^2;
赞 (0)