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

Захват, обработка и генерирование сигнала

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

Postby Radioboter on 11 Feb 2015, 16:23

Здравствуйте!
Помогите, пожалуйста, сделать следующее:
у меня есть точки (X ,Y) 10 штук, например. Мне нужно по этим точкам построить график, найти его производную и нарисовать в виде графика.
Radioboter
interested
interested
 
Posts: 7
Joined: 09 Jul 2013, 22:06
LabVIEW Version: 8.2
Karma: 0

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

Postby Meteor on 12 Feb 2015, 21:13

Вспоминайте геометрический смысл производной - берите две соседние точки (Xi,Yi и Xi+1,Yi+1), найдите разности dY=Yi+1-Yi и dX=Xi+1-Xi, по результатам находите dY/dX это и будет производная. Из ваших 10 исходных точек, получится 9 точек с производными. График и цикл думаю разберетесь как получить
Meteor
junior
junior
 
Posts: 69
Joined: 25 Oct 2013, 17:37
LabVIEW Version: 2012
Karma: 13
hardware I/O

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

Postby bartex on 13 Feb 2015, 23:24

Вот два примера - вариант1 - попроще, вариант 2 -поинтересней.
В обоих вариантах решается классическая задача: скорость = путь/время.
P.S. При сохранении в версии 8.2 у меня выскакивают предупреждения, не знаю, сможете ли Вы открыть у себя программу... :shok:
Поэтому дополнительно выкладываю сканы
Attachments
Вар1.PNG
Вар1.vi
(15.17 KiB) Downloaded 97 times
Вар2 бл-диагр.PNG
Вар2.vi
(30.04 KiB) Downloaded 93 times
bartex
user
user
 
Posts: 73
Joined: 14 Apr 2014, 21:09
Location: Санкт-Петербург
LabVIEW Version: 2015
Karma: 16

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

Postby Andrey Petrzhik on 23 May 2018, 12:12

Всем привет! Поставил себе задачку написать просмотрщик .dat файлов с ВАХами. ВАХи строит, а вот производную как-то по-дурацки... производную считал также как советовал bartex. Есть есть какие идеи или хотя бы догадки, буду рад услышать. Спасибо!
P.S. в приложении картинка дифференциального сопротивления (производной ВАХ) построенная по простейшему алгоритму, предложенному выше, и по алгоритму Origin'a (не знаю какому).
Image
Image
Andrey Petrzhik
beginner
beginner
 
Posts: 34
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby Andrey Petrzhik on 23 May 2018, 12:25

Картинки
Attachments
IV-Rd_pic.jpg
IV-Rd_origin.jpg
Andrey Petrzhik
beginner
beginner
 
Posts: 34
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby Andrey Petrzhik on 23 May 2018, 12:33

ВАХа пишется так: свипирую ток 0...Imax...0...-Imax...0. Если взять dat файл и вырезать все минуса + оставить только проход от 0...Imax, производная более-менее берётся. Можно конечно что-то придумать чтобы бить входные данные, но как-то не очень хочется...
Attachments
IV-Rd_pic_only_plus.jpg
subvi_IVtoRd.jpg
Andrey Petrzhik
beginner
beginner
 
Posts: 34
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby Andrey Petrzhik on 23 May 2018, 12:39

А вот txt-файл если кто вдруг решит поразвлекаться...
Attachments
IVC-#4-40mkm-D2-858-4K.txt
(115.42 KiB) Downloaded 22 times
Andrey Petrzhik
beginner
beginner
 
Posts: 34
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby IvanLis on 23 May 2018, 13:35

Andrey Petrzhik wrote:А вот txt-файл если кто вдруг решит поразвлекаться...

Для корректного вычисления производной (численными методами) необходимо чтобы массив (аргумента) был отсортирован по возрастанию (ну и значение функции нужно переставлять тогда).
У Вас сейчас это условие не выполняется, по этому и косяки такие.
User avatar
IvanLis
professor
professor
 
Posts: 4575
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: 722
hardware VIP bloggers teachers

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

Postby Andrey Petrzhik on 23 May 2018, 13:43

IvanLis,
т.е. я выстраиваю табличку данных по токам от -Imax до +Imax и каким то образом сохраняю привязку каждого тока к "своему" напряжению... ага, ща подумаю как бы это сделать. Спасибо!
Andrey Petrzhik
beginner
beginner
 
Posts: 34
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby IvanLis on 23 May 2018, 13:53

Andrey Petrzhik wrote: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 KiB) Viewed 802 times

А Вы сейчас считаете производную от функции имеющей разрывы.
User avatar
IvanLis
professor
professor
 
Posts: 4575
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: 722
hardware VIP bloggers teachers

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

Postby Andrey Petrzhik on 23 May 2018, 18:08

Ага, да, разумно, так и сделал. Пока что руками. Оставил участок -I...+I. В нуле ещё руками вбил 0 напряжения на всякий случай. Лучше, но кривая сдвинута оказывается... что ещё не так может быть? Приложил iv-rdv.vi - тут всё и происходит, а потом передаётся в iv_ascii_tab_viewer.vi. 12я labview. Также приложил скомпилированный вариант, который откроет .dat файл по щелчку, если его в windows ассоциировать с программкой.
Attachments
minesI_to_plusI.jpg
IVC-#4-40mkm-D2-858-4Kcuted.dat.txt
(57.69 KiB) Downloaded 18 times
iv_ascii_tab_viewer.vi
(116.23 KiB) Downloaded 16 times
iv-rdv.vi
(113.71 KiB) Downloaded 17 times
iv_ascii_tab_viewer.exe.txt
(515.5 KiB) Downloaded 15 times
Andrey Petrzhik
beginner
beginner
 
Posts: 34
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby IvanLis on 23 May 2018, 22:40

Andrey Petrzhik wrote:Ага, да, разумно, так и сделал. Пока что руками. Оставил участок -I...+I. В нуле ещё руками вбил 0 напряжения на всякий случай. Лучше, но кривая сдвинута оказывается... что ещё не так может быть?


Возможно Вы где-то еще накосячили, у меня все нормально получается, хотя я "0" не добавлял.
Снимок экрана от 2018-05-23 22-36-28.png

Наверняка он как раз и оказался лишним.
Искать ошибки в Вашем коде уже нет возможности.
Посмотрите, как у меня реализовано.
1.png

Untitled 1.vi
lv2010
(20.79 KiB) Downloaded 15 times


----------------
Я что-то глянул.... не производная у нас получилась.
Производная, это отношение изменения функции к изменению аргумента: 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 KiB) Viewed 770 times
User avatar
IvanLis
professor
professor
 
Posts: 4575
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: 722
hardware VIP bloggers teachers

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

Postby Andrey Petrzhik on 24 May 2018, 01:32

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

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

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

Спасибо за помощь!
Andrey Petrzhik
beginner
beginner
 
Posts: 34
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby IvanLis on 24 May 2018, 17:15

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

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

Наверняка там используется аппарат интерполяции, аппроксимации, ресемплинга.
По этому и кривые гладкие получаются.

Но если хотите по честному, то уменьшайте шаг при измерении характеристики.
User avatar
IvanLis
professor
professor
 
Posts: 4575
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: 722
hardware VIP bloggers teachers

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

Postby Andrey Petrzhik on 25 May 2018, 13:04

Пока оставил как есть, хоть у меня и немного по-другому строит, но пока сойдёт. Алгоритм самый простейший (Вар. 1 bartex)... я скачал его и даже скопипастил себе на всякий случай... программа работает также, т.е. вроде как я не облажался;)
А вот теперь встала задачка сортировать данные автоматом. Поставил себе OpenG, и ну думаю она сама всё отсортирует... так вот не сортирует. Знатоки, подскажите пож что не так? Когда сортирую по 2й (от нуля считаем) колонке, она строит, а по 1й не строит. Неужели отрицательные значения не понимает?
Attachments
sort_2d_array.jpg
column2.jpg
Andrey Petrzhik
beginner
beginner
 
Posts: 34
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

Next

Return to Обработка сигнала

Who is online

Users browsing this forum: No registered users and 1 guest

cron