Linearyzacja z wymuszeniem stałego punktu.

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Awatar użytkownika
fajfi
Posty: 185
Rejestracja: 28 sty 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Wrocław

Linearyzacja z wymuszeniem stałego punktu.

Post autor: fajfi »

Cześć,
mam następujący problem:
Otrzymałem pewne dane pomiarowe, które z grubsza układają się wokół prostej. Aby otrzymać tę prostą użyłem funkcji "linear fit".
Wygląda to bardzo ładnie, ale wiadomo, że z definicji moja prosta powinna przechodzić przez punkt (0;0). Po fitowaniu prosta przechodzi odrobinę obok tego punktu.
Czy da się jakoś wymusić, aby prosta przechodziła dokładnie przez ten punkt?
Pozdrawiam
Fajfi
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Linearyzacja z wymuszeniem stałego punktu.

Post autor: vugie »

b=0 ?
Awatar użytkownika
fajfi
Posty: 185
Rejestracja: 28 sty 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Wrocław

Re: Linearyzacja z wymuszeniem stałego punktu.

Post autor: fajfi »

Tak - z definicji.
Chodziło mi o odpowiednie zmodyfikowanie wartości otrzymanych na wyjściu "Best linear fit"
I chyba wpadłem na pomysł: wystarczy od wartości z "best linear fit" odjąć stałą "intercept"
Pozdrawiam
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Linearyzacja z wymuszeniem stałego punktu.

Post autor: vugie »

y=a*x+b
a to slope, b to intercept
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Linearyzacja z wymuszeniem stałego punktu.

Post autor: PiDi »

Odjęcie wyrazu wolnego od gotowego dopasowania to nie jest najlepszy sposób - do "dobrego" dopasowania wprowadzasz jakąś stałą, co je psuje. Lepszym rozwiązaniem jest ograniczenie z góry wyrazu wolnego, na co Linear Fit nam pozwala. W załączniku przykład, jak to zrobić i czemu tak jest lepiej.
Załączniki
linearfit.vi
LV2010
(16.83 KiB) Pobrany 332 razy
ObrazekObrazekObrazekObrazek
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Re: Linearyzacja z wymuszeniem stałego punktu.

Post autor: vugie »

PiDi pisze:Odjęcie wyrazu wolnego od gotowego dopasowania to nie jest najlepszy sposób - do "dobrego" dopasowania wprowadzasz jakąś stałą, co je psuje. Lepszym rozwiązaniem jest ograniczenie z góry wyrazu wolnego, na co Linear Fit nam pozwala. W załączniku przykład, jak to zrobić i czemu tak jest lepiej.
A to zależy. Kolega napisał, że prosta przechodzi "odrobinkę obok zera". Odjęcie b sprawi, że nachylenie pozostanie jak było. Ograniczenie go sprawi, że nachylenie się zmieni - co prawda suma kwadratów różnic (czy czym tam jest sterowana dana metoda) będzie najmniejsza, ale "na oko" może już nie być tak ładnie. Jeżeli zależność fizyczna mówi, że prosta ma przechodzić przez 0, to znaczy że faktycznie istotnym parametrem jest jej nachylenie. To że pomiary nie przechodzą przez 0 może świadczyć o wielu różnych rzeczach, ale jeżeli są (subiektywnie) blisko przecięcia się z zerem, to ja bym jednak odjął wyraz wolny. Otrzymane nachylenie będzie wtedy bliższe fizycznemu sensowi, niż matematycznej minimalizacji jakiegoś wydumanego parametru (bo takim jest suma kwadratów różnic).

Jest jeszcze inne rozwiązanie - można dodać punkt (0,0) do pomiarów i przypisać mu dużą wagę. Manipulując tą wagą można regulować to jak bardzo algorytm "ściąga" do (0,0). Na koniec i tak trzeba odjąć b, ale mamy większą kontrolę.
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Linearyzacja z wymuszeniem stałego punktu.

Post autor: PiDi »

Właśnie dlatego, że b wychodzi małe (no tak, w sumie co ma na myśli fajfi, mówiąc: małe), sugeruję zmianę nachylenia prostej. Jeśli b wychodziłoby duże, to wskazywałoby na jakiś błąd systematyczny pomiaru i wtedy taka poprawka miałaby fizyczne uzasadnienie. Małe b wynika raczej po prostu z faktu, że losowe zakłócenie jest losowe przy nieskończonej liczbie próbek, a przy skończonej - już nie do końca. W załączniku przykład - wraz ze wzrostem liczby próbek wyraz wolny dopasowania dąży do zera, przy czym amplituda zakłócenia na tę tendencję nie wpływa.

Oczywiście nie można nigdy wykluczyć, że faktycznie winę za niezerowe b ponosi jakiś stały błąd. Dlatego moje uwagi są raczej zaznaczeniem innej możliwości, niż jakąś absolutną prawdą, której będę bronił do ostatniego klawisza klawiatury ;)
Załączniki
zaklocenie.vi
(14.04 KiB) Pobrany 337 razy
ObrazekObrazekObrazekObrazek
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Linearyzacja z wymuszeniem stałego punktu.

Post autor: vugie »

Powiedzmy, że chcemy zmierzyć prędkość samochodu mierząc jego położenie w stałych odcinkach czasu. Wiemy, że położenie w chwili 0 wynosiło 0. Dla kolejnych sekund (od 1 w górę) otrzymujemy następujące pozycje w metrach: 2, 3, 4, 5, 6, 7. Dopasowujemy dane i otrzymujemy a=1, b=1. Prosta miała przechodzić przez 0, ale z jakiegoś powodu nie przechodzi. Pytanie: jaka jest PRAWDZIWA prędkość samochodu? 1 m/s, czy troszkę większa, wynikająca z dopasowania z b ograniczonym do 0?
Awatar użytkownika
fajfi
Posty: 185
Rejestracja: 28 sty 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Wrocław

Re: Linearyzacja z wymuszeniem stałego punktu.

Post autor: fajfi »

Cześć!
He he, widzę, że niechcący wywołałem ciekawą dyskusję. :)
Zostałem przywołany do tablicy, więc służę przykładem, na którym widać "owo niewielkie odchylenie".
Kwadratami zaznaczono punkty pomiarowe, a linie ciągłe, to wyznaczone fitowanie. Dla jednego związku jest właściwie idealnie, odrobinę gorzej z drugim.
Odchylenie jest naprawdę nieduże i właściwie nie ma o co kruszyć kopii, ale może to się przydać na przyszłość.
Tutaj zastosowałbym rozwiązanie zaproponowane przez PiDiego czyli przypisał dużą wagę punktowi (0;0).
Dziękuję za cenne uwagi.
Fajfi
Załączniki
druga-proba-stez-fit.jpg
ODPOWIEDZ