Привет!
Вот что то не могу сделать, наверное пора домой идти уже.
Проблема такая. Есть массив с некими числами. Этот массив я просортировал уже, теперь мне надо разбить его на подмассивы по одинаковости. Т.е. например имеется:
55
55
66
66
66
99
должно получится три массива:
55
55
66
66
66
99
Как это сделать? На всякий случай выкладываю картинку, я конечно обьяснил упрощённо.
Заранее спасибо.
Разбивание массива
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
-
Korotenko
- developer
- Сообщения: 286
- Зарегистрирован: 25 июл 2008, 10:43
- Награды: 1
- Версия LabVIEW: 2009
- Откуда: Россия, Владивосток
- Контактная информация:
Re: Разбивание массива
из теории ...: группа элементов называется одинаковой, если у всех элементов группы имеется некоторый общий признак
в данном случае - шаблоны 55, 66 или 99
если ещё не решил проблему - возможно помогу
в данном случае - шаблоны 55, 66 или 99
если ещё не решил проблему - возможно помогу
I work in LabVIEW 2009 !
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Разбивание массива
Ну вот, решил, но всё оказалось не так просто и даже можно запутаться что к чему. Я сделал в общем три прибора. Стартовать "Sort.vi"
- Вложения
-
- Sort.zip
- LV 8.0
- (39.65 КБ) 181 скачивание
-
Korotenko
- developer
- Сообщения: 286
- Зарегистрирован: 25 июл 2008, 10:43
- Награды: 1
- Версия LabVIEW: 2009
- Откуда: Россия, Владивосток
- Контактная информация:
Re: Разбивание массива
для VRUs_Sort.vi и VRUs_SortByCanId.vi необходим CanFrameTimed.ctl, поэтому не запускается
В VRUs_SortBySensId.vi забей данные по умолчанию, тогда что-нить скажу, а то не очень понятно
В VRUs_SortBySensId.vi забей данные по умолчанию, тогда что-нить скажу, а то не очень понятно
I work in LabVIEW 2009 !
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Разбивание массива
Хм, возможно не совсем точно понял суть вопроса, но если одинаковые числа идут последовательно и их сколько угодно, то берем первое число, транспонируем массив и используем Search Array, таким образом знаем начальный и конечный индекс набора одинаковых елементов- вырезаем их и т.д. до победного конца.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Разбивание массива
Обьясни пожалуйста поподробнее, может быть с примером.
А я, дизконектил контрол, теперь я думаю можно стартовать.
А я, дизконектил контрол, теперь я думаю можно стартовать.
- Вложения
-
- Sortieren.zip
- LV 8.0
- (39.33 КБ) 185 скачиваний
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Разбивание массива
Допустим есть массив (a0..an b0...bm c0...ck), должно получиться (a0...an) (b0...bm) (c0...ck), так?
В таком случае, берем элемент a0, транспонируем исходный массив, применяем к нему Search Array по элементу a0- получаем индекс первого вхождения a0 в транспонированном массиве (номер x), тогда в исходном массиве это номер n+m+k+3-x, далее применяем Delete from array с 0 индекса, длиной n+m+k+3-x+1, далее рекурсивно.
Можно в цикле идти по заданному элементу и последовательно удалять из массива эквивалентные заданному элементы, потом брать следующий и повторять процедуру.
В таком случае, берем элемент a0, транспонируем исходный массив, применяем к нему Search Array по элементу a0- получаем индекс первого вхождения a0 в транспонированном массиве (номер x), тогда в исходном массиве это номер n+m+k+3-x, далее применяем Delete from array с 0 индекса, длиной n+m+k+3-x+1, далее рекурсивно.
Можно в цикле идти по заданному элементу и последовательно удалять из массива эквивалентные заданному элементы, потом брать следующий и повторять процедуру.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 5 Ответы
- 986 Просмотры
-
Последнее сообщение seromax
-
- 2 Ответы
- 391 Просмотры
-
Последнее сообщение Sergey Puzanov