マトリックスをほぼ偶数の行で分割したいと思います。たとえば、これらの寸法 155 x 1000 のマトリックスがある場合、新しい各マトリックスのおおよその寸法が 15 X 1000 である場合、それを 10 で分割するにはどうすればよいですか?
質問する
3762 次
2 に答える
0
これはどう:
inMatrix = rand(155, 1000);
numRows = size(inMatrix, 1);
numParts = 10;
a = floor(numRows/numParts); % = 15
b = rem(numRows, numParts); % = 5
partition = ones(1, numParts)*a; % = [15 15 15 15 15 15 15 15 15 15]
partition(1:b) = partition(1:b)+1; % = [16 16 16 16 16 15 15 15 15 15]
disp(sum(partition)) % = 155
% Split matrix rows into partition, storing result in a cell array
outMatrices = mat2cell(inMatrix, partition, 1000)
outMatrices =
[16x1000 double]
[16x1000 double]
[16x1000 double]
[16x1000 double]
[16x1000 double]
[15x1000 double]
[15x1000 double]
[15x1000 double]
[15x1000 double]
[15x1000 double]
于 2011-11-15T09:36:39.893 に答える
0
これは、あなたの望むことですか?
%Setup
x = rand(155,4); %4 columns prints on my screen, the second dimension can be any size
n = size(x,1);
step = round(n/15);
%Now loop through the array, creating partitions
% This loop just displays the partition plus a divider
for ixStart = 1:step:n
part = x( ixStart:(min(ixStart+step,end)) , : );
disp(part);
disp('---------')
end
ここでの唯一のトリックはend
、添え字の関数評価内でキーワードを使用することです。キーワードを使用せずに を使用することもできますがsize(x,1)
、これでは読みにくくなります。
于 2011-11-15T00:22:55.883 に答える