Odchylenie szumu od szumu - jak się za to zabrać :)
Moderatorzy: moderatorzy2014, moderatorzy
-
- Posty: 1867
- Rejestracja: poniedziałek 12 lip 2010, 11:51
- Lokalizacja: Kraków
Odchylenie szumu od szumu - jak się za to zabrać :)
Temat trochę od czapy, wymaga większego opisu...
Potrzebuje pod Arduino sprawdzić czy sygnał, który obserwuje ustabilizował się.
Niech to będzie np. ciśnienie. Albo cokolwiek co mierzymy - napięcie, to bez znaczenia,
pomiary co 1s, sygnał możesz lekko szumieć więc może być pojedynczy "pik" od czapy.
Zmiany sygnału powolne...
Muszę stwierdzić, czy mierzony sygnał ustabilizował się i mieści w zadanym odchyleniu.
Ponieważ sygnał może szumieć i nie jest zbyt szybki, nie mogę polegać na pojedynczym odczycie aktualnym.
Pomyślałem, że obliczę sobie średnią z np. ostatnich dziesięciu pomiarów. OK, to mi da "odszumioną" wartość.
Opóźnienie o 10 pomiarów w tył mi nie przeszkadza.
Teraz czy się ustabilizował. Znowu policzę sobie średnia z np. stu ostatnich pomiarów i porównam oba
wyniki. Jeśli różnica mieści się w zadanych widełkach uznaję, że sygnał jest stabilny i wszyscy szczęśliwi :)
Problem jest taki, że tych sygnałów mam z dziesięć, wszystkie float (od bidy int) - jak zrobię dwie tablice
do uśredniania to pewnie mi pamięci w procku braknie ;)
Może macie lepsze pomysły jak to zrobić? :)
PS.
Wpadłem na drobiazg.
Mogę nie zbierać 100 próbek sygnału dłuższego, tylko dziesięć średnich sygnału "aktualnego" i liczyć z nich średnią.
Czyli liczyć średnia z aktualnej średniej i 9 "starych" średnich. To mocno zmniejszy ilość danych.
Może macie lepsze pomysły?
q
Potrzebuje pod Arduino sprawdzić czy sygnał, który obserwuje ustabilizował się.
Niech to będzie np. ciśnienie. Albo cokolwiek co mierzymy - napięcie, to bez znaczenia,
pomiary co 1s, sygnał możesz lekko szumieć więc może być pojedynczy "pik" od czapy.
Zmiany sygnału powolne...
Muszę stwierdzić, czy mierzony sygnał ustabilizował się i mieści w zadanym odchyleniu.
Ponieważ sygnał może szumieć i nie jest zbyt szybki, nie mogę polegać na pojedynczym odczycie aktualnym.
Pomyślałem, że obliczę sobie średnią z np. ostatnich dziesięciu pomiarów. OK, to mi da "odszumioną" wartość.
Opóźnienie o 10 pomiarów w tył mi nie przeszkadza.
Teraz czy się ustabilizował. Znowu policzę sobie średnia z np. stu ostatnich pomiarów i porównam oba
wyniki. Jeśli różnica mieści się w zadanych widełkach uznaję, że sygnał jest stabilny i wszyscy szczęśliwi :)
Problem jest taki, że tych sygnałów mam z dziesięć, wszystkie float (od bidy int) - jak zrobię dwie tablice
do uśredniania to pewnie mi pamięci w procku braknie ;)
Może macie lepsze pomysły jak to zrobić? :)
PS.
Wpadłem na drobiazg.
Mogę nie zbierać 100 próbek sygnału dłuższego, tylko dziesięć średnich sygnału "aktualnego" i liczyć z nich średnią.
Czyli liczyć średnia z aktualnej średniej i 9 "starych" średnich. To mocno zmniejszy ilość danych.
Może macie lepsze pomysły?
q
Re: Odchylenie szumu od szumu - jak się za to zabrać :)
Zamiast zbierać te dane, dodawaj je do zmiennej czyli po każdym pomiarze zwiększaj jej wartość i po 100 pomiarach lub po określonym czasie podziel ją przez ilość pomiarów
Pozdrawiam Darek
NAZA MLITE , Sky Cruiser 2400 GEMINI 3200]
NAZA MLITE , Sky Cruiser 2400 GEMINI 3200]
-
- Posty: 1867
- Rejestracja: poniedziałek 12 lip 2010, 11:51
- Lokalizacja: Kraków
Re: Odchylenie szumu od szumu - jak się za to zabrać :)
Tylko, że w takim wypadku nie będę miał średniej z ostatnich 100 pomiarów, czy np. 10 minut,
tylko od początku zliczania...
q
tylko od początku zliczania...
q
Re: Odchylenie szumu od szumu - jak się za to zabrać :)
Po 100 pomiarach lub po jakimś czasie "kasujesz" zmienną i liczysz od początku
Pozdrawiam Darek
NAZA MLITE , Sky Cruiser 2400 GEMINI 3200]
NAZA MLITE , Sky Cruiser 2400 GEMINI 3200]
-
- Posty: 1867
- Rejestracja: poniedziałek 12 lip 2010, 11:51
- Lokalizacja: Kraków
Re: Odchylenie szumu od szumu - jak się za to zabrać :)
Albo nie rozumiem, albo nic to nie da :)
Ja potrzebuję mieć zawsze:
- średnią z np. 100 pomiarów,
- średnią z np. 10 pomiarów.
q
Ja potrzebuję mieć zawsze:
- średnią z np. 100 pomiarów,
- średnią z np. 10 pomiarów.
q
Re: Odchylenie szumu od szumu - jak się za to zabrać [emoji3
W takim wypadku możesz stosować rejestr przesuwny lub tablice zmiennych liczbowych.
Każda nowa próbka zawsze jest zapisywana do tej samej komórki w tabeli, ale przed zapisem przesuwasz ostatnia próbkę na przed ostatnie miejsce itd. W ten sposób zawsze będziesz miał ta sama liczbę próbek z ostatniego wycinka czasu. Próbka która znajdzie się poza rozmiarem tablicy zostaje skasowana.
Wysłane z iPhone za pomocą Tapatalk
Każda nowa próbka zawsze jest zapisywana do tej samej komórki w tabeli, ale przed zapisem przesuwasz ostatnia próbkę na przed ostatnie miejsce itd. W ten sposób zawsze będziesz miał ta sama liczbę próbek z ostatniego wycinka czasu. Próbka która znajdzie się poza rozmiarem tablicy zostaje skasowana.
Wysłane z iPhone za pomocą Tapatalk
Bartek
Szpecu od kudlenia :)
Szpecu od kudlenia :)
Re: Odchylenie szumu od szumu - jak się za to zabrać :)
Ustal granice tolerancji aby wyeliminowac bledny pomiar, zastosuj srednia ciagniona aby zminimalizowac wplyw anomalii na wynik. Kazdy pomiar bedzie mial wplyw na wynik, ale nie tak drastyczny jak po prostu korzystanie tylko z ostatniego pomiaru.
Jako granice tolerancji proponuje ustalic srednia + zakladany akceptowalny % bledu. Wyedy granica nie bedzie sztywna, ale skutecznie wyeliminujesz pojedyncze skoki.
Jako granice tolerancji proponuje ustalic srednia + zakladany akceptowalny % bledu. Wyedy granica nie bedzie sztywna, ale skutecznie wyeliminujesz pojedyncze skoki.
-
- Posty: 1867
- Rejestracja: poniedziałek 12 lip 2010, 11:51
- Lokalizacja: Kraków
Re: Odchylenie szumu od szumu - jak się za to zabrać :)
No tak <> myślę to zrobić - tablicę z przesuwaniem zawartości, wartości "od czapy" będę wycinał.
Właśnie zasiadam do pisania, tylko jeszcze kawa :)
PS. Czy można jakoś jednym poleceniem zsumować elementy tablicy jednowymiarowej w C++
czy też muszę robić petlę i podawać po jednym elemencie?
q
Właśnie zasiadam do pisania, tylko jeszcze kawa :)
PS. Czy można jakoś jednym poleceniem zsumować elementy tablicy jednowymiarowej w C++
czy też muszę robić petlę i podawać po jednym elemencie?
q
-
- Posty: 1867
- Rejestracja: poniedziałek 12 lip 2010, 11:51
- Lokalizacja: Kraków
Re: Odchylenie szumu od szumu - jak się za to zabrać :)
Taaa.
Możecie mi podpowiedzieć dlaczego w tej pętli przesuwają się tylko zapisy w trzeciej tablicy?
A to samo zapisane tak, działa poprawnie?
Spędziłem dłuższą chwilę gapiąc się w ekran :)
q
Możecie mi podpowiedzieć dlaczego w tej pętli przesuwają się tylko zapisy w trzeciej tablicy?
Kod: Zaznacz cały
for (int x=99; x>=1; x--)
{
t1SR100[x]=t1SR100[x-1]; t2SR100[x]=t2SR100[x-1]; tGSR100[x]=tGSR100[x-1];
}
Kod: Zaznacz cały
for (int x=99; x>=1; x--)
{
t1SR100[x]=t1SR100[x-1];
}
for (int x=99; x>=1; x--)
{
t2SR100[x]=t2SR100[x-1];
}
for (int x=99; x>=1; x--)
{
tGSR100[x]=tGSR100[x-1];
}
q
Re: Odchylenie szumu od szumu - jak się za to zabrać :)
A po co tracic czas na przesuwanie? Jak juz raz zbierzesz x sampli biegasz z indeksem w kolko przy kazdym nowym pomiarze odejmujesz od sumy wartosc pod indeksem, zapisujesz na jego miejsce nowa wartosc i dodajesz do sumy. W ten sposob zawsze masz sume x ostatnich pomiarow.Jakub Jewuła pisze:Możecie mi podpowiedzieć dlaczego w tej pętli przesuwają się tylko zapisy w trzeciej tablicy?