我在模拟中遇到以下问题。
A
是数组24 x 2
。我将其拆分并获得4或12个数组。这意味着我将6或2个数组分组。如果我什至使用“分离”系数也可以。如果是奇数,则无法拆分A
。[由于24/5 = 4 * 5 + 4(或5 * 5 -1)或24/7 = 7 *,因此我无法对5或7进行分组3 + 3。
这就是为什么我要执行以下操作:
如果我有24 x 2
并且需要每5个组在一起:
block 1 : A(1,:), A(2,:),A(3,:),A(4,:),A(5,:)
block 2 : A(6,:), A(7,:),A(8,:),A(9,:),A(10,:)
block 3 : A(11,:), A(12,:),A(13,:),A(14,:),A(15,:)
block 4 : A(16,:), A(17,:),A(18,:),A(19,:),A(20,:)
block 5 : A(21,:), A(22,:),A(23,:),A(24,:), ?
您可以看到第5个块未满,Matlab给我一个错误。我的想法是创建A(25,:)= 0。对于我的模拟来说,可以。我将其模拟为function
:
A=rand(m,n)
w- # number of a vector that i would like group together ( in ex., it is `5`)
if mod(w,2)==0
if mod(m,2)==0
% do....
else
% remainder = 0
end
else
if mod(m,2)==0
% remainder = 0
else
%do...
end
我本来要像上面那样模拟,但是后来我注意到它不起作用。因为24/10 = 2 * 10 + 4。所以我应该写点别的东西
我可以在r = rem(24,5)
中找到提醒。作为上面的示例,MatLab给了我r=4
。然后我可以找到一个差异c= w-r =1
,此后,我不知道该怎么做。
您能建议我如何模拟这样的计算吗?
确定所需的块数,计算填充这些块所需的虚拟行数,并向A
添加与虚拟行数和实际行数之差一样多的零行。既然您没有提到,实际的输出应该是什么样(数组,单元格数组...),所以我选择了reshaped
数组。
这里是代码:
reshaped
输出(缩短):
m = 24;
n = 2;
w = 5;
A = rand(m, n)
% Determine number of blocks
n_blocks = ceil(m / w);
% Add zero rows to A
A(m+1:w*n_blocks, :) = 0
% Reshape A into desired format
A = reshape(A.', size(A, 1) / n_blocks * n, n_blocks).'
希望有帮助!