matlab 退出for,MATLAB: 告别for循环

本文探讨了在MATLAB中如何避免使用for循环,通过矩阵赋值和使用find、bsxfun等函数提高代码效率。示例展示了如何通过逻辑矩阵和索引操作实现复杂的并集交集计算,简化代码并提升执行速度。
摘要由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 = [1, 3]; % 使用`元素位置`向量对整个矩阵进行操作

a(b) = 1;

两种方式得到的a的值均为

a =

1 1

0 0

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

find函数

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

R=(R1⋂R2)⋃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值