码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-10-29 21:05:56      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   sp   div   log   bs   as   

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    -1


a =

     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    -1


a =

     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    -1


ans =

     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矩阵操作

标签:style   blog   color   使用   sp   div   log   bs   as   

原文地址:http://www.cnblogs.com/zeakey/p/4060353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!