Uśrednianie danych

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
MS91
Posty: 17
Rejestracja: 11 lis 2014 16:52
Wersja środowiska: LabVIEW 2014

Uśrednianie danych

Post autor: MS91 »

Witam

mam taki problem - tworzę aplikację pomiarową do czujnika przyspieszenia. Mam już rozseparowane sygnały z osi X i Y, przerobiłem je ze stringa na number, i te dane idą z portu RS232 cały czas - trochę ich gubię po drodze ale nie jest to problemem. I tutaj pojawia się pytanie - moim zadaniem jest uśredniać te dane - od 1 do 60, z możliwością zmiany w czasie rzeczywistym. Czy ktoś może mi pomóc? Próbowałem zrobić to na maszynie stanów ale nie idzie mi to totalnie. Myślałem o pętach producer/consumer.
FragRz
Posty: 1
Rejestracja: 21 maja 2014 14:30
Wersja środowiska: LabVIEW 2013

Uśrednianie danych

Post autor: FragRz »

Witaj,

Według mnie dałeś trochę za mało informacji na temat programu aby pomóc Ci z architekturą(jakie są założenia dla programu, może jakiś fragment kodu?). A co do wartości średniej, polecam zapoznać się z VI "Mean PtByPt", wydaje się być dokładnie tym czego potrzebujesz.
MS91
Posty: 17
Rejestracja: 11 lis 2014 16:52
Wersja środowiska: LabVIEW 2014

Uśrednianie danych

Post autor: MS91 »

Jeśli chodzi o sens tego programu - z czujnika przez układ wychodzą dane do RS232 z komputera. Idą cały czas a struktura danych wygląda tak: X()()()()Y()()()()X()()()()Y()()()()...... czyli po identyfikatorze kanału mamy 4 bajty danych. Mam już wszystko rozseparowane i przeliczone ze stringa na number. Na każdą oś przypadają dwie dane (długość okresu sygnału prostokątnego, i długość stanu wysokiego. Wychylenia płytki z sensorem zmieniają szerokość stanu wysokiego w okresie). Poza tym mam na każdą daną warunek - aby nie było jakichś wychyleń skrajnych wynikających z zakłóceń. na wyjściu mojego SubVI mam tak: 4 linie, Xstanwysoki, Xokres, Ystanwysoki, Yokres i stan logiczny - jeśli jest na 1, to znaczy że nie było żadnych przekłamań i dane są OK, jeśli na 0 - trzeba te dane usunąć. Więc pewnie będzie potrzebna pętla True/False. Dane idą cały czas. Chodzi mi o to aby móc uśrednić np 30 danych (ogólnie od jednej do 60, z możliwością zmian wielkości hmmm bufora/array który utrzymuje te dane). Kiedy bufor (przykładowo na 30 danych) się napełni - chcę żeby te 30 danych poszło na VI który je uśredni. Patrzyłem na helpa Mean PtByPt - to chyba będzie ok - ale czy on store'uje te dane zanim je uśredni?

Dzięki za odpowiedź :)
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Uśrednianie danych

Post autor: Jamal79 »

Napewno ci ich nie posortuje...
Najprosciej zrob arraya w petli while ktory dodaje poszczegolne pomiary, a nastepnie podzielil je na ilosc probek. nazwyklejsze arytmetyczne usrednianie. Przed da petla zrb testowanie warunku, czy przeszly dane, czy masz same zera...
MS91
Posty: 17
Rejestracja: 11 lis 2014 16:52
Wersja środowiska: LabVIEW 2014

Uśrednianie danych

Post autor: MS91 »

Dzięki za pomoc :) temat do zamknięcia
ODPOWIEDZ