在matlab中零填充/填充

时间:2013-05-02 11:50:31

标签: matlab

基本上我有这样的数组:

[1 2 3 4 5 6]

我想要这样的数组:

[1 0 2 0 3 0 4 0 5 0 6]

所以数组中L-1为零,其中L是零填充前数组内所有值的数量。

任何人都知道如何在Matlab中解决它?

5 个答案:

答案 0 :(得分:7)

你可以试试这个:

a = [1 2 3 4 5 6]; 

b = zeros(1, 2 * length(a) - 1);
b(1:2:end) = a;

这导致

b =

     1     0     2     0     3     0     4     0     5     0     6

Dan 在评论中提出了一个较短的版本:

b(1:2:2 * length(a) - 1) = a;

答案 1 :(得分:2)

如果您有信号处理工具箱,可以使用upsample功能:

>> x = 1:5;
>> upsample(x, 2)
ans =
    1     0     2     0     3     0     4     0     5     0

答案 2 :(得分:1)

通过reshape ing:

a = [1 2 3 4 5 6]; 
b = a; % make copy
b(2,:) = 0; % add zeros
b = b(:)'; %'
b(end) = []; % discard last zero

答案 3 :(得分:0)

也许不是最优雅/最有效的解决方案,但以下内容应该有效:

x = 1:6;
y = zeros(1,2*length(x)-1);
for k=1:length(x)
    y(2*k-1)=x(k);
end

阿诺

答案 4 :(得分:0)

另一种方法是:

         a=1:6;
         b=zeros(1,2*length(a)-1);
         j=1;
         for i=1:2:length(b)
             b(i)=a(j);
             j=j+1;
         end