2017-01-06 10 views
0

У меня есть один массив чисел, как показано ниже.Labview: сортировка массива 1D после удаления минусовых чисел и дубликатов

enter image description here

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

enter image description here

Как я могу это сделать?

ответ

2

Это делает работу:

  • Сортировать массив
  • Найти 0 и сократить массив
  • Вычтите повернута массив, чтобы найти двойников (= 0)
  • удалить удваивает

Block Diagram

Front Panel

1

Если не было необходимости реальной эффективности, я бы снимать для простоты и читаемости:

  1. Сортировка массива
  2. Кормят в цикл с условной конкатенации терминала
    1. Используйте узел обратной связи для получения последнего значения
    2. Если это значение> 0 и! = До последнего значения, отправьте true на терминал конкатенации.

Вы могли бы всегда и> 0 в и! = Тесты вместе и провода, которые непосредственно к конкатенации терминала.

Выходной массив из цикла for будет тем, что вы ищете.

1

Мне нравится использовать Vivien Threshold 1D Array и Array Subset, чтобы удалить отрицательные значения, но поворот и вычитание перед удалением нулей кажется излишне сложным. Вот решение с For цикла, регистр сдвига и условной индексации:

LabVIEW 2014 VI snippet (drag and drop on the VI block diagram)

Обратите внимание, что мы должны инициализировать сдвиговый регистр с чем-то, или он будет помнить данные из предыдущего запуска, давая нежелательное поведение (то же самое было бы верно для узла обратной связи) - поэтому мы гарантируем, что первый элемент массива всегда будет включен, гарантируя, что значение инициализации не равно первому элементу.