Rysowanie wykresów i uśrednieni danych

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.
karpik
Posty: 13
Rejestracja: 24 wrz 2008 13:27
Kontakt:

Rysowanie wykresów i uśrednieni danych

Post autor: karpik »

Witam!
Mam następujący problem:
Posiadam dane zapisane w pliku txt w 3 kolumnach.
1.Chciałbym stworzyć z nich wykres tak,żeby pierwsza była podstawą czasu(oś X),a pozostałe dwie na osi Y.
2.Do tego chciałbym żeby dane z drugiej kolumny były uśredniane,ponieważ występują niewielkie szumy w wynikach.
3.Czy istnieje możliwość,aby na charcie (lub graphie) dało się zastosować kursor pozwalający na odczytanie wartości w danym puncie?
Bardzo dziękuję za odpowiedź!
Ostatnio zmieniony 24 wrz 2008 14:44 przez karpik, łącznie zmieniany 1 raz.
Rudyjerz
Posty: 29
Rejestracja: 02 wrz 2008 09:07
Wersja środowiska: LabVIEW 2012
Lokalizacja: Katowice/Warszawa
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: Rudyjerz »

1. Patrz rysunek. Nie napisałeś jak dane są sformatowane więc użyłem standardu. Nie wykluczone, że wymaga dopasowania (np. sposobu rozdzielania kolumn).
2. Ten kwadracik z "???" to SubVi który uśrednia Twoje przebiegi. Ponieważ nie napisałeś nic więcej (jak mają być uśredniane?) to nic tam nie wstawiłem. Opisz sposób uśredniania, to będziemy mogli pomóc.
3. Tak. Sposobów na jego uruchomienie jest kilka. Chyba najprostszy to: XY Graph (prawy klik) -> Properties -> Cursors -> Add i możesz tu też ustawić jego parametry (kolory, przyciąganie do wykresów itp).

PS. Dosłownie parę dni temu był podobny wątek (link). Przejżyj, porównaj różnice, pobaw się sam, tak się najłatwiej nauczyć.
Rudyjerz
karpik
Posty: 13
Rejestracja: 24 wrz 2008 13:27
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: karpik »

Właśnie robiłem wg tego przykładu,ale otrzymuje taki wykres(rys1)
powinno być coś takiego,tylko,że na jednym wykresie(rys2)
Podam też dane d przykładowego pliku txt
Jakie uśrednienie najlepiej zastosować dla tego typu charakterystyki?Myślałem nad interpolacją,ale nie wiem czy się sprawdzi.
bardzo dziękuję za poprzednią odpowiedź.
Ostatnio zmieniony 24 wrz 2008 16:10 przez karpik, łącznie zmieniany 2 razy.
Rudyjerz
Posty: 29
Rejestracja: 02 wrz 2008 09:07
Wersja środowiska: LabVIEW 2012
Lokalizacja: Katowice/Warszawa
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: Rudyjerz »

Podejrzewam, że w Index Array podłączyłeś się do index(row), a nie index(col). Sprawdź.
Interpolację czym? Wiesz jaka w teorii powinna być ta funkcja? Łatwiej będzie Ci podpowiedzieć jeśli powiesz co mierzysz i do czego ma to być potem użyte.
Ostatnio zmieniony 24 wrz 2008 16:44 przez Rudyjerz, łącznie zmieniany 1 raz.
Rudyjerz
karpik
Posty: 13
Rejestracja: 24 wrz 2008 13:27
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: karpik »

Miałeś racje- źle podłączyłem.
Mierzę zmiany temperatury podczas pracy ogniwa Peltiera. Mam zamontowane 2 czujniki- jeden po stronie zimnej i jeden po stronie gorącej. Z tym, że ten po stronie gorącej ma na radiatorze założony wentylator, który powoduje chwilowe zmiany temperatury. Są one widoczne na wykresie na rys 2. po prawej. Charakterystyka ma wyglądać tak jak ta z lewej tzn. chcę wygładzić ten przebieg który jest, żeby nie było widać tych szpilek. czy da się to zrobić?

Już bardzo mi pomogłeś!dzięki!
Awatar użytkownika
AzazeL
Posty: 46
Rejestracja: 05 cze 2008 19:00
Lokalizacja: Mikołów
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: AzazeL »

Spróbuj użyć metody ruchomej średniej albo filtru dolnoprzepustowego. Powinno pomóc.
karpik
Posty: 13
Rejestracja: 24 wrz 2008 13:27
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: karpik »

Użyłem różnych filtrów,ale pawie zawsze jest ten sam problem- na początku ina końcu wykresu pojawia się punkt 0. Niestety ruchomej średniej nie udało mi się znaleźć w przykładach. Byłbym wdzięczny za wskazanie mi gdzie ona się znajduje,bo w example też jej nie znalazłem.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Rysowanie wykresów i uśrednieni danych

Post autor: jogurt_owocowy »

Ruchomą średnią łatwo zrobić na filtrze FIR, ale pojawi się problem opóźnienia wprowadzanego przez filtr, które trzeba byłoby skompensować.
Spróbuj najpierw z filtrem medianowym (Median Filter) podając na jego wejścia left rank i right rank taką samą wartość (dobierz eksperymentalnie - im większa, tym gładszy przebieg).
Na rysunku efekt filtracji dla left rank = right rank = 50.
Pozdrawiam
Rudyjerz
Posty: 29
Rejestracja: 02 wrz 2008 09:07
Wersja środowiska: LabVIEW 2012
Lokalizacja: Katowice/Warszawa
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: Rudyjerz »

No jak już tak podajemy to może być jeszcze Savitzky-Golay Filter. W tym filtrze do fragmentu przebiegu o długości side points dopasowywana jest krzywa wielomianowa zadanego rzędu - polynomial.
Na rysunku SG Filter z side points = 50 i polynomial = 3 (czerwony) i filtr medianowy jogurta (niebieski).
Nie wiem do końca jak to jest ale wydaje mi się że jak się włącza wiatraczek to oprócz chwilowych zmian temperatura po prostu spada, stąd te dłuższe górki i dołki, które przy medianie są wycinane, no ale to niech sobie karpik sprawdzi i wybierze odpowiedni filtr :-)
Rudyjerz
karpik
Posty: 13
Rejestracja: 24 wrz 2008 13:27
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: karpik »

Filtr jogurta w zupełności wystarczy. tylko zastanawiają mnie tak duże skoki. Wcześniej robiłem podobne pomiary i charakterystyka praktycznie nie zawierała takich błędów. Muszę to sprawdzić praktycznie jeszcze raz :-k
Mam jeszcze jedną prośbę: próbowałem używać funkcji matematycznych na tych wykresach (z marnym skutkiem). Chciałbym, żeby LV zaznaczało mi na wykresie (i pokazało wartości): początku narastania krzywej, 0,5 i 0,9 czasu narastania oraz wyznaczył wartość przy której przebieg staje się ustalony(powiedzmy wahania3-5%). Zaznaczyłem na rys.,mniej więcej gdzie znajduja się te punkty. I żeby robił podobne zestawienie dla krzywej opadającej.
Czy można zrobić coś takiego?
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Rysowanie wykresów i uśrednieni danych

Post autor: jogurt_owocowy »

Chciałbym, żeby LV zaznaczało mi na wykresie (i pokazało wartości): początku narastania krzywej, 0,5 i 0,9 czasu narastania...
Taki zestaw klocków: Waveform Peak Detection, Amplitude and Levels, Basic Level Trigger Detection plus, dodatkowo, dodanie do wykresu kursorów i sterowanie ich pozycją za pomocą własności Cursor Position powinno załatwić sprawę.
...oraz wyznaczył wartość przy której przebieg staje się ustalony(powiedzmy wahania3-5%)
Na to gotowy klocek się raczej nie znajdzie, ale jest do zrobienia, tylko co dokładnie znaczy wahania 3-5%?
Ostatnio zmieniony 25 wrz 2008 08:05 przez jogurt_owocowy, łącznie zmieniany 1 raz.
karpik
Posty: 13
Rejestracja: 24 wrz 2008 13:27
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: karpik »

Nie wiem za bardzo jak zaporgramować te kontrolki:(Użyłem kontrolki Build Waveform,ale nie wiem czy to jest dobrze zrobione.
Jak używa się cursor position tak żeby wskazał wartość na wykresie?(nie wiem gdzie tegoo szukać)
Bardzo dziękuję za wypowiedzi.
Rudyjerz
Posty: 29
Rejestracja: 02 wrz 2008 09:07
Wersja środowiska: LabVIEW 2012
Lokalizacja: Katowice/Warszawa
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: Rudyjerz »

W załączeniu masz zrobiony na szybko kod, który robi kilka z potrzebnych Ci funkcji. Myślę, że na jego podstawie sam łatwo dojdziesz jak to się robi i dorobisz dalej.
Parę komentarzy: - przy tworzeniu Waveform nie musisz podpinać t0, będzie domyślne - przed uruchomieniem kodu musisz dodać kursory do wykresu. Co najmniej tyle ilu zmieniasz potem parametry. Nie da się (chyba? - niech mnie ktoś poprawi jeśli się mylę) dodać kursorów w trakcie działania programu - peak detect zwrca indexy peak'ów a nie wartości czasów dla nich, stąd to mnożenie potem - żeby stworzyć Property Node (czyli te klocki w których ustawiasz pozycje kursorów) należy kliknąć prawym klawiszem myszy na Waveform Graph -> Create -> Property Node -> Active Cursor. Domyślnie jest ustawiony na odczyt a nie zapis, więc znów prawy klik na niego tym razem i Change to Write. Potem można go rozciągnąć i dodać mu dodatkowe właściwości.
Rudyjerz
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Rysowanie wykresów i uśrednieni danych

Post autor: jogurt_owocowy »

W załączniku obrazek jak ustawić kursor na pierwszym maksimum wykrytym w sygnale. Przyjmując jako początek narastania początek sygnału łatwo ustawić pozostałe kursory w połowie i w 90% czasu narastania.

Z reguły klocki operujące na sygnałach są polimorficzne i akceptują dane także w postaci tablicy próbek - nie musisz konwertować ich na waveform tylko w tym celu.
Ostatnio zmieniony 25 wrz 2008 18:23 przez jogurt_owocowy, łącznie zmieniany 1 raz.
karpik
Posty: 13
Rejestracja: 24 wrz 2008 13:27
Kontakt:

Re: Rysowanie wykresów i uśrednieni danych

Post autor: karpik »

MAm jeszcze jedno pytanie:jak zrobić żeby odczytał mi położenie wartości 50% tego narastajacego sygnału?Mam maksimum uzyskane z peak detection.
Ostatnio zmieniony 26 wrz 2008 11:19 przez karpik, łącznie zmieniany 4 razy.
ODPOWIEDZ