Matlab并行化之Cellfun

本文介绍在Matlab中如何通过cellfun函数提高代码效率,避免显式循环。通过实例展示如何查找特定图片文件,并解释cellfun可以接受内置或自定义函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Matlab并行

在matlab里手写循环的效率是很低的,为提高效率,应该尽可能减少循环操作。把循环写成矩阵运算的形式,因为matlab的函数都是支持矩阵输入的。
在新版的matlab里有一个新特性非常值得学习,即cellfun,arrayfun等。有时候循环很难写成矩阵的形式,这个时候就需要用到cellfun。

cellfun

cellfun对每个cell依次应用指定的函数,可以使得代码更加简洁。假设我们现在有一个cell数组imglist,其中每个cell都是一个图片路径:

imglist{1}='/home/cwl/1.jpg';
imglist{2}='/home/cwl/2.jpg';

现在我们要在imglist中找到图片名为‘1.jpg’的图片,可以这样写

I = cell2mat(cellfun(@(x) ~isempty(strfind(x, '1.jpg')) , imglist,...
  'UniformOutput', false));
idx = find(I==1);
im_dir = imglist(idx);

这样,避免了写循环。
当然cellfun中的函数除了自定义函数,还可以使用内建函数。

[nrows, ncols] = cellfun(@size, C)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值