【发布时间】:2013-03-08 19:35:35
【问题描述】:
如何在不使用 for 循环的情况下实现这个 Matlab 代码?
b=10:10:50
a=50*rand(1,50);
for ii=2:numel(b)
ind{ii}=find(a<b(ii) & a>b(ii-1));
end
【问题讨论】:
-
“矢量化”是什么意思?在循环的每一步中,您都会丢弃之前计算的
ind值,因此您只需要执行最后一步。你的代码有错误吗? -
向量化是指没有for循环。 ind 可以是一个细胞。我将编辑问题,以便更清楚。
-
要完全执行您在此处执行的操作(使用
find,将结果存储在单元格数组中),循环可能是您最快的选择。另一方面,如果您的程序可以使用逻辑索引或其他一些技术,那么非循环解决方案可能会加快速度。但是,您没有提供足够的信息来了解这一点。
标签: matlab vectorization