Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 为n个数字创建所有可能的组合矩阵_Matlab_Matrix - Fatal编程技术网

Matlab 为n个数字创建所有可能的组合矩阵

Matlab 为n个数字创建所有可能的组合矩阵,matlab,matrix,Matlab,Matrix,这是我发布的第一个问题。 我在Matlab中创建矩阵时遇到了一些问题。 我想创建一个矩阵,包含数字[1,2,3]的所有可能的唯一组合(因此没有任何重复组合) 这意味着它将创建一个如下所示的矩阵: 1 2 13 1 2 3 2 3 提前谢谢 你不能有这样的矩阵。您只能拥有: 1 2 NaN 1 3 NaN 1 2 3 2 3 NaN 您可以使用单元格数组,如A=cell(4,1);A{1}=[1,2];A{2}=… 如果您希望获得生成所有这些可能性的代码(我认为您实际上想要的),那么请更改您的问

这是我发布的第一个问题。 我在Matlab中创建矩阵时遇到了一些问题。 我想创建一个矩阵,包含数字[1,2,3]的所有可能的唯一组合(因此没有任何重复组合)

这意味着它将创建一个如下所示的矩阵:

1 2

13

1 2 3

2 3


提前谢谢

你不能有这样的矩阵。您只能拥有:

1 2 NaN
1 3 NaN
1 2 3
2 3 NaN
您可以使用单元格数组,如
A=cell(4,1);A{1}=[1,2];A{2}=…

如果您希望获得生成所有这些可能性的代码(我认为您实际上想要的),那么请更改您的问题并显示您已经尝试过的内容

现在让我们假设这是您真正想要的。你应该做递归。伪代码解决方案如下所示:

generatelist(numbers)
if numbers is empty, return [];
else return cell array length numbers+1, where first element is empty and the remaining ones have that numberX + output of generatelist(numbers > numberX). 
为了去掉单个元素的答案,最后将它们解析出来,这将稍微简化递归部分。
要获得矩阵,请找到最长的单元格和组合数,用NaN创建矩阵并填充值。

我还不能评论,因为信誉不够。。。 如前所述,不能有非矩形矩阵

例如,您可以使用单元格数组形式的解决方案,这段代码可以做到这一点(但可能不是最有效的):

然后你打电话:

find_subsets(1:3)
编辑

这实际上是在反转元素,您可以通过后处理或使用以下方法来纠正这一点:

        subsets_1 = find_subsets(tab(1:end-1));

        Y = num2cell(ones(1, length(subsets_1)) * tab(end));

不能创建非矩形的矩阵。也许你想要一个单元格?所以应该排除1个元素的组合?这并没有回答问题,它只回答了我的评论。要么回答问题,要么作为评论。@AnderBiguri我在提交解决方案后看到了你的评论,事实上,NaN矩阵确实回答了“创建矩阵”部分。除非真正需要的是让代码创建所有的组合,而不是把它们放在矩阵中。谢谢你同意我的意见,因为你没有回答OP想要的。那个么这个答案是错误的。@AnderBiguri所以对于那个想要创建组合矩阵的问题,答案应该是生成组合的代码?这些是根本不同的问题。一种是这样回答的:创建单元数组或向数据追加NAN。另一个由执行递归的代码来回答。或者,在这个非常简单的例子中,甚至是一个代码,它将创建一个8x3数组,使用nan,nan,nan->1,2,3=0到7之间的所有二进制数,序列由二进制值定义。然后分析出了
        subsets_1 = find_subsets(tab(1:end-1));

        Y = num2cell(ones(1, length(subsets_1)) * tab(end));