【发布时间】:2020-12-12 20:01:06
【问题描述】:
我试图在 Matlab 中生成一个特定类型的矩阵。
我需要根据以下规则针对特定类型的数据进行修改:
-
首先我必须选择一个等级
g(假设最多6个)然后我必须选择每行元素的数量n(最多18个); -
这些数字是等级
g的特定多项式的幂; -
矩阵中每行的总和不允许大于选择的
g等级; -
每行最大的元素是选中的
g。
对于g = 2、n = 2,矩阵将如下所示:
A = [0 0;
0 1;
1 0;
0 2;
2 0;
1 1]
对于g = 2、n = 3,矩阵将如下所示:
A = [0 0 0;
0 0 1;
0 0 2;
0 1 0;
0 2 0;
1 0 0;
2 0 0;
0 1 1;
1 0 1;
1 1 0]
如何生成数组元素的所有可能组合?
Ex : given v = [0 1 2];
Result = [0 0 0;
0 0 1;
0 1 0;
0 1 1;
1 0 0;
1 0 1;
1 1 0;
1 1 1;
0 0 2;
0 2 0;
2 0 0;
2 0 1;
2 1 1;
2 1 2;
...]
and so on...
我已经用perms、nchoosek、repelem、repmat、for-loops、unique、matrix concatenations 尝试了这个,但我无法找到和算法。
【问题讨论】: