#arrays #matlab
Вопрос:
У меня есть массивы с двумя столбцами данных. Второй столбец будет начинаться и заканчиваться неизвестным количеством нулей, и я хочу вырезать эти строки из своего массива, оставив только ненулевые члены. (Для ясности я хочу удалить как нуль, так и данные в первом столбце).
Как мне это сделать?
Спасибо
Ответ №1:
Скажи, что у тебя есть
a = [1 0
2 0
3 1
4 6
5 0
6 9
7 0
8 0];
Вы можете найти первый и последний ненулевые элементы (из 2-го столбца) с
idx = a(:,2) ~= 0;
first = find(idx,1);
last = find(idx,1,'last');
Затем удалите строки до и после
b = a(first:last,:);
В этом примере ноль в середине остается нетронутым обрезкой (в отличие от того, если бы мы это сделали b = a(a(:,2)~=0,:)
), и вы получаете
b = [3 1
4 6
5 0
6 9]