【发布时间】:2026-02-15 13:45:01
【问题描述】:
我有一个for 循环执行当前操作:
T = [1,1,1,4,5,6,3];
A = [20,15,4,21,14,3];
l = length(T);
% how can we vectorize this?
for(i = 1:l)
A(T(i)) = A(T(i)) + 1;
end
简单地说,它使用T 向量作为索引列表,以特定顺序在A 数组上递增。例如,数组A 中的第一个元素将增加 3 次(对应于T 中的 3 个元素),而其余的将增加一次,2 不会增加。因此,A 的更改结果如下:
A = [23,15,5,22,15,4];
但是,理想情况下,我想在这里避免 for 循环。在我尝试之前:
A(T) = A(T) + 1;
这不起作用; MATLAB 只是忽略重复的索引。有没有办法通过矢量化或其他方式在for 循环中执行操作?
【问题讨论】:
标签: matlab for-loop indexing vectorization