首页 > 代码库 > 避免使用循环的几个高效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矩阵操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。