Arrays 在MATLAB中,在向量中固定数量的非零元素之间插入选定数量的零

Arrays 在MATLAB中,在向量中固定数量的非零元素之间插入选定数量的零,arrays,matlab,function,vector,Arrays,Matlab,Function,Vector,我有一个向量,像 A=[1,2,3,4,5,6,7,8,9,10] 我希望每5个数字插入2个零。 结果将是A=[1,2,3,4,5,0,0,6,7,8,9,10,0,0] 我知道我可以预先分配空间,然后使用for循环来分配变量,但我不知道是否有更优雅的方法。即使a不包含整数个块,这也有效: A = [1,2,3,4,5,6,7,8,9,10,11,12]; % input vector m = 5; % block size n = 2; % number of zeros to be adde

我有一个向量,像
A=[1,2,3,4,5,6,7,8,9,10]
我希望每5个数字插入2个零。
结果将是
A=[1,2,3,4,5,0,0,6,7,8,9,10,0,0]


我知道我可以预先分配空间,然后使用for循环来分配变量,但我不知道是否有更优雅的方法。

即使
a
不包含整数个块,这也有效:

A = [1,2,3,4,5,6,7,8,9,10,11,12]; % input vector
m = 5; % block size
n = 2; % number of zeros to be added after each block
B = zeros(1, numel(A)+floor(numel(A)/m)*n); % preallocate to appropriate size
B(mod(0:end-1, m+n)<m) = A; % logical index. Fill values of A at desired positions of B

如果
A
的元素数是
5的倍数,则可以使用
零的一些整形和串联,如下所示-

reshape([reshape(A,5,[]) ; zeros(2,numel(A)/5)],1,[])

谢谢是正确的。假设现在我没有一个整数大小为m的块?我应该在向量的末尾加上一些零,否则还有更好的解决方案?如果块的数量不是整数,那么问题就没有定义。在这种情况下,期望的输出是什么?你是对的。假设我有一个向量'a=[1,2,3,4,5,6,7,8,9,10,11],我希望每五个数字后面有两个零。预期结果为“A=[1,2,3,4,5,0,0,6,7,8,9,10,0,0,11]”。谢谢
reshape([reshape(A,5,[]) ; zeros(2,numel(A)/5)],1,[])