Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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 combnk函数的奇异行为_Matlab_Combinations - Fatal编程技术网

MATLAB combnk函数的奇异行为

MATLAB combnk函数的奇异行为,matlab,combinations,Matlab,Combinations,我试图生成给定数字范围内2个元素的所有组合。我正在使用“combnk”函数,如下所示 康姆克(1:4,2) ans= 康姆克(1:6,2) ans= 返回的组合顺序似乎发生了变化。我需要提前知道我的程序正常工作的顺序 是否有任何解决方案确保我以一致的顺序获得组合? 还有,为什么MATLAB显示出这种奇怪的行为? 到目前为止,我能想到的唯一解决方案是首先检查结果矩阵的第一个条目,然后使用“flipud”函数将其上下翻转 更新:通过一点实验,我注意到只有当一组数字的长度小于6时,才会出现相反的顺序。

我试图生成给定数字范围内2个元素的所有组合。我正在使用“combnk”函数,如下所示

康姆克(1:4,2)

ans=

康姆克(1:6,2)

ans=

返回的组合顺序似乎发生了变化。我需要提前知道我的程序正常工作的顺序

是否有任何解决方案确保我以一致的顺序获得组合? 还有,为什么MATLAB显示出这种奇怪的行为?

到目前为止,我能想到的唯一解决方案是首先检查结果矩阵的第一个条目,然后使用“flipud”函数将其上下翻转


更新:通过一点实验,我注意到只有当一组数字的长度小于6时,才会出现相反的顺序。这就是为什么combnk(1:6,2)会产生“正确”的顺序。式中,as combnk(1:5,2)向后生成结果。这仍然是个大问题。

这将解决订购问题:

a=combnk(1:4,2);
[~,idx]=sortrows(a);
aNew=a(idx,:);

我不知道为什么MATLAB会显示这种行为。

您可以尝试
nchoosek
而不是
combnk
。我没有matlab统计工具箱(只有倍频程),因此我不知道
nchoosek
是否有任何重大缺陷。

谢谢,非常感谢您的回答。您的解决方案是一个很好的解决方案。很好。这个方法提供了一致的结果。在我看来这是个bug。你至少应该向MathWorks报告,看看他们是否同意。
 1     2
 1     3
 1     4
 1     5
 1     6
 2     3
 2     4
 2     5
 2     6
 3     4
 3     5
 3     6
 4     5
 4     6
 5     6
a=combnk(1:4,2);
[~,idx]=sortrows(a);
aNew=a(idx,:);