Thursday 14 December 2017

Częstotliwość wydzielania przemieszczania średnia cut off


Muszę zaprojektować średnioroczny filtr, który ma częstotliwość odcięcia 7,8 Hz. W przeszłości używałem przeciętnych filtrów, ale jeśli chodzi o informację Im, jedynym parametrem, który może być wprowadzony, jest liczba punktów, które mają być uśrednione. Jak to odnosi się do częstotliwości odcięcia? Odwrotność 7,8 Hz wynosi 130 ms, a Im pracuje z danymi, które są próbkowane przy 1000 Hz. Czy to oznacza, że ​​powinienem używać średniej wielkości okna filtru 130 próbek, czy też jest coś, co im tutaj brakuje? Pytanie 18 lipca o godz. 9:52 Filtr średnioroczny jest filtrem stosowanym w domenie czasu do usunięcia dodany hałas, a także do wygładzania celów, ale jeśli używasz tego samego ruchomych filtrów średnich w dziedzinie częstotliwości do rozdzielenia częstotliwości, wydajność będzie najgorsza. więc w takim przypadku użyj filtrów domen częstotliwości ndash user19373 Feb 3 16 at 5:53 Filtr średniej ruchomej (czasami znany potocznie jako filtr do koszykówki) ma prostokątną odpowiedź impulsową: Albo inaczej: Pamiętaj, że odpowiedź częstotliwościowa systemu dyskretnego czasu jest równoważna transformacji Fouriera czasowej odpowiedzi impulsowej, możemy ją wyliczyć następująco: Najbardziej zainteresowana była twoja sprawa wielkości reakcji filtra H (omega). Korzystając z kilku prostych manipulacji, możemy to uzyskać w łatwiejszej do zrozumienia formie: nie może być łatwiej zrozumieć. Jednak ze względu na tożsamość Eulersa. Przypomnijmy, że: Możemy więc napisać powyższe: Jak już wcześniej stwierdziłem, to, o czym naprawdę chodzi, jest wielkość odpowiedzi częstotliwościowej. Możemy więc wziąć pod uwagę wielkość powyższego, aby ją uprościć: Uwaga: Możemy zrezygnować z wyrażeń wykładniczych, ponieważ nie wpływają na wielkość wyniku e1 dla wszystkich wartości omega. Od xy xy dla dowolnej liczby skończonych liczb zespolonych xi y możemy stwierdzić, że obecność wykładni nie wpływa na ogólną odpowiedź wielkości (zamiast tego wpływają one na reakcję fazy systemu). Powstała funkcja wewnątrz wsporników wielkości jest formą jądra Dirichleta. Czasami nazywa się ona okresową funkcją sinc, gdyż przypomina funkcję sinc w wyglądzie, ale raczej okresowo. Zresztą, ponieważ definicja częstotliwości odcięcia jest nieco nieznaczona (-3 dB punkt -6 dB punkt pierwszy sidelobe null), możesz użyć powyższego równania, aby rozwiązać wszystko, czego potrzebujesz. W szczególności można wykonać następujące czynności: Ustaw H (omega) na wartość odpowiadającą odpowiedzi filtra, która ma być używana przy częstotliwości odcięcia. Ustaw omega na częstotliwości odcięcia. Aby mapować częstotliwość ciągłą w domenie dyskretnej, pamiętaj, że omega 2pi frac, gdzie fs to częstotliwość próbkowania. Znajdź wartość N, która daje najlepszą zgodę pomiędzy lewą i prawą stroną równania. To powinna być długość twojej średniej ruchomej. Jeśli N jest długością średniej ruchomej, to przybliżona częstotliwość odcięcia F (ważna dla N gt 2) w znormalizowanej częstotliwości Fffs wynosi: Odwrotna jest ta formuła Ta formuła jest asymptotycznie poprawna dla dużego N i ma około 2 błędy dla N2 i mniej niż 0,5 dla N4. P. S. Po dwóch latach, w końcu, co było podejściem. Wynik był oparty na przybliżeniu spektrum amplitudy MA wokół f0 jako paraboli (serii II rzędu) zgodnie z MA (Omega) ok. 1 (frac-frac) Omega2, która może być dokładniejsza w pobliżu zerowego przejścia MA (Omega) frac przez pomnożenie Omega przez współczynnik otrzymujący Omega około 10.907523 (frac-frac) Omega2 Rozwiązanie MA (Omega) - frac 0 daje wyniki powyżej, gdzie 2pi F Omega. Wszystkie powyższe dotyczą częstotliwości odcięcia -3dB, przedmiotu tego stanowiska. Czasami interesujące jest jednak uzyskanie profilu tłumienia w paśmie zatrzymania, który jest porównywalny z filtrem dolnoprzepustowym IIR (pojedynczy biegun LPF) z określoną częstotliwością odcięcia -3dB (taki LPF nazywa się również integratorem nieszczelnym, z biegunem nie dokładnie w DC, ale blisko niego). W rzeczywistości zarówno MA jak i IIR LPF na pierwszym rzędzie mają stok 20dBdade w paśmie stopu (trzeba zobaczyć większy N niż ten stosowany na rysunku, N32, aby to zobaczyć), ale mając na uwadze, że MA ma nowsze wartości widmowe w FkN i a 1f evelope, filtr IIR ma tylko profil 1f. Jeśli chcemy uzyskać filtr MA z podobnymi zdolnościami filtrowania szumów, jak ten filtr IIR i pasuje do częstotliwości odcięcia 3dB jako takich, porównując dwa widma, zdał sobie sprawę, że pasmo zatrzymania pasma filtru MA kończy się 3dB poniżej filtru IIR. Aby uzyskać ten sam pasmo oporu (tzn. Takie same tłumienie tłumienia hałasu) jak filtr IIR, można zmodyfikować formuły w następujący sposób: znalazłem skrypt Mathematica, w którym wyliczyłem odcięcie dla kilku filtrów, w tym MA. Wynik był oparty na przybliżeniu widma MA wokół f0 jako paraboli zgodnie z MA (Omega) Sin (OmegaN2) Sin (Omega2) Omega 2piF MA (F) około N16F2 (N-N3) pi2. I pochodzących przejścia z 1sqrt stamtąd. ndash Massimo Jan 17 16 at 2: 08 Filtr dolnoprzepustowy Są to przede wszystkim notatki To nie będzie w żadnym sensie kompletne. Zawiera fragmenty użytecznych informacji. Pseudokoda Średnia ważona średnią ruchoma (EWMA) jest nazwą najprostszej realizacji cyfrowej, czasowej realizacji niskonakładowej (pierwszej kolejności) na danych dyskretnych. Filtr ten wygładza się przy użyciu ruchomych średnich lokalnych, co czyni go słabym zwolennikiem sygnału wejściowego. Intuicyjnie reaguje powoli na szybkie zmiany (treść wysokoczęstotliwościowa), wciąż podążając za ogólną tendencją sygnału (zawartość o niskiej częstotliwości). Jest ważony zmienną (patrz x3b1), aby móc zmieniać czułość. W aplikacjach pobierających próbki w regularnych odstępach czasu (np. Dźwięku) można powiązać zawartość x3b1 z częstotliwością. W takich przypadkach często chcesz obliczyć filtrowaną serię wyjściową dla serii wejściowej, przez zapętlenie listy w następujący sposób: lub odpowiednik: ostatnia forma może być bardziej intuicyjna: zmiana filtrowanego wyjścia jest proporcjonalna do ilości zmiana i ważenie przez siłę filtru x3b1. Obydwa mogą pomagać rozważać użycie niedawnego filtrowanego wyjścia daje bezwładność systemu: Mniejszy x3b1 (większy 1-x3b1 w poprzednim) (również dla większego RC) oznacza, że ​​wyjście będzie się dostosowywać bardziej hałaśliwie i powinno wykazywać mniejszy hałas (ponieważ częstotliwość wyłączania jest niższa (sprawdź)). Większe x3b1 (mniejsze 1-x3b1) (mniejsze RC) oznacza, że ​​wyjście będzie się szybciej (mniej bezwładności), ale bardziej wrażliwe na hałas (ponieważ częstotliwość odcięcia jest wyższa (sprawdź)) Ponieważ obliczenia są lokalne, przypadki gdzie tylko chcesz, ostatnia wartość może uniknąć przechowywania dużej tablicy, wykonując następujące czynności dla każdej nowej próbki (często kilkakrotnie z rzędu, aby mieć pewność, że odpowiednio dostosowujemy). W przypadkach regularnego pobierania próbek x3b1 jest bardziej związany z szybkością adaptacji niż częstotliwością. To nadal istotne, ale uwagi dotyczące częstotliwości dotyczą mniej surowych. Zazwyczaj chcesz zaimplementować arraymemory jako pływaki - nawet jeśli zwracasz ints - aby uniknąć problemów spowodowanych zaokrąglaniem błędów. Większość problemu: gdy alfadifitacja (sam przeliczanie zmiennoprzecinkowe) jest mniejsza niż 1, staje się 0 w rzutce (truncatng) na liczbę całkowitą. Na przykład, gdy wartość alfa wynosi 0,01, różnice sygnałów mniejszych niż 100 spowodują dostosowanie 0 (przez całkowite obcięcie), więc filtr nigdy nie dostosuje się do rzeczywistej wartości ADC. EWMA ma wyraz wykładniczy w niej, ponieważ każde nowe filtrowane wyjście efektywnie wykorzystuje wszystkie wartości przed nim i skutecznie z obciążeniami wykładniczymi. Zobacz linki do wiki w celu więcej dyskusji. Przykład graficzny: zrzut ekranu z arduinoskopu - ruchowy wykres, z najnowszymi próbkami po lewej stronie. Surowy sygnał na górze to kilka sekundowych wartości próbkowania ADC z kołka pływającego, a palec dotyka go co jakiś czas. Pozostałe to wersje o niskim poziomie, przy rosnących siłach. Warto zwrócić uwagę na to: powolne wyrównywanie do podobnych kroków (podobnie jak kondensator ładowania - szybki intencją, potem wolniejszy i wolniejszy) tłumienie pojedynczych dużych skoków. że jego z pewnością można filtrować zbyt mocno (chociaż ten osąd zależy w dużej mierze od szybkości próbkowania i częstotliwości adaptacji, których potrzebujesz). w drugim obrazie oscylacja w pełnym zakresie wychodzi w połowie drogi nie tyle z powodu filtrowania, ale również w dużej mierze dlatego, że większość surowych próbek wokół niej jest nasycona na każdym końcu zakresu ADC. Na x3b1, x3c4 i częstotliwość odcięcia Ten artykuł jest stub x2017 prawdopodobnie stosem półpodpisanych notatek, nie jest dobrze sprawdzony, więc może mieć nieprawidłowe bity. (Wolno ignorować, naprawić lub powiedzieć mi) x3b1 jest współczynnikiem wygładzania, teoretycznie pomiędzy 0,0 a 1,0, w praktyce zwykle 0,2 i często 0,1 lub mniejszym, ponieważ powyżej, że ledwo robi się filtrowanie. W DSP często opiera się na: x394 t. regularnie pisemne dt. interwał czasowy pomiędzy próbkami (odwrotność częstotliwości próbkowania) wybór stałej czasowej x3c4 (tau), aka RC (ten ostatni wydaje się być odniesieniem do obwodu kondensatora rezystora plus kondensator, który również ma lowpass. które ładuje kondensator Jeśli wybierzesz RC zbliżony do dt otrzymasz alfa wyższy niż 0.5, a także częstotliwość odcięcia, która jest w pobliżu częstotliwości Nyquist (dzieje się w 0.666 (sprawdź)), która filtruje tak mało, że sprawia, że ​​filtr w praktyce często wybierasz RC, który jest co najmniej kilka wielokrotności dt, co oznacza, że ​​x3b1 jest rzędu 0,1 lub mniej. Kiedy pobieranie próbek odbywa się ściśle, tak jak w przypadku dźwięku i wielu innych aplikacji DSP , częstotliwość odcięcia, aka częstotliwość kolana jest dobrze zdefiniowana, na przykład: gdy RC0.002sek, odcięcie jest przy próbkach na częstotliwości 200 Hz, 2000 Hz i 20000 Hz, co odpowiada odpowiednio alpha 0,7, 0,2 i 0,024 (Przy tej samej prędkości próbkowania: niższa alfa to, th e spowolnić adaptację do nowych wartości i niższą skuteczną częstotliwość odcięcia) (sprawdź) Dla niskiego dolnego rzędu pierwszego: w dolnych częstotliwościach odpowiedź jest prawie całkowicie płaska, przy tej częstotliwości odpowiedź wynosi -3dB (zaczęła się zmniejszać w miękki bendknee) przy wyższych częstotliwościach to spadnie na 6dboctave (20dBdecade) Wyższe odchylenia rzędu spadają szybciej i mają trudniejsze kolano. Należy zauważyć, że nastąpi również przesunięcie fazowe, które pozostaje za wejściem. Zależy to od częstotliwości, jaką rozpoczyna się wcześniej niż spadek amplitudy, i będzie wynosić -45 stopni przy częstotliwości kolana (sprawdź). Przykład Arduino Ten artykuł jest stub x2017 prawdopodobnie stosem półpodpisanych notatek, nie jest dobrze sprawdzony, więc może mieć nieprawidłowe bity. (Możesz zignorować, naprawić lub powiedzieć mi) Jest to wersja jednoczęściowa, bo kiedy jesteś zainteresowany tylko (ostatnią) wartością wyjściową. Semi-sortowane zbadałam średnią wykładniczą. Jest wystarczająco dużo wyjaśnień na ten temat w Internecie, ale nie wyjaśniają one stały czas. Mam jeden kanał z sygnałem czasu T sekund z częstotliwością próbkowania fs. Jeśli chcę wykonać średnią tego sygnału czasowego, musimy zastosować metodę liniową lub wykładniczą. Średnia metoda liniowa jest dość prosta, więc nie ma kłopotów w stosowaniu. Jeśli jednak próbuję zastosować średnią metodę wykładniczą, istnieją pewne problemy. Jeśli sygnał czasowy zmienia się bardzo szybko, wolimy używać stałej szybkości czasowej 125 ms. Również sygnał czasowy zmienia się powoli, przy 1000 ms wolnej stałej czasowej jest lepszy, ale w tej sytuacji nie wiem jak mogę zastosować tę stałą czasową z sygnałem czasu. Czy jest jakieś wyjaśnienie lub jakiś przykład do wykonania średniej wykładniczej ze stałą czasową zapytał 29 sierpnia 13 w 16: 54I mam ciągłą wartość, dla której Id chce wyznaczyć wykładniczą średnią ruchoma. Zwykle Id użyj tylko standardowej formuły: gdzie S n jest nową średnią, alfa jest alfa, Y jest próbką, a S n-1 jest poprzednią średnią. Niestety, z powodu różnych kwestii nie mam spójnego czasu próbki. Mogę wiedzieć, że mogę próbować najwięcej, powiedzmy, raz na milisekundę, ale ze względu na czynniki poza kontrolą, może nie być w stanie pobrać próbki przez kilka milisekund na raz. Prawdopodobnie bardziej popularnym przypadkiem jest to, że prosto próbuję trochę wcześnie lub później: zamiast próbkowania w 0, 1 i 2 ms. Próbuję w 0, 0.9 i 2.1 ms. Oczekuję, że niezależnie od opóźnień moja częstotliwość próbkowania będzie daleko, znacznie powyżej limitu Nyquista, a więc nie muszę się martwić o aliasing. Sądzę, że mogę sobie z tym radzić w sposób mniej lub bardziej rozsądny, zmieniając odpowiednio alfę, w oparciu o długość czasu od ostatniej próbki. Jedną z moich uzasadnień jest to, że EMA interpoluje liniowo między poprzednim punktem danych a bieżącym. Jeśli rozważymy obliczenie EMA poniższej listy próbek w odstępach t: 0,1,2,3,4. Powinniśmy uzyskać taki sam wynik, jeśli używamy interwału 2t, gdzie wejścia stają się 0,2,4, w prawo Jeśli EMA założy, że w t2 wartość wynosiła 2 od t0. to byłby taki sam jak obliczenie przedziału t obliczające na 0,2,2,4,4, co nie robi. Czy to ma sens w ogóle Czy ktoś może mi powiedzieć, jak odpowiednio zmodyfikować alfa Proszę pokazać swoją pracę. To znaczy. pokaż mi matematykę, która dowodzi, że twoja metoda naprawdę działa dobrze. zapytał 21 czerwca o godzinie 13:05 Nie powinieneś mieć tej samej EMA dla różnych danych wejściowych. Pomyśl o EMA jako filtrze, pobieranie próbek w formacie 2t jest równoznaczne z pobieraniem próbek w dół, a filtr daje inny wynik. Dla mnie to jasne, ponieważ 0,2,4 zawiera składowe o wyższej częstotliwości niż 0,1,2,3,4. Chyba że pytanie brzmi, jak zmienić filtr w locie, aby dać to samo. Być może brakuje mi czegoś ndash freespace 21 czerwca o godzinie 15:52 ale wejście nie jest inne, jest mniej próbkowane. 0,2,4 w przedziałach 2t jest takie jak 0, 2, 4 w odstępach t, ​​gdzie oznacza, że ​​próbka jest ignorowana ndash Curt Sampson 21 czerwca 21 w 23:45 Ta odpowiedź oparta na moim dobrym zrozumieniu low-pass filtrów (wykładnicza średnia ruchoma jest naprawdę tylko jednym biegunowym filtrem dolnoprzepustowym), ale moje mgliste zrozumienie tego, czego szukasz. Myślę, że poniżej jest to, czego chcesz: Po pierwsze, możesz uprościć równanie trochę (wygląda bardziej skomplikowane, ale to łatwiejsze w kodzie). Im będzie używać Y dla wyjścia i X dla wejścia (zamiast S dla wyjścia i Y dla wejścia, jak zrobiłeś). Po drugie, wartość alfa jest równa 1-e - Deltattau, gdzie Deltat jest czasem między próbkami, a tau jest stałą czasową filtra dolnoprzepustowego. Mówię w cudzysłowie, bo to działa dobrze, gdy Deltattau jest niewielki w porównaniu do 1, a alfa 1-e-deltattau asympt Deltattau. (Ale nie za małe: wystarczy uruchomić kwantyzację, a jeśli nie zastosujesz się do egzotycznych technik, zazwyczaj potrzebujesz dodatkowych N bitów rozdzielczości w zmiennej stanu S, gdzie Nlog-2 (alpha).) W przypadku większych wartości Deltattau efekt filtrowania zaczyna zanikać, aż dojdziesz do punktu, w którym alpha jest bliska 1 i youre po prostu tylko przydzielić wejście do wyjścia. Powinno to działać poprawnie z różnymi wartościami Deltatu (odmiana Deltata nie jest bardzo ważna, jeśli alfa jest mała, w przeciwnym razie będziesz musiał uruchomić niektóre dziwne problemy z Nyquist, aliasing itp.), A jeśli pracujesz na procesorze, gdzie mnożenie jest tańszy niż podział, lub kwestie dotyczące punktów stałych są ważne, prekursor omega 1tau i rozważają próby zbliżenia formuły do ​​alfa. Jeśli naprawdę chcesz wiedzieć, jak wyznaczyć wzór alfa 1-e - Deltattau, rozważyć jego równanie różniczkowe: który, gdy X jest funkcją kroku jednostkowego, ma rozwiązanie Y 1 - e - ttau. Dla małych wartości Deltatu pochodna może być przybliżona przez DeltaYDeltat, uzyskując Y tau DeltaYDeltat X DeltaY (XY) (Deltattau) alfa (XY), a ekstrapolacja alfa 1-e - Deltattau pochodzi z próby dopasowania zachowań do jednostka kroku. Czy mógłbyś rozwinąć się na quottrying, aby dopasować zachowanie się do części Rozumiem, że twój roztwór Y1 - exp (-t47) i jego uogólnienie do skalowanej funkcji kroku z wielkością x i warunku początkowego y (0). ale nie widzę, jak połączyć te pomysły, aby osiągnąć swój wynik. ndash Rhys Ulerich 4 maja 13 w 22:34 To nie jest kompletna odpowiedź, ale może to być początek. Jeśli chodzi o to w ciągu godziny lub mniej, grając Im, publikując je jako przykład tego, czego szukałem, a może inspiracja dla innych, pracujących nad tym problemem. Zaczynam od S 0. która jest średnią wynikającą z poprzedniej średniej S -1 i próbki Y 0 przy t 0. (t1 - t0) to mój interwał próbki, a wartość alfa jest ustawiona na dowolną wartość dla tego przedziału próbki i okres, w którym chcę przeciętnie. Rozważyłem, co się stanie, jeśli brakuje mi próbki w t1, a zamiast tego muszę zrobić z próbką Y2 w t2. Cóż, możemy zacząć od rozwinięcia równania, aby zobaczyć, co by się stało, gdybyśmy mieli Y1: zauważam, że seria wydaje się rozciągać nieskończenie w ten sposób, ponieważ możemy zastąpić Sn w prawą stronę na czas nieokreślony: ok , więc to nie jest wielomian (głupie), ale jeśli pomnożymy początkowy termin przez jeden, wtedy widzimy wzór: Hm: jego wykładnicza seria. Niespodzianka Quelle Wyobraź sobie, że wychodząc z równania dla wykładniczej średniej ruchomej Więc, mam to x 0 x 1 x 2 x 3. co się dzieje i jestem pewien, że mam zapach e lub naturalny logarytm kopa tutaj, ale nie pamiętam, dokąd zmierzam, zanim zabraknie mi czasu. Każda odpowiedź na to pytanie lub dowód poprawności takiej odpowiedzi bardzo zależy od danych, które mierzysz. Jeśli pobrano próbki w t 0 0ms. t 1 0,9ms i t2 2,1ms. ale wybór alfa oparty jest na odstępach 1 ms i dlatego potrzebujesz lokalnie ustawionej alfa. dowód prawidłowości wyboru oznaczałby wiedzenie o wartościach próbek w t1ms i t2ms. Prowadzi to do pytania: Czy można interpolować dane w sposób rozsądny, aby mieć rozsądne szacunki co do wartości między nimi? Czy można nawet interpolować średnią samą siebie? Jeśli żaden z tych sposobów nie jest możliwy, to tak dalece, jak to widzę, logiczne wybór między wartością Y (t) to ostatnio obliczona średnia. tzn. Y (t) asympt S n, gdzie n jest maksymalne, tak że tn ltt. Ten wybór ma prostą konsekwencję: Zostaw sam alfa, bez względu na różnicę czasu. Jeśli z drugiej strony możliwe jest interpolowanie wartości, to da to uśmiercalne próbki z przedziałami stałymi. Wreszcie, jeśli nawet możliwe do interpolowania przeciętnej wagi, sprawiłoby to, że pytanie stało się bez znaczenia. Cześć, Myślę, że mogę interpolować moje dane: biorąc pod uwagę, że próbuję ją w dyskretnych odstępach czasu, I'm doing to z normą EMA W każdym razie, zakładam, że potrzebuję co wskazuje, że działa jak standardowa EMA, która również przyniesie nieprawidłowy wynik, jeśli wartości nie zmienią się dość sprawnie pomiędzy okresami próbkowania. ndash Curt Sampson 21 czerwca o 15:21 Ale to właśnie mówię: Jeśli weźmiemy pod uwagę EMA interpolację swoich wartości, zrobisz to, jeśli zostawisz alfa tak jak jest (bo dodanie najnowszej średniej jako Y nie zmienia średniej) . Jeśli mówisz, że potrzebujesz czegoś, co to się dzieje, a także standardowy EMAquot - co jest nie tak z oryginałem Jeśli nie masz więcej informacji na temat danych, które chcesz zmierzyć, wszelkie lokalne korekty alfa będą w najlepszym arbitralnym stylu. ndash balpha 9830 21 czerwca 21 w 15:31 Chciałbym zostawić samą wartość alfa i wypełnić brakujące dane. Ponieważ nie wiesz, co dzieje się w czasie, gdy nie można pobrać próbki, możesz wypełnić te próbki liczbami 0s, lub przytrzymać poprzednią wartość stabilną i użyć tych wartości dla EMA. Lub trochę interpolacji wstecznej po otrzymaniu nowej próbki, uzupełnij brakujące wartości i uzupełnij EMA. Co staram się dostać, to masz wejście xn, które ma dziury. Nie ma sposobu na obejście faktu, że brakuje danych. Możesz więc użyć zerowego zlecenia lub ustawić go na zero lub jakąś interpolację między xn a xnM. gdzie M jest liczbą brakujących próbek, a początkiem luki. Możliwe nawet użycie wartości przed n. Odpowiedziałem 21 czerwca 09 o 13:35 Od spędzenia godziny lub tak mucking o trochę z matematyki dla tego, myślę, że po prostu zmieniając alpha faktycznie dać mi prawidłowe interpolacji między dwoma punktami, o których mówisz, ale w znacznie prostszy sposób. Co więcej, myślę, że zmiana alfa będzie również właściwie dotyczyć próbek pobranych między standardowymi interwałami próbkowania. Innymi słowy, szukam tego, co opisałeś, ale próbując użyć matematyki, aby dowiedzieć się, jak to zrobić. ndash Curt Sampson 21 czerwca o godzinie 14:07 Nie sądzę, że taka bestia jest interpolowana przez quotproper. Po prostu nie wiesz co się stało w czasie, gdy nie próbujesz. Dobra i zła interpolacja oznacza pewną wiedzę o tym, czego brakowało, ponieważ musisz zmierzyć się z tym, aby ocenić, czy interpolacja jest dobra czy zła. Chociaż to powiedzieliśmy, możesz postawić ograniczenia, tj. Przy maksymalnym przyspieszeniu, szybkości itp. Myślę, że jeśli wiesz, jak modelować brakujące dane, to po prostu modeluj brakujące dane, a następnie zastosuj algorytm EMA bez zmiany, niż zmiana alfa. Po prostu moje 2c :) ndash freespace 21 czerwca o godzinie 14:17 To jest dokładnie to, co dostałem w mojej edycji na pytanie 15 minut temu: po prostu po prostu nie wiesz co się stało w czasie, gdy nie próbujesz, ale to prawda nawet jeśli próbujesz w każdym wyznaczonym przedziale. Tak więc moje rozważania Nyquist: dopóki znasz formę falową, nie zmieniaj kierunków więcej niż co kilka próbek, rzeczywisty przedział próbki nie powinien mieć znaczenia i powinien być w stanie się zmieniać. Wydaje się, że równanie EMA oblicza się tak, jakby przebieg zmienił się liniowo od ostatniej wartości próbki do aktualnej. ndash Curt Sampson 21 czerwca o godzinie 14:26 Nie sądzę, że to prawda. Twierdzenie Nyquist wymaga, aby co najmniej 2 próbki na okres pozwalały na jednoznaczną identyfikację sygnału. Jeśli tego nie zrobisz, masz aliasing. Byłby taki sam jak pobieranie próbek jako fs1 przez pewien czas, a następnie fs2, a następnie z powrotem do fs1 i otrzymasz aliasing danych, gdy próbujesz z fs2, jeśli fs2 jest poniżej limitu Nyquist. Ja również muszę przyznać, że nie rozumiem, co masz na myśli przez zmiany kwwaveform liniowo od ostatniej próbki do bieżącego jednokrotnego. Czy mógłbyś wyjaśnić Cheers, Steve? ndash freespace 21 czerwca o godzinie 14:36 ​​To jest podobne do otwartego problemu na mojej liście rzeczy do zrobienia. Mam jeden schemat opracował do pewnego stopnia, ale nie ma matematycznych pracy, aby z powrotem tej sugestii jeszcze. Zaktualizuj podsumowanie wzmacniacza: Chcesz utrzymać współczynnik wygładzania (alpha) niezależnie od współczynnika kompensacji (który tutaj odnoszę się do wersji beta). Jasons doskonała odpowiedź już zaakceptowana tutaj działa świetnie dla mnie. Jeśli możesz zmierzyć czas od ostatniej próbki (w zaokrąglonych wielokrotnościach stałego czasu próbkowania - więc 7.8 ms od ostatniej próbki to 8 jednostek), które mogłyby zostać użyte do wielokrotnego wygładzania. W tym przypadku zastosuj formułę 8 razy. Skutecznie wygładziłeś się bardziej na bieżąco. Aby uzyskać lepsze wygładzenie, musimy dostosować alfę podczas stosowania formuły 8 razy w poprzednim przypadku. Co to będzie wygładzać niedociągnięcie przybliżenia Brakuje już 7 przykładów w powyższym przykładzie Jest to przybliżone w kroku 1 przy spłaszczonym ponownym zastosowaniu wartości bieżącej o dodatkowe 7 razy Jeśli zdefiniujemy współczynnik aproksymacji beta, który będzie stosowany wraz z alfa (jako alphabeta zamiast alfa), zakładamy, że 7 nieodebranych próbek zmieniało się płynnie pomiędzy poprzednią i bieżącą wartością próbki. Odpowiedziałem 21 czerwca 09 o 13:35 Pomyślałem o tym, ale trochę mucking o matematyki doprowadziły mnie do punktu, w którym wierzę, że zamiast stosować wzór osiem razy z wartością próbki, mogę obliczyć nowego alfa, który pozwoli mi zastosować ten wzór raz i dać mi ten sam wynik. Ponadto automatycznie zajmowałoby się kwestią próbek przesuniętych od dokładnych czasów próbkowania. ndash Curt Sampson 21 czerwca 21 w 13:47 Pojedyncza aplikacja jest w porządku. Nie jestem jeszcze pewna, jak dobry jest przybliżenie 7 brakujących wartości. Jeśli ruch ciągły sprawia, że ​​wartość jest bardzo krótka w ciągu ośmiu milisekund, przybliżenie może być całkiem nieskuteczne. Ale jeśli pobierasz próbkę w odległości 1 ms (najwyższa rozdzielczość, za wyjątkiem opóźnionych próbek), to już wiesz, że jitter w odległości 1 ms nie jest istotny. Czy to rozumowanie działa dla Ciebie (wciąż próbuję przekonać siebie samego). ndash nik cze 21 09 o 14:08 prawda. Jest to czynnik beta z mojego opisu. Współczynnik beta zostałby obliczony na podstawie odstępu różnicy i bieżącej i poprzedniej. Nowy alfa będzie (alphabeta), ale będzie używany tylko dla tej próbki. Chociaż wydaje mi się, że 39 alfa w formule, mam tendencję do stałego alfa (współczynnik wygładzania) i niezaleŜnie obliczonej beta (czynnik strojenia), który kompensuje obecnie próbki. ndash nik cze 21 09 w 15:23

No comments:

Post a Comment