有人能用这种方式编写一个函数来生成从零到x的置换矩阵吗?例如:
myfunc(x,y(,其中x是最大数,y是列数。例如:
myfunc(2,3(,并生成以下结果:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
2 0 0
2 0 1
2 1 0
2 0 1
1 2 0
...
all the way to 222
它用于测试ARIMA(p,d,q(模型的p d q值
如果你知道x是9或更小,那么你可以使用如下的基本转换函数:
function z = myfunc(x,y)
z = dec2base(0:((x+1)^y-1),x+1) - '0';
end
如果x可以大于9,那么需要更多的通用代码:
function z = myfunc(x,y)
z = arrayfun(@(c)base2dec(c,x+1),dec2base(0:((x+1)^y-1),x+1));
end
在这两种情况下,请注意,如果x和y太大,则转换将无法工作,并且/或者内存将耗尽。在任何一种情况下,基本策略都是简单地以基数(x+1(从0计数到您想要的总数,即(x+1(^y-1。