首页 > 代码库 > 避免使用循环的几个高效matlab矩阵操作

避免使用循环的几个高效matlab矩阵操作

matlab拥有强大的晕针运算能力,下面的几个例子展示了很多在其他语言中需要用循环遍历才能完成的操作在matlab里可以用矩阵操作来完成

 

1)将矩阵中小于零的元素置零:

a = [1,2,3;-1,-2,-3;1,0,-1]a(a<0) = 0

打印结果:

a =     1     2     3    -1    -2    -3     1     0    -1a =     1     2     3     0     0     0     1     0     0

2)将矩阵a中小于0的元素乘以2,其他元素不改变值:

a = [1,2,3;-1,-2,-3;1,0,-1]a(find(a<0)) = a(find(a<0))*2

结果打印如下:

a =     1     2     3    -1    -2    -3     1     0    -1a =     1     2     3    -2    -4    -6     1     0    -2

说明:

      find函数返回符合逻辑判断的矩阵元素的索引(按列索引),例如:

>> a = [1,2,3;-1,-2,-3;1,0,-1]   find(a==0)a =     1     2     3    -1    -2    -3     1     0    -1ans =     6

上面的find()输出6,因为在矩阵a中,第6个元素的值为0,满足find操作的逻辑,在matlab中矩阵索引按列进行,从1开始。

 

3)有矩阵a:

a =     1     6    11    16    21     2     7    12    17    22     3     8    13    18    23     4     9    14    19    24     5    10    15    20    25

另有向量 x = [1,3,5] 与向量 y = [1,2,4]

现在要按x和y取出a中的元素,形成新矩阵b,也即:取出矩阵a中的   第1行第1列  ,   第3行第2列  , 第5行第4列    的元素:

b = a(x,y)b = diag(b)

b =

1
8
20

 

避免使用循环的几个高效matlab矩阵操作