Strona 1 z 2
Rysowanie wykresów i uśrednieni danych
: 24 wrz 2008 14:37
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ź!
Re: Rysowanie wykresów i uśrednieni danych
: 24 wrz 2008 15:26
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ć.
Re: Rysowanie wykresów i uśrednieni danych
: 24 wrz 2008 16:03
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ź.
Re: Rysowanie wykresów i uśrednieni danych
: 24 wrz 2008 16:36
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.
Re: Rysowanie wykresów i uśrednieni danych
: 24 wrz 2008 17:13
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!
Re: Rysowanie wykresów i uśrednieni danych
: 24 wrz 2008 18:13
autor: AzazeL
Spróbuj użyć metody ruchomej średniej albo filtru dolnoprzepustowego. Powinno pomóc.
Re: Rysowanie wykresów i uśrednieni danych
: 24 wrz 2008 19:42
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.
Re: Rysowanie wykresów i uśrednieni danych
: 24 wrz 2008 20:16
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
Re: Rysowanie wykresów i uśrednieni danych
: 24 wrz 2008 22:51
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
Re: Rysowanie wykresów i uśrednieni danych
: 25 wrz 2008 05:46
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?
Re: Rysowanie wykresów i uśrednieni danych
: 25 wrz 2008 08:05
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%?
Re: Rysowanie wykresów i uśrednieni danych
: 25 wrz 2008 14:39
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.
Re: Rysowanie wykresów i uśrednieni danych
: 25 wrz 2008 18:06
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.
Re: Rysowanie wykresów i uśrednieni danych
: 25 wrz 2008 18:22
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.
Re: Rysowanie wykresów i uśrednieni danych
: 26 wrz 2008 09:11
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.