Как устранить нежелательные 0s при использовании для l oop (MATLAB)? - PullRequest
0 голосов
/ 13 января 2020

В качестве заголовка я пишу эти коды:

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?

Ответы [ 2 ]

2 голосов
/ 13 января 2020

Когда вы используете линейный индекс , который не начинается с 1 или пропускает некоторое значение, Matlab заполняет пробел некоторыми 0:

Таким образом, вы можете использовать индекс end+1:

a = [];

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

end указывает на индекс последнего массива, поэтому end+1 создайте новую запись в вашем массиве.

Но для чего-то такого простого, конечно, проще векторизовать процесс:

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

Где .^ - поэлементный оператор мощности.

1 голос
/ 13 января 2020

У вас есть несколько способов удалить нули

  • Метод 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...