基本上我有这样的数组:
[1 2 3 4 5 6]
我想要这样的数组:
[1 0 2 0 3 0 4 0 5 0 6]
所以数组中L-1
为零,其中L
是零填充前数组内所有值的数量。
任何人都知道如何在Matlab中解决它?
答案 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