如何添加其他零差错

问题描述 投票:0回答:1

我在模拟中遇到以下问题。

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,此后,我不知道该怎么做。

您能建议我如何模拟这样的计算吗?

arrays matlab reminders
1个回答
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).'

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.