Matlab问题 如何组合成一个大的矩阵(穷举)

比如说,一个样本有4个变量,每个变量的范围均为(-1:0.1:1),那末,如何生成一个矩阵包含这四个变量的所有可能的组合?(4*21^4的矩阵)。
您好:人造地心引力。谢谢您的回答。我知道有rand、UNIFRND命令等,但都是随机的,我想要的是组合的,即所有可能的组合。谢谢!

举个例子:
如果x1、x2、x3为3个变量,分别有四个供选择的值(字母代表的是数字)

x1 x2 x3

A H O
B I P
C J Q
D K R

那末,如何用Matlab语句生成以下64种可能的组合呢?

x1 x2 x3

A H O
A H P
A H Q
A H R
A I O
A I P
A I Q
A I R
A J O
A J P
A J Q
A J R
A K O
A K P
A K Q
A K R
B H O
B H P
B H Q
B H R
B I O
B I P
B I Q
B I R
B J O
B J P
B J Q
B J R
B K O
B K P
B K Q
B K R
C H O
C H P
C H Q
C H R
C I O
C I P
C I Q
C I R
C J O
C J P
C J Q
C J R
C K O
C K P
C K Q
C K R
D H O
D H P
D H Q
D H R
D I O
D I P
D I Q
D I R
D J O
D J P
D J Q
D J R
D K O
D K P
D K Q
D K R

第1个回答  2008-11-01
x1=-1:.1:1;
x2=-1:.1:1;
x3=-1:.1:1;
x4=-1:.1:1;

[temp1, temp2, temp3, temp4] =ndgrid(x1, x2, x3, x4);

result = [temp1(:), temp2(:), temp3(:), temp4(:)];
%每一行就是一种组合本回答被提问者采纳
第2个回答  2008-10-25
不是有个随机矩阵自动生成么!看help
第3个回答  2008-10-24
不是有个随机矩阵自动生成么!看help

Matlab问题 如何组合成一个大的矩阵(穷举)
x1=-1:.1:1;x2=-1:.1:1;x3=-1:.1:1;x4=-1:.1:1;[temp1, temp2, temp3, temp4] =ndgrid(x1, x2, x3, x4);result = [temp1(:), temp2(:), temp3(:), temp4(:)];每一行就是一种组合

请教高手!如何用Matlab穷举出这样的组合数?
这个问题其实就是变相问2-n,所有的组合情况,且这个组合不能有4 perms(x)具备输出向量x的所有组合情况,所以如果设定x= 2,3,4,5,6~~MaxNum 就会输出这个向量的全部排列组合 然后分别取1列,2列,,,MaxNum-2列 对每次取的数据的每一行进行正序排序,然后去除相同的行 最后在每一行前面补1...

matlab优化工具箱中遗传算法的问题
NONLCON是非线性约束函数 options是运行方式。这两个可以写函数自己完成,也可默认 函数默认计算最小值,计算最大值要加负号 非线性约束条件的写法 function [c,ceq]=nonlcon(x) 定义函数自变量是x,x可以是一列矩阵 c=[]; c表示非线性等式约束,以为没有,所以为空 ceq=[x(1)-2*(x(2))...

怎样用MATLAB编写一组定长的数
a = [] %定义变维矩阵 for i = 0:99999999 %穷举0~99999999个数 num = i for j = 8:1 %把穷举出来的数按位填到a的第i行中 a(i;j) = mod(num,10^j)mun = num - a(i;j)*10^j end end 如果里面有全角符号,自己改下放在matlab里就可以运行了 出来的结果是99999999行乘以...

matlab菜鸟求助,关于用参数控制for循环层数的问题
1:100,n-1)可以求出所有的组合数并且按从小到大的顺序排好了的,这样在得到的组合数里面,有后一个点减去欠一个点就可以求出线段的长度了,当然最后一个点是100,第一个点是0,这样基本不用循环就作出来了。另外,如果作并行的话要求数据不能和循环相关,所有你这个应该是做不了平行的。

小明投篮的命中率为20%,若他连续投中三次,则休息一下,问他平均投篮多少...
见下图.设平均投篮A次,p=0.2 A=(1-p)(1+A)+p(1-p)(2+A)+p^2(1-p)(3+A)+3*p^3 A=(1+p+p^2)\/p^3=155次

关于matlab的一个问题,怎样得到一个隐性函数的优化解?
假如方程有解,比如说,这个例子中我们把方程右端的20换成0.5,那么可以用下面的程序求解(代码文件已作为附件上传):function zdc0 = 0.5;xy0 = [0 100];opt = optimset('Display', 'iter');% 图1:在等高线图上标出最大值点figure(1)clfhold onh = ezcontour('1000*y\/(x^2+y^2...

动态规划的推法 谢谢
个问题:1.最佳合并过程符合最佳原理使用贪心法至所以可能出错, 是因为每一次选择得分最小(最大)的相邻两堆合并,不一定保证余下的合并过程能导致最优解。聪明的读者马上会想到一种理想的假设:如果N-1次合并的全局最优解包含了每一次合并的子问题的最优解,那么经这样的N-1次合并后的得分总和必然是最优的。例如...

用matlab求100-1000内的素数,并求所有素数的和及平均值,下面的程序不是...
flag是个标志位,用来判断当前的m是不是质数,while语句穷举了m是否能被2到m-1整除也就是能否被i到j整除,当找到有能整除的情况直接跳出while,下面的if语句也通不过,直接就来到for循环,判断下一个数是否为素数。当执行完while都没有找到整除,那么此时flag不会被置为0,if语句通过,把素数保存在...

数学建模算法有哪些
网格算法和穷举法一样,只是网格法是连续问题的穷举。比如要求在N 个变量情况下的最优化问题,那么对这些变量可取的空间进行采点,比如在[a; b] 区间内取M +1 个点,就是a; a+(b-a)\/M; a+2 (b-a)\/M; …… ; b 那么这样循环就需要进行(M + 1)N 次运算,所以计算量很大。比如97 ...

相似回答