Построение двух графиков при помощи XY Graph

Захват, обработка и генерирование сигнала
Ответить
Булат
interested
interested
Сообщения: 5
Зарегистрирован: 24 фев 2014, 21:56
Версия LabVIEW: 7
Контактная информация:

Построение двух графиков при помощи XY Graph

Сообщение Булат »

Народ помогите, плиз. Для наглядности решения заданной задачи необходимо построить 2 пересекающих графика на одном графопостроители. Что только не пробывал, просмотрел кучу Exampl'ов. Моя задача примерна схожа с нижепредставленной. Как сделать чтоб каждый график строился как самостоятельный график и была видно точка пересечения графиков. Буду благодарен.
Вложения
То что получилось сделать у меня. Графопостроитель берет через раз то значение одной переменной, то другой, независимо строить не выходит
То что получилось сделать у меня. Графопостроитель берет через раз то значение одной переменной, то другой, независимо строить не выходит
Аватара пользователя
alerm

Activity
leader
leader
Сообщения: 683
Зарегистрирован: 02 май 2012, 21:28
Награды: 1
Версия LabVIEW: 20
Благодарил (а): 59 раз
Поблагодарили: 9 раз
Контактная информация:

Re: Построение двух графиков при помощи XY Graph

Сообщение alerm »

Снимок_.JPG
Булат
interested
interested
Сообщения: 5
Зарегистрирован: 24 фев 2014, 21:56
Версия LabVIEW: 7
Контактная информация:

Re: Построение двух графиков при помощи XY Graph

Сообщение Булат »

Спасибо большое, но встает еще один вопрос. Почему построение возможно только в цикле For Loop? цикл While Loop в этом случае не годный.
Artem.spb

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

Re: Построение двух графиков при помощи XY Graph

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

Булат писал(а):Спасибо большое, но встает еще один вопрос. Почему построение возможно только в цикле For Loop? цикл While Loop в этом случае не годный.
можно включить индексацию массива на выходном туннеле (правой кнопкой на него, там вместо "последнего значения" выбрать индексацию), но это плохо, потому что это издевательство над памятью. For Loop знает, сколько раз выполнится, и сразу выделяет место под массив. While же на каждой итерации создаёт новый массив.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Построение двух графиков при помощи XY Graph

Сообщение Borjomy_1 »

Можно и в цикле While, только вывод на граф надо делать на каждой итерации, как и добавление новых точек в массивы. Используйте Shift регистры для хранения массивов. И не забудьте добавить перед входом в цикл инициализацию пустыми массивами.
Булат
interested
interested
Сообщения: 5
Зарегистрирован: 24 фев 2014, 21:56
Версия LabVIEW: 7
Контактная информация:

Re: Построение двух графиков при помощи XY Graph

Сообщение Булат »

Спасибо за объяснения, наверно будет проще использовать цикл For Loop.
Булат
interested
interested
Сообщения: 5
Зарегистрирован: 24 фев 2014, 21:56
Версия LabVIEW: 7
Контактная информация:

Re: Построение двух графиков при помощи XY Graph

Сообщение Булат »

продолжая тему, взяв такой простой пример, необходимо вывести точку пересечения двух графиков в виде индикатора или другим способом, но главное чтоб выдавалось самое первое значение, при котором один график становится выше другого, пробывал через операции с массивами. получается что выдает все значения при котором график становится выше другого, посоветуйте что нибудь полезное))
Meteor
user
user
Сообщения: 74
Зарегистрирован: 25 окт 2013, 17:37
Версия LabVIEW: 2012

Re: Построение двух графиков при помощи XY Graph

Сообщение Meteor »

Можно поступить так:
1) создаем одномерный массив признаков, которые показывают когда Y1>Y2(или наоборот);(результатом станет последовательность, например 0 0 0 0 0 0 1 1 1 1 1)
2) циклом по длине созданного массива минус один (x=1...xm-1), находим границу перехода между 0 и 1. В строке выше это точки 6 и 7. Для этого сравниваем значения xi-1 и xi, если они равны между собой (xi-1=xi), то ставим 0, иначе 1.
Теперь остается только вывести ту пару, для которой результат шага 2 будет ненулевым.
Этот пример будет работать столько раз, сколько есть точек пересечения. Если нужна только первая или Nная, то надо просто добавить счетчик числа переходов и строить график с учетом детектора и счетчика
Artem.spb

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

Re: Построение двух графиков при помощи XY Graph

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

зачем такие сложности?
после шага 1 вызвать функцию "поиск в 1д массиве", она и сообщит первое значение (индекс) Т в заданном массиве.
дальше по индексу точки находятся координаты.
Meteor
user
user
Сообщения: 74
Зарегистрирован: 25 окт 2013, 17:37
Версия LabVIEW: 2012

Re: Построение двух графиков при помощи XY Graph

Сообщение Meteor »

зачем такие сложности?
после шага 1 вызвать функцию "поиск в 1д массиве", она и сообщит первое значение (индекс) Т в заданном массиве.
Забыл об этой функции, потому и сложно решил.
bartex
user
user
Сообщения: 73
Зарегистрирован: 14 апр 2014, 21:09
Версия LabVIEW: 2015
Откуда: Санкт-Петербург

Re: Построение двух графиков при помощи XY Graph

Сообщение bartex »

Artem.spb Вчера, 02:08
зачем такие сложности?
после шага 1 вызвать функцию "поиск в 1д массиве", она и сообщит первое значение (индекс) Т в заданном массиве.
дальше по индексу точки находятся координаты.
Так то оно, конечно так, но есть одна тонкость. Если на графике функции имеются резко нелинейные участки, значение функции может очень сильно измениться между двумя соседними индексами. И тогда координаты места превышения одного графика над другим будет указано неточно.
Для уточнения места превышения (ну или точек пересечения графиков, если нужно) можно воспользоваться :vi: Interpolate 1D Array
Я вот сляпал пример (во вложении), показывающий разницу в результатах при использовании грубой и более точной оценке координат превышения одной кривой над другой с использованием этой :vi: .
Вложения
Снимок.PNG
Точки превышения.vi
(24.03 КБ) 362 скачивания
Artem.spb

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

Re: Построение двух графиков при помощи XY Graph

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

bartex писал(а):Так то оно, конечно так, но есть одна тонкость. Если на графике функции имеются резко нелинейные участки, значение функции может очень сильно измениться между двумя соседними индексами.
учитесь читать ТЗ :)
Булат писал(а):но главное чтоб выдавалось самое первое значение, при котором один график становится выше другого.
только поэтому я не стал предлагать интерполяцию - её не было в задании.
Булат
interested
interested
Сообщения: 5
Зарегистрирован: 24 фев 2014, 21:56
Версия LabVIEW: 7
Контактная информация:

Re: Построение двух графиков при помощи XY Graph

Сообщение Булат »

Спасибо большое за то что откликнулись) очень благодарен) буду пробывать предложенные решения :wink:
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Обработка сигнала»