MATLAB编程技巧:如何生成多个集合的全部排列、

2020-06-30 17:09| 发布者:

在数学中经常会遇到一个问题:对于给定的多个集合,写出他们元素的所有排列组合。利用枚举法,很容易手写出来,但是编程时,如何快速实现这一功能呢?我们给出快速解决这一问题的MATLAB代码。

% A是一个元胞数组,第一个元素为向量[1 2 3],第二个元素为向量[2 4 7]A = {1:3, [2 4 7]};

最简单的方法就是利用for循环,但是效率比较低,并且元胞数比较多的时候,太多层的for循环,也不美观。下面给出一种简单的方法,避免使用for循环。

% 使用ndgrid生成N维网格数据n = length(A); % 确定A有多少个元胞S=arrayfun(@(i)sprintf('x%i ',i),1:n,'UniformOutput',false);eval(['[' S{:} ']=ndgrid(C{:});'])S1=arrayfun(@(i)sprintf('x%i(:) ',i),1:n,'UniformOutput',false); % 把网格数据转换为坐标组合X = eval(['[' S1{:} ']']);

1 2 2 2 3 2 1 4 2 4 3 4 1 7 2 7 3 7

% A是一个元胞数组,第一个元素为向量[1 2 3],第二个元素仍为向量[1 2 3]A = {1:3, 1:3};

1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3

我是杂谈博士,闲暇之余爱看电影、爱好运动、爱好编程、爱好旅游,更热爱算法,如果也有契合你的地方,关注我吧!

<
>
昆明腾瑞网络有限公司积极引导客户理解互联网对企业的品牌价值,并充分把握中小型企业信息化管理的个性化需求,提供真正有价值的信息化服务产品,让企业在全球一体化的经济体系下的竞争中处于不败之地,不仅深谙互联网核心技术的开发,而且对全球互联网市场和IT行业的大势均有精确的把控。

联系我们

昆明龙泉路实力壹方城6栋1702号

0871-65125379(服务时间:9:00-18:00)

3568089682@qq.com

在线咨询 官方微信官方微信

网站建设 微信开发 售后服务 咨询电话0871-65125379 返回顶部
返回顶部