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

Простейшие вопросы в области инженерной разработки

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

Postby mnml on 07 Nov 2016, 15:23

Artem.spb, а по поводу массива выше вы видете что даты хаотично расположены, как быть в этом случае?
User avatar
mnml
beginner
beginner
 
Posts: 40
Joined: 24 Apr 2014, 18:03
LabVIEW Version: 16.0
Karma: 5

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

Postby Artem.spb on 07 Nov 2016, 20:47

mnml wrote:Задача выбрать все строки из 2D массива по дате из первого столбца с "10.10.2016" - по "1.11.2016" (т.е. и промежуточные даты тоже 10,11,12,13 и так далее до первого числа следующего месяца)
Прошу выручайте! Спасибо!

и что же тут не получилось?
Untitled-1.png


ответ уже дан, голову сложно включить и выполнить последнее действие? перевести строки в числа и отсортировать
Artem.spb wrote:
mnml wrote:вот блин задача, я не пойму как сделать правильную сортировку по дате если число начинаеться не с нуля (04.10.2016), с 4.10.2016 ....
из-за этого дата с числом 27.10.2016 отображаеться после сорта выше сем за 4.10.2016

например, так
converce.png
converce.png (11.18 KiB) Viewed 2094 times

Artem.spb
expert
expert
 
Posts: 1162
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 211
CLD hardware I/O VIP freelance

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

Postby Artem.spb on 07 Nov 2016, 21:08

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

не вижу, потому что массив пустой.
В1) отсортировать массив, найти границы диапазона и взять его.
в2) (проще) в цикле просмотреть каждую строку. Если дата в рамках диапазона (например, ф-ия inRange), взять эту строку в новый массив.
Artem.spb
expert
expert
 
Posts: 1162
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 211
CLD hardware I/O VIP freelance

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

Postby Shurik_85 on 09 Nov 2016, 11:52

в2) (проще) в цикле просмотреть каждую строку. Если дата в рамках диапазона (например, ф-ия inRange), взять эту строку в новый массив.

вряд ли второй вариант проще, всё равно же отсортировать придётся, либо до проверки каждой строки на соответствие диапазону, либо получившийся новый массив из подходящих строк, потому что нет гарантии, что в исходном массиве строки в порядке возрастания даты. Если конечно подразумевается задача вывода искомых строк в порядке возрастания даты, а не просто вывода искомых строк.

Так что ме судя по всему так не кто и не поможет с моей проблемой, потому что я так и не решил эту задачу!

Если на пальцах, то примерно так (КАК ВАРИАНТ):
1. формируете новый массив из (например) кластеров, в которых первый (например) элемент - это дата записи, преобразованная в число или Time Stamp, а другой элемент - вся строка целиком.
2. сортируете массив кластеров по возрастанию первого в нашем случае, элемента (каким угодно способом).
3. зная необходимый диапазон дат, находите элементы массива, удовлетворяющие условиям поиска (можно "запомнить" индексы в переменную, можно вывести в отдельный массив).
4. выводите в отдельный массив строк вторые компоненты кластеров (строки целиком), удовлетворяющих условиям поиска, (определённые в п.3). Это и будет искомый массив, в котором строки будут упорядочены по возрастанию даты.
Выполнение каждого шага описывали ранее, работа с кластерами сводится к использованию функций Bundle (Budle By Name) и Unbundle (Unbundle By Name). :rtfm:
Соберите уж всё вместе самостоятельно.
А то выглядит не как "помогите мне решить задачу", а как "решите мне задачу". :nono:
Shurik_85
beginner
beginner
 
Posts: 43
Joined: 13 Apr 2014, 18:53
LabVIEW Version: 14
Karma: 6

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

Postby Artem.spb on 09 Nov 2016, 12:25

Shurik_85 wrote:
в2) (проще) в цикле просмотреть каждую строку. Если дата в рамках диапазона (например, ф-ия inRange), взять эту строку в новый массив.

вряд ли второй вариант проще, всё равно же отсортировать придётся.

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


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

нужны строки из диапазона 4..29?
Artem.spb
expert
expert
 
Posts: 1162
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 211
CLD hardware I/O VIP freelance

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

Postby Shurik_85 on 09 Nov 2016, 15:42

Уважаемый Artem.spb, ЗДЕСЬ
вряд ли второй вариант проще,

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


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

нужны строки из диапазона 4..29?

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

В УПОРЯДОЧЕННОМ массиве нет проблем с определением индексов (тоже кстати НАПРИМЕР, можно выделить индексы, можно не выделять, а сразу достать часть массива), или диапазона элементов 4..29, НАПРИМЕР.
Shurik_85
beginner
beginner
 
Posts: 43
Joined: 13 Apr 2014, 18:53
LabVIEW Version: 14
Karma: 6

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

Postby IvanLis on 09 Nov 2016, 16:44

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

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

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

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

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

Спасибо!

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

Либо он совершенно не хочет напрячь "серое вещество" и доделать сам, либо это банальный троллинг.
Дискуссия ведется с 27 октября, в теме уже больше 50 постов, из которых 18 написал автор :dntknw:
User avatar
IvanLis
professor
professor
 
Posts: 4404
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 680
hardware VIP bloggers teachers

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

Postby mnml on 22 Mar 2017, 12:37

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

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

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

Большое спасибо за помощь!
Attachments
all_data.csv
Файл с данными
(38.11 KiB) Downloaded 33 times
Logs.zip
Примеры проекта для LV 2010, 2013, 2015, 2016
(95.73 KiB) Downloaded 28 times
User avatar
mnml
beginner
beginner
 
Posts: 40
Joined: 24 Apr 2014, 18:03
LabVIEW Version: 16.0
Karma: 5

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

Postby zxc_pavel on 22 Mar 2017, 13:13

Просто выбрать строки >=8 и <=19
Attachments
log.vi
(19.92 KiB) Downloaded 31 times
zxc_pavel
junior
junior
 
Posts: 58
Joined: 02 Jun 2016, 12:07
LabVIEW Version: 14
Karma: 63

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

Postby mnml on 22 Mar 2017, 13:40

zxc_pavel? спасибо вам большое
User avatar
mnml
beginner
beginner
 
Posts: 40
Joined: 24 Apr 2014, 18:03
LabVIEW Version: 16.0
Karma: 5

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

Postby mnml on 22 Mar 2017, 13:45

Павел, подскажите, а если я укажу теперь не с 8 утра до 8 вечера, а с 8 вечера до 8 утра, он не отображает данные!
Не подскажите почему ?
User avatar
mnml
beginner
beginner
 
Posts: 40
Joined: 24 Apr 2014, 18:03
LabVIEW Version: 16.0
Karma: 5

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

Postby IvanLis on 22 Mar 2017, 14:48

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

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

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

Большое спасибо за помощь!


Вы правильно отметили, "инженеры", а не маразматики!
По этому не будем плодить пустые сущности.
Перечитываем тему с самого первого поста и следуем рекомендациям.
User avatar
IvanLis
professor
professor
 
Posts: 4404
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 680
hardware VIP bloggers teachers

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

Postby mnml on 23 Mar 2017, 10:23

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

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

Пожалуйста помогите!
User avatar
mnml
beginner
beginner
 
Posts: 40
Joined: 24 Apr 2014, 18:03
LabVIEW Version: 16.0
Karma: 5

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

Postby mnml on 23 Mar 2017, 10:59

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

Нужно:

Выбрать данные с 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-ое число

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

Пожалуйста помогите!
Attachments
Get_Array_Values_by_Time_Period_Night.vi
Выборка с файла
(21.86 KiB) Downloaded 32 times
all_data.csv
Файл с данными
(279.85 KiB) Downloaded 29 times
User avatar
mnml
beginner
beginner
 
Posts: 40
Joined: 24 Apr 2014, 18:03
LabVIEW Version: 16.0
Karma: 5

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

Postby mnml on 23 Mar 2017, 12:35

Так что есть у кого, кие-то мысли ?
Прикрепляю проект целиком для наглядного примера!
Attachments
Master Project 2010.zip
Проект целиком LV2010
(1.55 MiB) Downloaded 31 times
User avatar
mnml
beginner
beginner
 
Posts: 40
Joined: 24 Apr 2014, 18:03
LabVIEW Version: 16.0
Karma: 5

PreviousNext

Return to Для чайников

Who is online

Users browsing this forum: Yandex and 2 guests

cron