Проблема, с которой вы сталкиваетесь, может быть проиллюстрирована следующим образом:
vec = [1, 2, 3];% assuming a given vector vec, length = 3
vec(2) = 5; % no problem
vec = [1, 5, 3];
vec(2) = [];% vec length is 2
vec = [1, 3];
vec(3) = 10; % not allowed
%% index out of range since the length of vec is 2
Альтернатива
- Вместо удаления ячеек с первого места
- заполните их
nan
- , затем удалите все ячейки с помощью
nan
Код выглядит так:
N = 6;
vec2 = ones(1,N);
vec = ones(1,N) * -1;
for i = 1:N
num = input('Enter an integer: ');
if num >= 0
vec(i) = num;
else
vec2(i) = num;
end
if sign(vec(i)) == -1
vec(i) = nan;
end
if sign(vec2(i)) == 1
vec2(i) = nan;
end
end
%% remove nan
vec = vec(~isnan(vec));
vec2 = vec2(~isnan(vec2));