【发布时间】:2016-09-27 00:25:30
【问题描述】:
我正在尝试使用编码器将我在 matlab 中的部分函数转换为 c++。 Coder 不支持函数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
对于 8 个元素,我必须编写 8 个 for 循环,有什么建议可以为 n 个元素转换它吗?像
for i=n:-1:1
I=[1:n] ;
for j=1:i
J=I(find(I~=j));
... ?
thank you
【问题讨论】:
-
@101010,这没有帮助,因为 OP 自己不会将代码转换为 C++。他依靠 Matlab Coder 来做这件事,这意味着他必须只使用那些可以翻译的 Matlab 函数。
标签: c++ matlab permutation matlab-coder perms