matlab多个长度为3的数组,个数不确定,怎么从每一个数组中取一个数字,得到全排列假如有3个数组,分别为a b c.其全排列用matlab可以计算出,方法为[a b c]=ndgrid(a,b,c)[a(:) b(:) c(:)]我的数组个数是不
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 13:33:11
matlab多个长度为3的数组,个数不确定,怎么从每一个数组中取一个数字,得到全排列假如有3个数组,分别为a b c.其全排列用matlab可以计算出,方法为[a b c]=ndgrid(a,b,c)[a(:) b(:) c(:)]我的数组个数是不
matlab多个长度为3的数组,个数不确定,怎么从每一个数组中取一个数字,得到全排列
假如有3个数组,分别为a b c.其全排列用matlab可以计算出,方法为
[a b c]=ndgrid(a,b,c)
[a(:) b(:) c(:)]
我的数组个数是不确定的,是随着另外的变量发生变化的,
matlab多个长度为3的数组,个数不确定,怎么从每一个数组中取一个数字,得到全排列假如有3个数组,分别为a b c.其全排列用matlab可以计算出,方法为[a b c]=ndgrid(a,b,c)[a(:) b(:) c(:)]我的数组个数是不
这个不叫全排列吧,应该叫全组合.
编了个函数给你:
function C = allcombs(varargin)
n = nargin;
if n < 2, error('Insufficient input'); end
s = '[x1';
for i=2:n
s = [s sprintf(',x%i',i)];
end
s = [s ']=ndgrid(varargin{:});'];
eval(s);
s = '[x1(:)';
for i=2:n
s = [s sprintf(',x%i(:)',i)];
end
s = [s ']'];
C = eval(s);
调用示例:
a = [1 2];
b = [3 4 5];
c = [6 7];
C = allcombs(a,b,c)
运行结果
C =
1 3 6
2 3 6
1 4 6
2 4 6
1 5 6
2 5 6
1 3 7
2 3 7
1 4 7
2 4 7
1 5 7
2 5 7