我的问题是这样的,一个数组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的全排列,先谢过~
Matlab里取代for循环的方法
答案:2 悬赏:0
解决时间 2021-03-08 04:24
- 提问者网友:恋你成殇
- 2021-03-07 10:59
最佳答案
- 二级知识专家网友:青灯壁纸妹
- 2021-03-07 11:41
楼上的回答基本思路是对的,应该使用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
但楼上的代码存在两个问题:一是做法比较繁琐,二是只适用于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
全部回答
- 1楼网友:陪衬角色
- 2021-03-07 12:42
可以直接
a=[1,2,3,4,5,6,7];b=[2,3,4,5,6,7,8];
c = a'*b
c =
2 3 4 5 6 7 8
4 6 8 10 12 14 16
6 9 12 15 18 21 24
8 12 16 20 24 28 32
10 15 20 25 30 35 40
12 18 24 30 36 42 48
14 21 28 35 42 49 56你非要循环的话
a=[1,2,3,4,5,6,7];b=[2,3,4,5,6,7,8];
for i = 1:length(a)
for j = 1:length(b)
c(i,j) = a(i)*b(j);
end
end
c
%% 结果
c =
2 3 4 5 6 7 8
4 6 8 10 12 14 16
6 9 12 15 18 21 24
8 12 16 20 24 28 32
10 15 20 25 30 35 40
12 18 24 30 36 42 48
14 21 28 35 42 49 56
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |