我有一个矢量
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循环来分配变量,但如果有更优雅的方式,我就会徘徊。
答案 0 :(得分:4)
即使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
此示例中的结果是
B =
1 2 3 4 5 0 0 6 7 8 9 10 0 0 11 12
答案 1 :(得分:1)
如果A
的元素数量是5
的倍数,您可以使用zeros
重新整形和连接,就像这样 -
reshape([reshape(A,5,[]) ; zeros(2,numel(A)/5)],1,[])