Matlab里取代for循环的方法
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 15:04:21
Matlab里取代for循环的方法
我的问题是这样的,一个数组angle_6_axis=[A B C D E F],A=[1,2],B=[2,3],C=[5,6],D=[9,10],E=[11,12],F=[14,19]这里只是举个例子,其实ABCDEF里的元素其实远不止两个.然后要实现A,B,C,D,E,F的全排列.
我写了个很笨的6个嵌套的for循环实现.
f=1;
for k=1:AL
for j=1:BL
for h=1:CL
for o=1:DL
for p=1:EL
for q=1:FL
G(f)={[A(k),B(j),C(h),D(o),E(p),F(q)]};
angle_6_axis=[A(k),B(j),C(h),D(o),E(p),F(q)];
end.
求教Matlab是否有其他可能性实现A,B,C,D,E,F的全排列,先谢过~
我的问题是这样的,一个数组angle_6_axis=[A B C D E F],A=[1,2],B=[2,3],C=[5,6],D=[9,10],E=[11,12],F=[14,19]这里只是举个例子,其实ABCDEF里的元素其实远不止两个.然后要实现A,B,C,D,E,F的全排列.
我写了个很笨的6个嵌套的for循环实现.
f=1;
for k=1:AL
for j=1:BL
for h=1:CL
for o=1:DL
for p=1:EL
for q=1:FL
G(f)={[A(k),B(j),C(h),D(o),E(p),F(q)]};
angle_6_axis=[A(k),B(j),C(h),D(o),E(p),F(q)];
end.
求教Matlab是否有其他可能性实现A,B,C,D,E,F的全排列,先谢过~
楼上的回答基本思路是对的,应该使用ndgrid函数来做.但楼上的代码存在两个问题:一是做法比较繁琐,二是只适用于A-F六个变量元素数量相同的情况. 参考代码:A = [1 2 3];
B = [2 3];
C = [5 6];
D = [9 10];
E = [11 12];
F = [14,19];
[A,B,C,D,E,F] = ndgrid(A,B,C,D,E,F);
angle_6_axis = [A(:),B(:),C(:),D(:),E(:),F(:)] 得到结果:angle_6_axis =
1 2 5 9 11 14
2 2 5 9 11 14
3 2 5 9 11 14
1 3 5 9 11 14
2 3 5 9 11 14
3 3 5 9 11 14
1 2 6 9 11 14
2 2 6 9 11 14
3 2 6 9 11 14
1 3 6 9 11 14
2 3 6 9 11 14
3 3 6 9 11 14
1 2 5 10 11 14
2 2 5 10 11 14
3 2 5 10 11 14
1 3 5 10 11 14
2 3 5 10 11 14
3 3 5 10 11 14
1 2 6 10 11 14
2 2 6 10 11 14
3 2 6 10 11 14
1 3 6 10 11 14
2 3 6 10 11 14
3 3 6 10 11 14
1 2 5 9 12 14
2 2 5 9 12 14
3 2 5 9 12 14
1 3 5 9 12 14
2 3 5 9 12 14
3 3 5 9 12 14
1 2 6 9 12 14
2 2 6 9 12 14
3 2 6 9 12 14
1 3 6 9 12 14
2 3 6 9 12 14
3 3 6 9 12 14
1 2 5 10 12 14
2 2 5 10 12 14
3 2 5 10 12 14
1 3 5 10 12 14
2 3 5 10 12 14
3 3 5 10 12 14
1 2 6 10 12 14
2 2 6 10 12 14
3 2 6 10 12 14
1 3 6 10 12 14
2 3 6 10 12 14
3 3 6 10 12 14
1 2 5 9 11 19
2 2 5 9 11 19
3 2 5 9 11 19
1 3 5 9 11 19
2 3 5 9 11 19
3 3 5 9 11 19
1 2 6 9 11 19
2 2 6 9 11 19
3 2 6 9 11 19
1 3 6 9 11 19
2 3 6 9 11 19
3 3 6 9 11 19
1 2 5 10 11 19
2 2 5 10 11 19
3 2 5 10 11 19
1 3 5 10 11 19
2 3 5 10 11 19
3 3 5 10 11 19
1 2 6 10 11 19
2 2 6 10 11 19
3 2 6 10 11 19
1 3 6 10 11 19
2 3 6 10 11 19
3 3 6 10 11 19
1 2 5 9 12 19
2 2 5 9 12 19
3 2 5 9 12 19
1 3 5 9 12 19
2 3 5 9 12 19
3 3 5 9 12 19
1 2 6 9 12 19
2 2 6 9 12 19
3 2 6 9 12 19
1 3 6 9 12 19
2 3 6 9 12 19
3 3 6 9 12 19
1 2 5 10 12 19
2 2 5 10 12 19
3 2 5 10 12 19
1 3 5 10 12 19
2 3 5 10 12 19
3 3 5 10 12 19
1 2 6 10 12 19
2 2 6 10 12 19
3 2 6 10 12 19
1 3 6 10 12 19
2 3 6 10 12 19
3 3 6 10 12 19
B = [2 3];
C = [5 6];
D = [9 10];
E = [11 12];
F = [14,19];
[A,B,C,D,E,F] = ndgrid(A,B,C,D,E,F);
angle_6_axis = [A(:),B(:),C(:),D(:),E(:),F(:)] 得到结果:angle_6_axis =
1 2 5 9 11 14
2 2 5 9 11 14
3 2 5 9 11 14
1 3 5 9 11 14
2 3 5 9 11 14
3 3 5 9 11 14
1 2 6 9 11 14
2 2 6 9 11 14
3 2 6 9 11 14
1 3 6 9 11 14
2 3 6 9 11 14
3 3 6 9 11 14
1 2 5 10 11 14
2 2 5 10 11 14
3 2 5 10 11 14
1 3 5 10 11 14
2 3 5 10 11 14
3 3 5 10 11 14
1 2 6 10 11 14
2 2 6 10 11 14
3 2 6 10 11 14
1 3 6 10 11 14
2 3 6 10 11 14
3 3 6 10 11 14
1 2 5 9 12 14
2 2 5 9 12 14
3 2 5 9 12 14
1 3 5 9 12 14
2 3 5 9 12 14
3 3 5 9 12 14
1 2 6 9 12 14
2 2 6 9 12 14
3 2 6 9 12 14
1 3 6 9 12 14
2 3 6 9 12 14
3 3 6 9 12 14
1 2 5 10 12 14
2 2 5 10 12 14
3 2 5 10 12 14
1 3 5 10 12 14
2 3 5 10 12 14
3 3 5 10 12 14
1 2 6 10 12 14
2 2 6 10 12 14
3 2 6 10 12 14
1 3 6 10 12 14
2 3 6 10 12 14
3 3 6 10 12 14
1 2 5 9 11 19
2 2 5 9 11 19
3 2 5 9 11 19
1 3 5 9 11 19
2 3 5 9 11 19
3 3 5 9 11 19
1 2 6 9 11 19
2 2 6 9 11 19
3 2 6 9 11 19
1 3 6 9 11 19
2 3 6 9 11 19
3 3 6 9 11 19
1 2 5 10 11 19
2 2 5 10 11 19
3 2 5 10 11 19
1 3 5 10 11 19
2 3 5 10 11 19
3 3 5 10 11 19
1 2 6 10 11 19
2 2 6 10 11 19
3 2 6 10 11 19
1 3 6 10 11 19
2 3 6 10 11 19
3 3 6 10 11 19
1 2 5 9 12 19
2 2 5 9 12 19
3 2 5 9 12 19
1 3 5 9 12 19
2 3 5 9 12 19
3 3 5 9 12 19
1 2 6 9 12 19
2 2 6 9 12 19
3 2 6 9 12 19
1 3 6 9 12 19
2 3 6 9 12 19
3 3 6 9 12 19
1 2 5 10 12 19
2 2 5 10 12 19
3 2 5 10 12 19
1 3 5 10 12 19
2 3 5 10 12 19
3 3 5 10 12 19
1 2 6 10 12 19
2 2 6 10 12 19
3 2 6 10 12 19
1 3 6 10 12 19
2 3 6 10 12 19
3 3 6 10 12 19