【问题标题】:Zero padding/stuffing in matlabmatlab中的零填充/填充
【发布时间】:2013-05-02 11:50:31
【问题描述】:

基本上我有这样的数组:

[1 2 3 4 5 6]

我想要这样的数组:

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

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

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

【问题讨论】:

    标签: matlab


    【解决方案1】:

    你可以试试这个:

    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 在 cmets 中建议了一个较短的版本:

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

    【讨论】:

    • 或者只是b(1:2:2 * length(a) - 1) = a,让Matlab为你填零
    • @Dan:很好的建议。将其添加到答案中,如果这对您来说可以吗?
    • 请注意,如果b 已经存在,这可能会产生不需要的结果。
    【解决方案2】:

    如果你有信号处理工具箱,你可以使用upsample函数:

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

    【讨论】:

    • 假设你有y = upsample(x, 2),你可以用y(end)=[]丢弃最后一个0
    【解决方案3】:

    通过reshapeing:

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

    【讨论】:

      【解决方案4】:

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

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

      阿诺

      【讨论】:

      • 刚看到H.Muster的回答,比较好(不需要for循环)。
      【解决方案5】:

      另一种方法是:

               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
      

      【讨论】:

      • 仅仅因为你有一个内置函数并不意味着你不能为它创建逻辑。除了这将执行与函数相同的事情,这取决于你是否使用不管它与否。这件事仍然具有它的意义。
      • 但它根本不会执行,因为它根本不会在 Matlab 中运行。如果您只是描述一种算法,那么宁愿用伪代码描述它,但是当问题被标记为 Matlab 时,为什么要使用完全不相关的语言发布代码。这与内置函数无关(没有任何相关功能)。
      • 你有吗???顺便说一句,这就是你得到的:for(int i=1;i<length(b);i+2) | Error: Unexpected MATLAB expression. 这甚至不是一个论点,你发布了 C 代码,你希望它如何在 Matlab 中运行?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      相关资源
      最近更新 更多