3

array に一連の値 (たとえば 20 個の値) があります。

 A = [1:20]

既知のサイズのサブセットに分割したいと思います。サイズ5の4セットに分けたい場合は、使用できます

y = reshape(A,5,4)'

しかし、私の問題は、サイズの倍数が一致しない場合です。配列を 3 つのセットに分割したいとします。したがって、7 つのセットがありますが、最後のセットは短くなります。

まさに私が欲しいのは

a1= [1 2 3]

a2= [4 5 6]

a3= [7 8 9]

a4= [10 11 12]

a5= [13 14 15]

a6= [16 17 18]

a7= [19 20]

この種のサブグループ化を MATLAB でベクトルに行うにはどうすればよいですか?

4

3 に答える 3

0
A = 1:20;
n = 3;

% y = number of sets
y = ceil(length(A) / n);

ai = num2cell(reshape(A(1:n*y),m,n)');
if length(A) > n * y
    ai = [ai; A(n*y+1:end)];
end
于 2013-07-05T23:37:00.187 に答える