Выбрать с массива определенное кол-во строк зная начальный и

Простейшие вопросы в области инженерной разработки
Аватара пользователя
mnml
junior
junior
Сообщения: 57
Зарегистрирован: 24 апр 2014, 18:03
Версия LabVIEW: 16.0
Контактная информация:

Re: Выбрать с массива определенное кол-во строк зная начальн

Сообщение mnml »

Artem.spb, а по поводу массива выше вы видете что даты хаотично расположены, как быть в этом случае?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Выбрать данные из 2d массива

Сообщение Artem.spb »

mnml писал(а):Задача выбрать все строки из 2D массива по дате из первого столбца с "10.10.2016" - по "1.11.2016" (т.е. и промежуточные даты тоже 10,11,12,13 и так далее до первого числа следующего месяца)
Прошу выручайте! Спасибо!
и что же тут не получилось?
Untitled-1.png
ответ уже дан, голову сложно включить и выполнить последнее действие? перевести строки в числа и отсортировать
Artem.spb писал(а):
mnml писал(а):вот блин задача, я не пойму как сделать правильную сортировку по дате если число начинаеться не с нуля (04.10.2016), с 4.10.2016 ....
из-за этого дата с числом 27.10.2016 отображаеться после сорта выше сем за 4.10.2016
например, так
converce.png
converce.png (11.18 КБ) 9419 просмотров
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Выбрать с массива определенное кол-во строк зная начальн

Сообщение Artem.spb »

mnml писал(а):Artem.spb, а по поводу массива выше вы видете что даты хаотично расположены, как быть в этом случае?
не вижу, потому что массив пустой.
В1) отсортировать массив, найти границы диапазона и взять его.
в2) (проще) в цикле просмотреть каждую строку. Если дата в рамках диапазона (например, ф-ия inRange), взять эту строку в новый массив.
Shurik_85
beginner
beginner
Сообщения: 49
Зарегистрирован: 13 апр 2014, 18:53
Версия LabVIEW: 14
Контактная информация:

Re: Выбрать с массива определенное кол-во строк зная начальн

Сообщение Shurik_85 »

в2) (проще) в цикле просмотреть каждую строку. Если дата в рамках диапазона (например, ф-ия inRange), взять эту строку в новый массив.
вряд ли второй вариант проще, всё равно же отсортировать придётся, либо до проверки каждой строки на соответствие диапазону, либо получившийся новый массив из подходящих строк, потому что нет гарантии, что в исходном массиве строки в порядке возрастания даты. Если конечно подразумевается задача вывода искомых строк в порядке возрастания даты, а не просто вывода искомых строк.
Так что ме судя по всему так не кто и не поможет с моей проблемой, потому что я так и не решил эту задачу!
Если на пальцах, то примерно так (КАК ВАРИАНТ):
1. формируете новый массив из (например) кластеров, в которых первый (например) элемент - это дата записи, преобразованная в число или Time Stamp, а другой элемент - вся строка целиком.
2. сортируете массив кластеров по возрастанию первого в нашем случае, элемента (каким угодно способом).
3. зная необходимый диапазон дат, находите элементы массива, удовлетворяющие условиям поиска (можно "запомнить" индексы в переменную, можно вывести в отдельный массив).
4. выводите в отдельный массив строк вторые компоненты кластеров (строки целиком), удовлетворяющих условиям поиска, (определённые в п.3). Это и будет искомый массив, в котором строки будут упорядочены по возрастанию даты.
Выполнение каждого шага описывали ранее, работа с кластерами сводится к использованию функций Bundle (Budle By Name) и Unbundle (Unbundle By Name). :rtfm:
Соберите уж всё вместе самостоятельно.
А то выглядит не как "помогите мне решить задачу", а как "решите мне задачу". :nono:
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Выбрать с массива определенное кол-во строк зная начальн

Сообщение Artem.spb »

Shurik_85 писал(а):
в2) (проще) в цикле просмотреть каждую строку. Если дата в рамках диапазона (например, ф-ия inRange), взять эту строку в новый массив.
вряд ли второй вариант проще, всё равно же отсортировать придётся.
это зачем???
мой вариант делается в одно действие (в одном цикле) без промежуточных массивов
ваш вариант
Shurik_85 писал(а): 1. новый массив
2. сортируете массив
3. зная необходимый диапазон дат, находите элементы массива, удовлетворяющие условиям поиска (можно "запомнить" индексы в переменную, можно вывести в отдельный массив).
4. в отдельный массив
и интересно, как будете искать индексы (п3), в таком массиве:
1
2
3
6
7
8
25
1
4

нужны строки из диапазона 4..29?
Shurik_85
beginner
beginner
Сообщения: 49
Зарегистрирован: 13 апр 2014, 18:53
Версия LabVIEW: 14
Контактная информация:

Re: Выбрать с массива определенное кол-во строк зная начальн

Сообщение Shurik_85 »

Уважаемый Artem.spb, ЗДЕСЬ
вряд ли второй вариант проще,
имелось в виду СЛЕДУЮЩЕЕ: "вряд ли второй вариант проще ЧЕМ ПЕРВЫЙ, всё равно же отсортировать ПРИДЁТСЯ, либо до проверки каждой строки на соответствие диапазону, либо получившийся новый массив из подходящих строк, потому что нет гарантии, что в исходном массиве строки в порядке возрастания даты.ЕСЛИ конечно ПОДРАЗУМЕВАЕТСЯ задача вывода искомых строк В ПОРЯДКЕ ВОЗРАСТАНИЯ даты, А НЕ ПРОСТО ВЫВОДА искомых строк В ПОРЯДКЕ ИХ СЛЕДОВАНИЯ В ИСХОДНОМ МАССИВЕ".


А здесь:
и интересно, как будете искать индексы (п3), в таком массиве:
1
2
3
6
7
8
25
1
4

нужны строки из диапазона 4..29?
тоже всё не сложно. В предложенном мной варианте заведомо сделана оговорка "КАК ВАРИАНТ", на случай желающих покритиковать и сравнить с ЗАВЕДОМО более оптимальным, совершенным. А в пункте 2 алгоритма написано:
"2. сортируете массив кластеров ПО ВОЗРАСТАНИЮ ПЕРВОГО, в нашем случае, ЭЛЕМЕНТА (каким угодно способом)."

В УПОРЯДОЧЕННОМ массиве нет проблем с определением индексов (тоже кстати НАПРИМЕР, можно выделить индексы, можно не выделять, а сразу достать часть массива), или диапазона элементов 4..29, НАПРИМЕР.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Выбрать с массива определенное кол-во строк зная начальн

Сообщение IvanLis »

Уважаемые, истина рождается в споре, но тут ситуация совершенно иная, по крайней мере как мне видится.

Задача проста и очевидна, однако правила неоднозначны:
mnml 27 окт 2016, 14:18 писал(а):Всем привет!
Ребята прошу выручайте, помогите решить задачу!

Есть 1D массив - кол-во строк = 1115 - кол-во столбцов = 8
Задача: выбрать данные с этого массива зная - начальный = 16 и конечный = 350 индексы

Цель вывести в таблицу все строки по первому столбцу (дата)

Например: c 4.10.2016 по 27.10.2016

Спасибо!
Все зависит от цели, которую преследует автор.
Решение у задачи есть и неоднократно указывалось.

Либо он совершенно не хочет напрячь "серое вещество" и доделать сам, либо это банальный троллинг.
Дискуссия ведется с 27 октября, в теме уже больше 50 постов, из которых 18 написал автор :dntknw:
Аватара пользователя
mnml
junior
junior
Сообщения: 57
Зарегистрирован: 24 апр 2014, 18:03
Версия LabVIEW: 16.0
Контактная информация:

Выборка данных с массива по временному интервалу

Сообщение mnml »

Здравствуйте, уважаемые инженеры!
Столкнулся с проблемой следующего характера:

Есть файл CSV (Прикреплен ниже)
Задача: Выбрать с файла все строки с интервалом по времени , а именно с 08:00:00 по 20:00:00

Файл для считывания также прикреплен в низу!

Большое спасибо за помощь!
Вложения
all_data.csv
Файл с данными
(38.11 КБ) 125 скачиваний
Logs.zip
Примеры проекта для LV 2010, 2013, 2015, 2016
(95.73 КБ) 122 скачивания
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Выборка данных с массива по временному интервалу

Сообщение zxc_pavel »

Просто выбрать строки >=8 и <=19
Вложения
log.vi
(19.92 КБ) 147 скачиваний
Аватара пользователя
mnml
junior
junior
Сообщения: 57
Зарегистрирован: 24 апр 2014, 18:03
Версия LabVIEW: 16.0
Контактная информация:

Re: Выборка данных с массива по временному интервалу

Сообщение mnml »

zxc_pavel? спасибо вам большое
Аватара пользователя
mnml
junior
junior
Сообщения: 57
Зарегистрирован: 24 апр 2014, 18:03
Версия LabVIEW: 16.0
Контактная информация:

Re: Выборка данных с массива по временному интервалу

Сообщение mnml »

Павел, подскажите, а если я укажу теперь не с 8 утра до 8 вечера, а с 8 вечера до 8 утра, он не отображает данные!
Не подскажите почему ?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Выборка данных с массива по временному интервалу

Сообщение IvanLis »

mnml писал(а):Здравствуйте, уважаемые инженеры!
Столкнулся с проблемой следующего характера:

Есть файл CSV (Прикреплен ниже)
Задача: Выбрать с файла все строки с интервалом по времени , а именно с 08:00:00 по 20:00:00

Файл для считывания также прикреплен в низу!

Большое спасибо за помощь!
Вы правильно отметили, "инженеры", а не маразматики!
По этому не будем плодить пустые сущности.
Перечитываем тему с самого первого поста и следуем рекомендациям.
Аватара пользователя
mnml
junior
junior
Сообщения: 57
Зарегистрирован: 24 апр 2014, 18:03
Версия LabVIEW: 16.0
Контактная информация:

Re: Выбрать с массива определенное кол-во строк зная начальн

Сообщение mnml »

Так мне кто-то поможет с моим вопросом ?

Если делать выборкув массиве с интервалом 08:00:00 - 20:00:00 - все работает, а вот как реализовать выборку с интервалом 20:00:00 - 08:00:00 ?

Пожалуйста помогите!
Аватара пользователя
mnml
junior
junior
Сообщения: 57
Зарегистрирован: 24 апр 2014, 18:03
Версия LabVIEW: 16.0
Контактная информация:

Re: Выбрать с массива определенное кол-во строк зная начальн

Сообщение mnml »

Вот поподробнее :

Нужно:

Выбрать данные с 02.03.2017 - по 03.03.2017 с временным интервалом с 20:00:00 - 08:00:00

Получается мы должны получить данные:

за 02.03.2017 с 20:00:00 - 23:59:59
за 03.03.2017 с 00:00:00 - 07:59:59
за 03.03.2017 с 20:00:00 - 23:59:59

если сделать <8 или >=20 то получается программа выдерает данные с 00:00:00 - 07:59:59 - за второе число, а это уже другая смена с 1-ого числа по 2-ое число

Как это реализовать ?

Пожалуйста помогите!
Вложения
Get_Array_Values_by_Time_Period_Night.vi
Выборка с файла
(21.86 КБ) 120 скачиваний
all_data.csv
Файл с данными
(279.85 КБ) 120 скачиваний
Аватара пользователя
mnml
junior
junior
Сообщения: 57
Зарегистрирован: 24 апр 2014, 18:03
Версия LabVIEW: 16.0
Контактная информация:

Re: Выбрать с массива определенное кол-во строк зная начальн

Сообщение mnml »

Так что есть у кого, кие-то мысли ?
Прикрепляю проект целиком для наглядного примера!
Вложения
Master Project 2010.zip
Проект целиком LV2010
(1.55 МБ) 121 скачивание
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»