Удаление столбцов в массиве с нулями - PullRequest
3 голосов
/ 22 марта 2012

У меня есть массив, который начинается с нулей и продолжается до других чисел. Я хотел бы удалить столбцы в массиве, которые начинаются с нуля, но оставить другие числа

Пример массива столбцов ниже:

x = [0 0 0 0 0 2 4 6 8 0 1 2];

Ответ массива столбцов будет выглядеть как

x = 2 4 6 8 0 12

Я использую октаву 3.4.2 / matlab

Спасибо

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Вот код:

x = x(find(x~=0, 1):end);

или

x(1:find(x~=0,1)-1) = [];
1 голос
/ 22 марта 2012

Логическое индексирование будет работать в этом случае просто отлично, т.е.

y = x(:,x(1,:)~=0)

выполнит эту работу за вас.Внутреннее логическое сравнение x(1,:)~=0 возвращает true для каждого столбца, первый элемент которого не равен нулю.При операции индексирования x(:,...) выбираются только те столбцы, для которых логическое сравнение вернуло значение true.

1 голос
/ 22 марта 2012

Команда find должна работать для этого.

Предполагая, что ваш вектор равен x:

 find(x ~= 0)

Вернет все индексы, где x не равен нулю.Просто возьмите первый индекс и оттуда удалите все значения от 1 до индекса.

...