N кривых на XY Graph

Обсуждение вопросов, связанных с обработкой аудио и видео информации
Ответить
Дмитрий
beginner
beginner
Сообщения: 24
Зарегистрирован: 02 ноя 2008, 17:12
Версия LabVIEW: 7.5
Контактная информация:

N кривых на XY Graph

Сообщение Дмитрий »

помогите пожалуйста. нечто подобное затрагивалось здесь, но, полагаю, что лучше будет вынести вопрос в отдельную ветку.
ниже - пример программы одновременного отображения трех массивов данных (три разных Y) на одном графике в режиме "текущего времени". внимание, вопрос: как решить подобную задачу, но для произвольного количества кривых (вводимых пользователем)? отображение должно происходить "онлайн", а не постфактум.
просьба выкладывать скрины кода, а не vi (у меня LV7.0). спасибо.
Вложения
mixGraph.png
mixGraph.vi
(47.52 КБ) 200 скачиваний
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: N кривых на XY Graph

Сообщение Konstantin Sumenko »

Create->Property node->Legend->Plots Shown
Аватара пользователя
Forward

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: N кривых на XY Graph

Сообщение Forward »

здесь
Дмитрий писал(а):а как сделать обратную задачу - т.е. как в примере выше, но нужно, чтобы количество кривых задавалось N для for loop, а длина всех кривых уже бы определялась условием из while loop. при этом, чтобы N графиков строилось одновременно
Если тебе нужно строить ступенчатые массивы, то делается это точно так же с использованием XY-graph.
graph1.png
graph1.png (3.96 КБ) 5569 просмотров
Дмитрий писал(а):как решить подобную задачу, но для произвольного количества кривых (вводимых пользователем)? отображение должно происходить "онлайн", а не постфактум
Для твоего примера больше подходит обычный Waveform Chart, а не Graph. Например, вот так:
chart.png
Естественно, в качестве управляющих сигналов не обязательно использовать булевский массив.
Ну еще можно просто не отображать все кривые на графике, используя свойство Plot-->Visible. Задаешь номер активного графика и далее указываешь показывать его или нет. Возможно это и имел ввиду Crowbar:
visible.png
visible.png (1.7 КБ) 5567 просмотров
Дмитрий
beginner
beginner
Сообщения: 24
Зарегистрирован: 02 ноя 2008, 17:12
Версия LabVIEW: 7.5
Контактная информация:

Re: N кривых на XY Graph

Сообщение Дмитрий »

спасибо. вэйвформ не подходит, т.к. по оси х должен быть сигнал, поступающий из прибора (не время). попробую вариант с Legend->Plots Shown.
Дмитрий
beginner
beginner
Сообщения: 24
Зарегистрирован: 02 ноя 2008, 17:12
Версия LabVIEW: 7.5
Контактная информация:

Re: N кривых на XY Graph

Сообщение Дмитрий »

ммм. все-таки Active plot скорее. только как его подключить, чтобы правильно работал?
Вложения
diagram.PNG
Аватара пользователя
Forward

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: N кривых на XY Graph

Сообщение Forward »

1) Если ты планируешь в каждой итерации собирать по одному значению и постоянно допихивать это значение в массив, то это не есть хорошо :rtfm:.
2) Active Plot - это ты задаешь номер активного графика (над которым ты хочешь произвести какое-то действие в дальшейшем) и только. Дальше надо указать что ты хочешь с ним сделать - например, не прорисовываться. Потом (если нужно) меняешь активный график и делаешь что-либо с ним и т.п. Смотри пример.
Вложения
visible2.png
Дмитрий
beginner
beginner
Сообщения: 24
Зарегистрирован: 02 ноя 2008, 17:12
Версия LabVIEW: 7.5
Контактная информация:

Re: N кривых на XY Graph

Сообщение Дмитрий »

после каждой итерации в массив добавляется не одно значение, а N+1, и эти N должны быть добавлены в виде новых точек на графе в свои соответствующие кривые (см. мой первый пример - там N равно трем, и с каждой итерацией добавляются новые точки к соответствующим кривым).
хорошо, согласен что переписывание массива каждый раз с добавлением нового значения не гут, но как по-другому?
Аватара пользователя
Forward

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: N кривых на XY Graph

Сообщение Forward »

А что за задача, что нужно по приходу новых данных отображать все старые? и до каких пор ты собираешь набивать массив? Память ведь не бесконечна...
Дмитрий
beginner
beginner
Сообщения: 24
Зарегистрирован: 02 ноя 2008, 17:12
Версия LabVIEW: 7.5
Контактная информация:

Re: N кривых на XY Graph

Сообщение Дмитрий »

задача простая - есть эксперимент, где с прибора происходит сбор данных в зависимости от температуры (шкала X). данные - диэлектрический отклик образца при определенной частоте. набор частот задается пользователем произвольно (то самое - N, может быть любым). так вот, необходимо мониторить процесс "на лету", отображая поступающие данные при всех наборах частот от текущей температуры. обображать какую-то одну произвольную частоту - проблем нет. но как сделать, чтобы все частоты на одном графе показывались? это очень желательно, т.к. можно увидеть возможные аномалии диэлектрического отклика на каких-то частотах (в то время как на других этого не будет видно).
вообще, уже подумываю вместо графа использовать Picture - там вроде попроще это можно реализовать. что посоветуете в плане экономии ресурсов - комп старенький.
Аватара пользователя
Forward

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: N кривых на XY Graph

Сообщение Forward »

Дмитрий писал(а):вообще, уже подумываю вместо графа использовать Picture - там вроде попроще это можно реализовать. что посоветуете в плане экономии ресурсов - комп старенький.
Picture вместо графа - не лучший вариант :nono: Чем граф не устраивает-то?
Экономия ресурсов? Проблемы с быстродействием при сборе в зависимости от температуры? В чем они выражаются: какая-то мощная обработка? И насколько стар комп? Вообще в первую очередь стоит посмотреть на собственный код. :labview: это в первую очередь экономия времени и сил разработчика, а не ресурсов, ибо ресурсов у современных ПК полно. Прога на чистом WinAPI будет работать в разы быстрее, но придут бессонные ночи... :wink:

У тебя в массив добавляется именно одно значение, а не N+1. Если я правильно понял, то N - это размер буфера, который приходит с устройтсва и он задается пользователем. Каждый элемент этого буфера есть отклик образца при различных частотах и каждый элемент это отдельная кривая на графике? Если так, то во-первых почитай вот эту тему про самописец: /viewtopic.php?f=106&t=114. Обрати внимание, что размер буфера не бесконечен. А в случае нескольких кривых самый простой способ как уже было сказано - это всегда собирать максимальное N (если оно не слишком большое конечно), а отображать лишь избранные кривые по запросу пользоваля с помощью свойства Visible.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Работа с графикой и звуком»