MATLAB: 告别for循环

本文介绍了如何在MATLAB中避免使用for循环,通过矩阵赋值、find和bsxfun等函数提高代码效率。讲解了如何利用逻辑索引直接操作矩阵,结合find函数找到满足条件的元素位置,以及bsxfun函数实现矩阵元素的并集和交集操作。展示了MATLAB在面向矩阵操作时的强大和便捷。
摘要由CSDN通过智能技术生成

原文首发于blog.scloud.com,转载请注明出处

MATLAB不是C语言,名字中都出现了MAT,在操作MAT时怎么还能用for循环!

在C语言的思路中,如果要对一个二维矩阵每个元素进行某种操作,似乎唯一的方法就是写两层for循环遍历整个矩阵。但是在MATLAB中,这种写法不仅代码量大,运行效率也极低。但是这绝不代表MATLAB时一门低效的语言。相反,MATLAB对矩阵操作进行了大量的优化,只要使用得当,不仅写法简便,效率也会高得出奇

矩阵赋值

让MATLAB操作矩阵变得便利的基础之一就是:MATLAB中可以使用索引对整个矩阵进行操作。这个索引可以是与矩阵相同大小的逻辑矩阵,也可以是元素的位置向量

a = zeros(2,2);
b = [true, true; false, false]; % 使用逻辑矩阵对整个矩阵进行操作
a(b) = 1;
a = zeros(2,2);
b = [13]; % 使用元素位置向量对整个矩阵进行操作
a(b) = 1;

两种方式得到的a的值均为
a =
1 1
0 0

使用索引的操作,从本质上改变了如果要对整个矩阵进行操作必须进行for循环遍历的思维方式。这种使用索引的操作方式配合各种MATLAB函数,能够创造无尽可能

find

假设我们遇到了这个问题:已知有四张二值图 B1,B2,B3,B4,要对它们进行如下操作得到 R

R=(R1
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值