- 积分
- 32
- 注册时间
- 2009-7-29
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2013-6-16 00:54:13
|
显示全部楼层
来自 英国
更基础的问题:
% 没安装fullfact对应的工具箱。(答复3#bainhome )
% 猜测fullfact函数没有实现“全遍历向量的生成问题”的功能,否则本帖无存在的必要。(必要的废话)
请大家参照3#描述的fullfact函数的功能,编写myfullfact函数。
该函数在实现“全遍历向量的生成问题”的基础上,能将之应用范围推广到更一般的情况。
% 函数功能描述:产生符合以下条件的所有组合:
% 输出n位数,每一位数的取值范围(对应于输入的各个参数)均可单独设定。
% 如4位数,【x,y,z,w】第一位为x,第二位为y,...,x,y,z,w 的取值范围可单独设定。
% 输出位数的由输入参数的个数决定。
% 在各位数的最小值均为1的情况下,也可以仅输入各位数的最大值。
调用形式:
[myperms,nums] = myfullfact([1:3],[2:6],[4,5],[2,4,6,7]) % nums为组合数,myperms为(nums x n)的数组。
myperms = myfullfact([1:3],[2:6],[4,5],[2,4,6,7])
调用形式:(输入参数全为标量时,调用形式与Matlab中的fullfact函数稍微有些不同)
[myperms,nums] = myfullfact(3,4)
myperms = myfullfact(3,4)
等同于
[myperms,nums] = myfullfact([1:3],[1:4])
myperms = myfullfact([1:3],[1:4])
n位全遍历向量的调用形式:
vscp = [1,3,7,9]; % vscp is the digit's scope in the particular position.
[myperms,nums] = myfullfact(vscp,vscp,vscp,vscp) % n = 4,为输入参数的个数
myperms = myfullfact(vscp,vscp,vscp,vscp) % n = 4,为输入参数的个数 |
|