3

基本上我有这样的数组:

[1 2 3 4 5 6]

我想要这样的数组:

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

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

有人知道如何在 Matlab 中解决它吗?

4

5 回答 5

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;
于 2013-05-02T11:53:47.247 回答
2

如果您有信号处理工具箱,则可以使用上采样功能:

>> x = 1:5;
>> upsample(x, 2)
ans =
    1     0     2     0     3     0     4     0     5     0
于 2013-05-02T12:47:43.353 回答
1

通过reshapeing:

a = [1 2 3 4 5 6]; 
b = a; % make copy
b(2,:) = 0; % add zeros
b = b(:)'; %'
b(end) = []; % discard last zero
于 2013-05-02T12:44:01.243 回答
0

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

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

阿尔诺

于 2013-05-02T11:55:55.640 回答
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
于 2013-05-02T12:00:52.060 回答