You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MatLab 2016b中如何按非降序对指定向量的值进行分组?

在Matlab 2016b中实现向量的非降序分组

当然可以在Matlab 2016b中完成这个需求!从你给出的期望结果来看,核心是把原向量分割成指定长度的连续子块,再对每个子块单独做非降序排序。下面是具体的实现步骤和代码:

步骤说明

  1. 定义原始向量:先把你提供的values向量准确输入到Matlab中;
  2. 指定分组长度:根据你期望的A-E组的元素个数,定义每个组的长度列表;
  3. 分割原始向量:用mat2cell函数把原向量按指定长度分割成单元格数组,每个单元格对应一个原始子块;
  4. 子块内部排序:用cellfun批量对每个单元格里的子向量做非降序排序,得到最终的分组结果。

完整代码示例

% 定义原始向量
values = [1 1 1 7 17 74 89 91 96 1 5 32 43 78 84 95 98 100 0 0 15 31 69 88 94 97 100 100 100 0 2 12 42 66 78 83 89 94 97 1 6 34 63 65 75 89 93 98];

% 定义每个分组的元素长度(对应A-E组)
group_lengths = [9, 9, 11, 10, 9];

% 将原始向量分割为对应长度的子块单元格数组
raw_groups = mat2cell(values, 1, group_lengths);

% 对每个子块内部执行非降序排序
groups = cellfun(@(x) sort(x, 'ascend'), raw_groups, 'UniformOutput', false);

% 提取并命名各个分组
groupA = groups{1};
groupB = groups{2};
groupC = groups{3};
groupD = groups{4};
groupE = groups{5};

结果验证

运行这段代码后,每个分组的结果会和你期望的完全一致:

  • groupA:[1 1 1 7 17 74 89 91 96]
  • groupB:[1 5 32 43 78 84 95 98 100]
  • groupC:[0 0 15 31 69 88 94 97 100 100 100]
  • groupD:[0 2 12 42 66 78 83 89 94 97]
  • groupE:[1 6 34 63 65 75 89 93 98]

内容的提问来源于stack exchange,提问作者pseudorandom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:58:29