3

L最大要素サイズまで、指定された長さのすべての可能な整数配列を生成したいと思いますM

要素の最小サイズは 1 です。

M = 3、およびの場合L = 2、出力は次のようになります。

[1,1]
[1,2]
[1,3]
[2,1]
[2,2]
[2,3]
[3,1]
[3,2]
[3,3]

さまざまな組み合わせがM^Lあるため、Matlab コードは次のようになると思います。

function [arrays] = allArrays(M,L)
  for i = 1:(M^L)
    arrays(i) = % Something here that translates i to the desired array.
  end
end

ループの途中で何をすべきかわかりません。助けていただければ幸いです。

4

1 に答える 1

7

使用する必要がありますndgrid

[y x]=ndgrid(1:3,1:3);
resu=[y(:) x(:)];

入力したい場合はML次のトリックを実行する必要があります。

arg=repmat((1:M)',1,L);
arg=mat2cell(arg,M,ones(1,L));
resu=cell(1,L);
[resu{:}]=ndgrid(arg{:});
resu=cell2mat(cellfun(@(x) x(:), resu,'UniformOutput',0));

結果:

 resu =  
     1     1
     2     1
     3     1
     1     2
     2     2
     3     2
     1     3
     2     3
     3     3
于 2012-11-11T17:45:07.123 に答える