【发布时间】:2011-11-11 22:36:15
【问题描述】:
我需要对以下代码进行矢量化处理:
a = [1 2 3 2 3 1];
b = [1 2 3];
for i = 1:length(a)
for j = 1:length(b)
r(i, j) = (a(i) == b(j));
end
end
输出的r应该是一个逻辑数组:
1 0 0
0 1 0
0 0 1
0 1 0
0 0 1
1 0 0
我能得到的最接近的是:
for j = 1:length(b)
r(:, j) = (a == b(j));
end
遍历较短的向量显然更有效,因为它生成的迭代次数更少。正确的解决方案应该没有任何 for 循环。
这在 MATLAB/Octave 中可行吗?
【问题讨论】:
标签: matlab octave vectorization