Odchylenie szumu od szumu - jak się za to zabrać :)

monitory, nagrywarki, itp

Moderatorzy: moderatorzy2014, moderatorzy

Jakub Jewuła
Posty: 1867
Rejestracja: poniedziałek 12 lip 2010, 11:51
Lokalizacja: Kraków

Odchylenie szumu od szumu - jak się za to zabrać :)

Post autor: Jakub Jewuła »

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
Awatar użytkownika
darek_op
Posty: 780
Rejestracja: piątek 02 mar 2012, 12:47
Lokalizacja: Warszawa

Re: Odchylenie szumu od szumu - jak się za to zabrać :)

Post autor: darek_op »

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
Jakub Jewuła
Posty: 1867
Rejestracja: poniedziałek 12 lip 2010, 11:51
Lokalizacja: Kraków

Re: Odchylenie szumu od szumu - jak się za to zabrać :)

Post autor: Jakub Jewuła »

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
Awatar użytkownika
darek_op
Posty: 780
Rejestracja: piątek 02 mar 2012, 12:47
Lokalizacja: Warszawa

Re: Odchylenie szumu od szumu - jak się za to zabrać :)

Post autor: darek_op »

:shock: Po 100 pomiarach lub po jakimś czasie "kasujesz" zmienną i liczysz od początku
Jakub Jewuła
Posty: 1867
Rejestracja: poniedziałek 12 lip 2010, 11:51
Lokalizacja: Kraków

Re: Odchylenie szumu od szumu - jak się za to zabrać :)

Post autor: Jakub Jewuła »

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
Awatar użytkownika
sudik
Posty: 313
Rejestracja: niedziela 23 cze 2013, 17:03
Lokalizacja: Kraków

Re: Odchylenie szumu od szumu - jak się za to zabrać [emoji3

Post autor: sudik »

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
Bartek
Szpecu od kudlenia :)
do-man
Posty: 30
Rejestracja: sobota 20 lip 2019, 09:46

Re: Odchylenie szumu od szumu - jak się za to zabrać :)

Post autor: do-man »

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.
Jakub Jewuła
Posty: 1867
Rejestracja: poniedziałek 12 lip 2010, 11:51
Lokalizacja: Kraków

Re: Odchylenie szumu od szumu - jak się za to zabrać :)

Post autor: Jakub Jewuła »

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
Jakub Jewuła
Posty: 1867
Rejestracja: poniedziałek 12 lip 2010, 11:51
Lokalizacja: Kraków

Re: Odchylenie szumu od szumu - jak się za to zabrać :)

Post autor: Jakub Jewuła »

Taaa.

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]; 
      }
A to samo zapisane tak, działa poprawnie?

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]; 
      }
Spędziłem dłuższą chwilę gapiąc się w ekran :)

q
Awatar użytkownika
pawelsky
Posty: 9758
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Odchylenie szumu od szumu - jak się za to zabrać :)

Post autor: pawelsky »

Jakub Jewuła pisze:Możecie mi podpowiedzieć dlaczego w tej pętli przesuwają się tylko zapisy w trzeciej tablicy?
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.
ODPOWIEDZ