分箱 1:9 -> 等号元胞数组的分箱

Binning 1:9 -> bin of equal number cell array

以下简单问题:我想将向量放入 大小相等的容器 .

的元胞数组 groups

我有困难解决,我有一种强烈的感觉可能是单线的,这是我所取得的进展:

nums=1:9; %numbers to bin
categories=discretize(nums,3); %put nums in 3 equal groups
groups=mat2cell(x); % should return: {1:3,4:6,7:9}

我错过了什么?

该解决方案应该适用于任何包含数字的一维向量,尽可能将其放入大小相等的箱中(任何解决方案都适用);输出应该是各个 bin 的元胞数组。

您可以使用 reshape and num2cell:

result = num2cell(reshape(1:9,3,[]),1);

如果数组大小不能被 bin 数整除,您可以使用 histcounts and mat2cell:

nbins = 3;
a= [2 3 1 8 7 6 9 8 1];
result = mat2cell(a,1,histcounts(1:numel(a),nbins));