如何在使用for循环(MATLAB)时消除不必要的0?

问题描述 投票:0回答:2

作为标题,我写这些代码:

for n=1:2:10
    a(n)=2^n;
end
disp(a)

我想得到答案

a = 2 8 32 128 512

但是命令窗口中的输出是

a = 2 0 8 0 32 0 128 0 512

这四个0是多余的,如何消除这四个0?

matlab matlab-guide matlab-compiler
2个回答
0
投票
您有几种删除0的方法

    方法1:
  • a = []; for n=1:2:10 a(end+1) = 2^n; end
      方法2:
  • for n=1:2:10 a(n)=2^n; end a = a(a>0);
      方法3:
  • for n=1:2:10 if mod(n,2)==1 a((n+1)/2) = 2^n; end end

  • 1
    投票
    [当您使用不以1开头或缺少某些值的linear index时,matlab用一些0填补空白:

    因此您可以使用索引end+1

    a = []; for n=1:2:10 a(end+1)=2^n; end

    [end表示最后一个数组索引,因此end+1在您的数组中创建一个新条目。

    但是对于简单的事情,当然可以更容易地对过程进行矢量化:

    a = 2.^(1:2:10)

    其中.^是元素智能运算符。
    © www.soinside.com 2019 - 2024. All rights reserved.