дифференцирование графика

Захват, обработка и генерирование сигнала
Radioboter
interested
interested
Сообщения: 7
Зарегистрирован: 09 июл 2013, 22:06
Версия LabVIEW: 8.2
Контактная информация:

дифференцирование графика

Сообщение Radioboter »

Здравствуйте!
Помогите, пожалуйста, сделать следующее:
у меня есть точки (X ,Y) 10 штук, например. Мне нужно по этим точкам построить график, найти его производную и нарисовать в виде графика.
Meteor
user
user
Сообщения: 74
Зарегистрирован: 25 окт 2013, 17:37
Версия LabVIEW: 2012

Re: дифференцирование графика

Сообщение Meteor »

Вспоминайте геометрический смысл производной - берите две соседние точки (Xi,Yi и Xi+1,Yi+1), найдите разности dY=Yi+1-Yi и dX=Xi+1-Xi, по результатам находите dY/dX это и будет производная. Из ваших 10 исходных точек, получится 9 точек с производными. График и цикл думаю разберетесь как получить
bartex
user
user
Сообщения: 73
Зарегистрирован: 14 апр 2014, 21:09
Версия LabVIEW: 2015
Откуда: Санкт-Петербург

Re: дифференцирование графика

Сообщение bartex »

Вот два примера - вариант1 - попроще, вариант 2 -поинтересней.
В обоих вариантах решается классическая задача: скорость = путь/время.
P.S. При сохранении в версии 8.2 у меня выскакивают предупреждения, не знаю, сможете ли Вы открыть у себя программу... :shok:
Поэтому дополнительно выкладываю сканы
Вложения
Вар1.PNG
Вар1.vi
(15.17 КБ) 275 скачиваний
Вар2 бл-диагр.PNG
Вар2.vi
(30.04 КБ) 281 скачивание
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: дифференцирование графика

Сообщение Andrey Petrzhik »

Всем привет! Поставил себе задачку написать просмотрщик .dat файлов с ВАХами. ВАХи строит, а вот производную как-то по-дурацки... производную считал также как советовал bartex. Есть есть какие идеи или хотя бы догадки, буду рад услышать. Спасибо!
P.S. в приложении картинка дифференциального сопротивления (производной ВАХ) построенная по простейшему алгоритму, предложенному выше, и по алгоритму Origin'a (не знаю какому).
Изображение
Изображение
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: дифференцирование графика

Сообщение Andrey Petrzhik »

Картинки
Вложения
IV-Rd_pic.jpg
IV-Rd_origin.jpg
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: дифференцирование графика

Сообщение Andrey Petrzhik »

ВАХа пишется так: свипирую ток 0...Imax...0...-Imax...0. Если взять dat файл и вырезать все минуса + оставить только проход от 0...Imax, производная более-менее берётся. Можно конечно что-то придумать чтобы бить входные данные, но как-то не очень хочется...
Вложения
IV-Rd_pic_only_plus.jpg
subvi_IVtoRd.jpg
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: дифференцирование графика

Сообщение Andrey Petrzhik »

А вот txt-файл если кто вдруг решит поразвлекаться...
Вложения
IVC-#4-40mkm-D2-858-4K.txt
(115.42 КБ) 168 скачиваний
Аватара пользователя
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 »

Andrey Petrzhik писал(а):А вот txt-файл если кто вдруг решит поразвлекаться...
Для корректного вычисления производной (численными методами) необходимо чтобы массив (аргумента) был отсортирован по возрастанию (ну и значение функции нужно переставлять тогда).
У Вас сейчас это условие не выполняется, по этому и косяки такие.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: дифференцирование графика

Сообщение Andrey Petrzhik »

IvanLis,
т.е. я выстраиваю табличку данных по токам от -Imax до +Imax и каким то образом сохраняю привязку каждого тока к "своему" напряжению... ага, ща подумаю как бы это сделать. Спасибо!
Аватара пользователя
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 »

Andrey Petrzhik писал(а):IvanLis,
т.е. я выстраиваю табличку данных по токам от -Imax до +Imax и каким то образом сохраняю привязку каждого тока к "своему" напряжению... ага, ща подумаю как бы это сделать. Спасибо!
Нет, у вас сейчас напряжение изменяется от 0 -> min -> max -> 0
Лучше взять участок min..max, проверить на монотонность, и по нему уже строить производную.
Снимок экрана от 2018-05-23 13-42-02.png
Снимок экрана от 2018-05-23 13-42-02.png (4.82 КБ) 6431 просмотр
А Вы сейчас считаете производную от функции имеющей разрывы.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: дифференцирование графика

Сообщение Andrey Petrzhik »

Ага, да, разумно, так и сделал. Пока что руками. Оставил участок -I...+I. В нуле ещё руками вбил 0 напряжения на всякий случай. Лучше, но кривая сдвинута оказывается... что ещё не так может быть? Приложил iv-rdv.vi - тут всё и происходит, а потом передаётся в iv_ascii_tab_viewer.vi. 12я labview. Также приложил скомпилированный вариант, который откроет .dat файл по щелчку, если его в windows ассоциировать с программкой.
Вложения
minesI_to_plusI.jpg
IVC-#4-40mkm-D2-858-4Kcuted.dat.txt
(57.69 КБ) 150 скачиваний
iv_ascii_tab_viewer.vi
(116.23 КБ) 172 скачивания
iv-rdv.vi
(113.71 КБ) 161 скачивание
iv_ascii_tab_viewer.exe.txt
(515.5 КБ) 159 скачиваний
Аватара пользователя
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 »

Andrey Petrzhik писал(а):Ага, да, разумно, так и сделал. Пока что руками. Оставил участок -I...+I. В нуле ещё руками вбил 0 напряжения на всякий случай. Лучше, но кривая сдвинута оказывается... что ещё не так может быть?
Возможно Вы где-то еще накосячили, у меня все нормально получается, хотя я "0" не добавлял.
Снимок экрана от 2018-05-23 22-36-28.png
Наверняка он как раз и оказался лишним.
Искать ошибки в Вашем коде уже нет возможности.
Посмотрите, как у меня реализовано.
1.png
Untitled 1.vi
lv2010
(20.79 КБ) 152 скачивания
----------------
Я что-то глянул.... не производная у нас получилась.
Производная, это отношение изменения функции к изменению аргумента: df/dx
Тогда должно получиться нечто:
Снимок экрана от 2018-05-24 00-09-48.png
Либо исходная зависимость примет вид:
Снимок экрана от 2018-05-24 00-14-13.png
Снимок экрана от 2018-05-24 00-14-13.png (6.84 КБ) 6399 просмотров
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: дифференцирование графика

Сообщение Andrey Petrzhik »

О сколько всего... класс. У вас как-то не так сделано как у меня... пока не понял, но постараюсь разобраться. По поводу производная - не производная... У меня есть 2 колонки: нулевая это напряжение, а первая - это ток. Ток задаю (аргумент), напряжение измеряю (функция). Чтобы узнать сопротивление я делю напряжение на ток. Также могу поделить ток на напряжение, и получу проводимость. Потом уже эту проводимость переверну... сходу не соображу будет ли разница.

Да, и у вас тоже кривая вышла смещенная, а в Origin она получается практически идеально симметричная... как так не пойму... хоть я там строил по всем имеющимся в файле-исходнике точкам (не вырезал данные).

В любом случае ещё покопаю в этом направлении и отпишусь чего выйдет. dat файлов намерил куча - все фиг построишь в сторонней программе...

Спасибо за помощь!
Аватара пользователя
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 »

Andrey Petrzhik писал(а):Да, и у вас тоже кривая вышла смещенная, а в Origin она получается практически идеально симметричная... как так не пойму... хоть я там строил по всем имеющимся в файле-исходнике точкам (не вырезал данные).

В любом случае ещё покопаю в этом направлении и отпишусь чего выйдет. dat файлов намерил куча - все фиг построишь в сторонней программе..
Наверняка там используется аппарат интерполяции, аппроксимации, ресемплинга.
По этому и кривые гладкие получаются.

Но если хотите по честному, то уменьшайте шаг при измерении характеристики.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: дифференцирование графика

Сообщение Andrey Petrzhik »

Пока оставил как есть, хоть у меня и немного по-другому строит, но пока сойдёт. Алгоритм самый простейший (Вар. 1 bartex)... я скачал его и даже скопипастил себе на всякий случай... программа работает также, т.е. вроде как я не облажался;)
А вот теперь встала задачка сортировать данные автоматом. Поставил себе OpenG, и ну думаю она сама всё отсортирует... так вот не сортирует. Знатоки, подскажите пож что не так? Когда сортирую по 2й (от нуля считаем) колонке, она строит, а по 1й не строит. Неужели отрицательные значения не понимает?
Вложения
sort_2d_array.jpg
column2.jpg
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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