我想在大小为v
的部分中拆分向量n
,并获取定义这些部分的索引(idx
)。例如,v = [2 1 4 6], n=2, idx =[1 1 2 2]
。这里我们有两个大小为2的部分。数字length(v)/n
有可能不是圆的。在这种情况下,我们从大小为n
的部分开始,最后一部分的大小不是n
。例如,v = [2 1 4 6 8], n=2, idx =[1 1 2 2 3]
。在这里,我们再次有两个部分,但没有相同数量的元素。我们可以不用for循环吗?
答案 0 :(得分:3)
问题编辑后:
idx = ceil( (1:numel(v)) / floor(numel(v)/n) );
答案 1 :(得分:1)
这是我的版本:
% allocate indices (initialized with largest index to handle non-divisible case)
idx = zeros(size(v)) + parts;
% number of elements per part
k = floor(numel(idx) / parts);
% fill indices (matrix linearized using column-major order)
idx(1:parts*k) = repmat(1:parts, [k,1]);