#arrays #matlab #loops #if-statement #cell
#массивы #matlab #циклы #if-оператор #ячейка
Вопрос:
Вопрос 1: У меня есть массив размером 1×15, состоящий из положительных целых и отрицательных целых чисел. Я хочу реализовать код MATLAB, который сохраняет все положительные целые числа и пропускает ячейки с отрицательным содержимым.
Я попробовал следующее:
X = [1 2 3 4 5 -10 1 -5 4 6 8 9 2 4 -2];
[r c] = size(X);
for i=1:r
for j=1:c
if X(i,j)<0
X(i,j)=X(i,j 1)
end
end
end
Вывод должен быть:
X_new = [1 2 3 4 5 1 4 6 8 9 2 4]
Как мне это сделать?
Вопрос 2:
X = [1 2 3 4 5 -10 1 -5 4 6 8 9 2 4 -2]
Y = [5 3 8 9 4 5 6 7 4 7 9 5 2 1 4]
Из вопроса 1,
X_new = [1 2 3 4 5 1 4 6 8 9 2 4]
Мне нужно удалить соответствующие значения, Y
чтобы:
Y_new = [5 3 8 9 4 6 4 7 9 5 2 1]
Как мне это выполнить?
Ответ №1:
В MATLAB манипулирование массивами и матрицами может быть выполнено намного проще, чем решения for-loop, в вашей задаче вы можете найти и удалить отрицательное значение в массиве, просто следующим образом:
Idx_neg = X < 0; % finding X indices corresponding to negative elements
X ( Idx_neg ) = []; % removing elements using [] operator
Y ( Idx_neg ) = []; % removing corresponding elements in Y array
Комментарии:
1. Y(X<0) = []; не работает. Это не дает мне желаемого массива.