标签: perms

在Matlab中非递归地实现perms,与Coder兼容

我试图使用编码器将我在matlab中的部分功能转换为c ++.编码器不支持该功能perms.我perms在我的代码中广泛使用.在线查看后,我发现很少有关于如何生成所有排列列表的建议,perms但是它是"手动"完成的,这意味着对于3个元素的排列,我们有3个for循环,4个元素我们有4个循环,等等.

示例1:4:

row = 1; 
n=a;
Z = zeros(factorial(n),n);
idxarray1=[1:4];

for idx=idxarray1
    idxarray2=idxarray1(find(idxarray1~=idx)) ;  
    for jdx=idxarray2
        idxarray3=idxarray2(find(idxarray2~=jdx)); 
        for kdx=idxarray3
            idxarray4=idxarray3(find(idxarray3~=kdx)) ;
            for mdx=idxarray4
                Z(row,:) = [idx,jdx,kdx,mdx];
                row = row + 1 ;
            end
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

对于8个元素,我必须编写8个for循环,有关如何为n个元素转换它的任何建议吗?就像是

for i=n:-1:1
    I=[1:n] ;
    for j=1:i
       J=I(find(I~=j));

... ?


thank you
Run Code Online (Sandbox Code Playgroud)

c++ matlab permutation matlab-coder perms

2
推荐指数
1
解决办法
181
查看次数

标签 统计

c++ ×1

matlab ×1

matlab-coder ×1

perms ×1

permutation ×1