Sunday, 10 December 2017

Filtr o średniej wartości ruchomej


Średnia ruchoma Ten przykład pokazuje, w jaki sposób obliczyć średnią ruchomą szeregu czasowego w Excelu. Średnia ruchoma służy do łagodzenia nieprawidłowości (szczytów i dolin) w celu łatwego rozpoznawania trendów. 1. Najpierw przyjrzyjmy się naszej serii czasowej. 2. Na karcie Dane kliknij Analiza danych. Uwaga: nie można znaleźć przycisku Analiza danych Kliknij tutaj, aby załadować dodatek Analysis ToolPak. 3. Wybierz średnią ruchomą i kliknij OK. 4. Kliknij pole Input Range i wybierz zakres B2: M2. 5. Kliknij w polu Interwał i wpisz 6. 6. Kliknij pole Zakres wyjściowy i wybierz komórkę B3. 8. Narysuj wykres tych wartości. Objaśnienie: ponieważ ustawiliśmy przedział na 6, średnia ruchoma jest średnią z poprzednich 5 punktów danych i bieżącego punktu danych. W rezultacie szczyty i doliny są wygładzone. Wykres pokazuje rosnący trend. Program Excel nie może obliczyć średniej ruchomej dla pierwszych 5 punktów danych, ponieważ nie ma wystarczającej liczby poprzednich punktów danych. 9. Powtórz kroki od 2 do 8 dla przedziału 2 i odstępu 4. Wniosek: Im większy przedział, tym bardziej wygładzone są szczyty i doliny. Im mniejszy przedział czasu, tym bardziej zbliżone są średnie ruchome do rzeczywistych punktów danych. Naukowiec i inżynier Przewodnik po cyfrowym przetwarzaniu sygnału Autor: Steven W. Smith, Ph. D. Rozdział 28: Cyfrowe procesory sygnałowe Stałe i zmiennoprzecinkowe przetwarzanie sygnału cyfrowego można podzielić na dwie kategorie: punkt stały i zmiennoprzecinkowy. Dotyczą one formatu używanego do przechowywania i manipulowania liczbami w urządzeniach. Stałe punkty DSP zwykle reprezentują każdą liczbę z minimum 16 bitów, chociaż można użyć innej długości. Na przykład Motorola produkuje rodzinę stałych punktów DSP, które wykorzystują 24 bity. Istnieją cztery popularne sposoby, że te 2 16 65536 możliwych wzorów bitowych może reprezentować liczbę. W przypadku liczby całkowitej bez znaku. zapisany numer może przyjąć dowolną liczbę całkowitą od 0 do 65 535. Podobnie, liczba całkowita ze znakiem zawiera dwa dodatkowe elementy, aby zakres zawierał liczby ujemne, od -32 768 do 32 767. Przy niepodpisanej notacji frakcji, 65 536 poziomów jest rozłożonych równomiernie pomiędzy 0 a 1. Wreszcie, format podpisanej frakcji pozwala na liczby ujemne, równo rozłożone pomiędzy -1 i 1. W porównaniu, zmiennoprzecinkowe procesory DSP zwykle używają minimum 32 bitów do przechowywania każdego z nich. wartość. Daje to o wiele więcej wzorców bitowych niż dla ustalonego punktu, a dokładniej 2 32 4 294 967 296. Kluczową cechą notacji zmiennoprzecinkowej jest to, że reprezentowane liczby nie są równomiernie rozmieszczone. W najpopularniejszym formacie (ANSIIEEE Std. 754-1985), największe i najmniejsze liczby to plusmn3.4times10 38 i 1.210 -38. odpowiednio. Przedstawione wartości są nierównomiernie rozmieszczone pomiędzy tymi dwoma skrajnościami, tak że przerwa między dowolnymi dwiema liczbami jest około dziesięć milionów razy mniejsza niż wartość liczb. Jest to ważne, ponieważ powoduje duże rozbieżności między dużymi liczbami, ale małe luki między małymi liczbami. Notacja zmiennoprzecinkowa omówiona jest bardziej szczegółowo w rozdziale 4. Wszystkie zmiennoprzecinkowe procesory DSP mogą również obsługiwać stałe numery punktów, konieczność implementowania liczników, pętli i sygnałów pochodzących z ADC i przechodzenia do DAC. Nie oznacza to jednak, że stała matematyka punktowa będzie wykonywana tak szybko, jak operacje zmiennoprzecinkowe zależy od architektury wewnętrznej. Na przykład, procesory DSP SHARC są zoptymalizowane zarówno dla operacji zmiennoprzecinkowych, jak i punktów stałych i wykonują je z jednakową wydajnością. Z tego powodu urządzenia SHARC są często określane jako 32-bitowe DSP, a nie tylko Floating Point. Rysunek 28-6 ilustruje podstawowe kompromisy między stałymi i zmiennoprzecinkowymi procesorami DSP. W rozdziale 3 podkreśliliśmy, że arytmetyczna pozycja punktu stałego jest znacznie szybsza niż zmiennoprzecinkowa w komputerach ogólnego przeznaczenia. Jednak w przypadku DSP prędkość jest prawie taka sama, co wynika z dużej optymalizacji sprzętu pod kątem operacji matematycznych. Wewnętrzna architektura zmiennoprzecinkowego procesora DSP jest bardziej skomplikowana niż w przypadku urządzenia o stałym punkcie. Wszystkie rejestry i szyny danych muszą mieć szerokość 32 bitów zamiast tylko 16 mnożników, a ALU musi być w stanie szybko wykonać arytmetykę zmiennoprzecinkową, zestaw instrukcji musi być większy (aby mogły obsłużyć zarówno liczby zmiennoprzecinkowe, jak i stałe), oraz wkrótce. Punkt zmiennoprzecinkowy (32-bitowy) ma lepszą precyzję i większy zakres dynamiki niż stały punkt (16-bitowy). Ponadto programy zmiennoprzecinkowe często mają krótszy cykl programowania, ponieważ programista zazwyczaj nie musi się martwić o takie problemy, jak przepełnienie, niedopełnienie i błąd zaokrąglania. Z drugiej strony, stałe punkty DSP są tradycyjnie tańsze niż urządzenia zmiennoprzecinkowe. Nic nie zmienia się szybciej niż cena elektroniki - wszystko, co znajdziesz w książce, będzie nieaktualne, zanim zostanie wydrukowane. Niemniej jednak koszt jest kluczowym czynnikiem w zrozumieniu, w jaki sposób rozwijają się DSP, i musimy dać ci ogólny pomysł. Kiedy ta książka została ukończona w 1999 r., Stałe punkty sprzedaży DSP sprzedawano od 5 do 100, podczas gdy urządzenia zmiennoprzecinkowe były w zakresie od 10 do 300. Ta różnica w kosztach może być postrzegana jako miara względnej złożoności między urządzeniami. Jeśli chcesz dowiedzieć się, jakie są dzisiaj ceny. musisz dziś spojrzeć. Teraz zwróćmy naszą uwagę na wydajność, jaką może uzyskać 32-bitowy system zmiennoprzecinkowy, czyli 16-bitowy punkt stały. Odpowiedź na to pytanie to stosunek sygnału do szumu. Załóżmy, że przechowujemy liczbę w 32-bitowym formacie zmiennoprzecinkowym. Jak wcześniej wspomniano, różnica między tą liczbą a sąsiednim sąsiadem wynosi około jednej dziesiątej milionowej wartości liczby. Aby zapisać numer, musi on być zaokrąglany w górę lub w dół o maksymalnie połowę rozmiaru przerwy. Innymi słowy, za każdym razem, gdy zapisujemy liczbę w notacji zmiennoprzecinkowej, dodajemy szum do sygnału. To samo dzieje się, gdy liczba jest zapisywana jako 16-bitowa stała wartość punktowa, z tym że dodatkowy hałas jest znacznie gorszy. Dzieje się tak dlatego, że luki między sąsiednimi liczbami są znacznie większe. Załóżmy na przykład, że przechowujemy liczbę 10.000 jako liczbę całkowitą ze znakiem (z zakresu od -32,768 do 32 767). Różnica między liczbami to jedna dziesiąta tysięczna wartości liczby, którą przechowujemy. Jeśli chcemy zapisać liczbę 1000, różnica między liczbami wynosi tylko jedną jedną tysięczną wartości. Hałas w sygnałach jest zwykle reprezentowany przez odchylenie standardowe. Zostało to szczegółowo omówione w rozdziale 2. W tym przypadku ważnym faktem jest, że standardowe odchylenie tego szumu kwantyzacji wynosi około jednej trzeciej wielkości przerwy. Oznacza to, że stosunek sygnału do szumu do przechowywania liczby zmiennoprzecinkowej wynosi około 30 milionów do jednego, podczas gdy dla stałego numeru punktu jest to tylko około dziesięć tysięcy na jeden. Innymi słowy, zmiennoprzecinkowe ma około 30 000 razy mniej szum kwantyzacji niż punkt stały. Jest to ważny sposób, w jaki procesory DSP różnią się od tradycyjnych mikroprocesorów. Załóżmy, że wdrażamy filtr FIR w stałym punkcie. W tym celu przechodzimy przez każdy współczynnik, mnożymy go przez odpowiednią próbkę z sygnału wejściowego i dodajemy produkt do akumulatora. Oto problem. W tradycyjnych mikroprocesorach ten akumulator jest po prostu kolejną 16-bitową zmienną punktową. Aby uniknąć przepełnienia, musimy skalować dodawane wartości i odpowiednio dodać szum kwantyzacji na każdym etapie. W najgorszym przypadku ten szum kwantowania po prostu doda, znacznie obniżając stosunek sygnału do szumu w systemie. Na przykład, w filtrze FIR o współczynniku 500, szum na każdej próbce wyjściowej może być 500 razy większy od szumu na każdej próbce wejściowej. Stosunek sygnału do szumu z dziesięciu tysięcy do jednego spadł do potwornej dwudziestu jeden. Chociaż jest to skrajny przypadek, ilustruje główny punkt: kiedy wiele operacji jest przeprowadzanych na każdej próbce, jest ona zła, naprawdę zła. Więcej szczegółów znajduje się w rozdziale 3. Procesory DSP radzą sobie z tym problemem za pomocą akumulatora o zwiększonej precyzji. Jest to specjalny rejestr, który ma 2-3 razy więcej bitów niż inne lokalizacje w pamięci. Na przykład w 16-bitowym procesorze DSP może on zawierać od 32 do 40 bitów, podczas gdy w procesorach SHARC zawiera 80 bitów na potrzeby stałego punktu. Ten rozszerzony zasięg praktycznie eliminuje hałas zaokrąglania w trakcie kumulacji. Jedynym błędem zaokrąglenia jest sytuacja, w której akumulator jest skalowany i przechowywany w 16-bitowej pamięci. Ta strategia działa bardzo dobrze, chociaż ogranicza sposób wykonywania niektórych algorytmów. Dla porównania, zmiennoprzecinkowy ma tak niski szum kwantyzacji, że techniki te zwykle nie są konieczne. Oprócz mniejszego szumu kwantyzacji, systemy zmiennoprzecinkowe są również łatwiejsze do opracowania algorytmów. Większość technik DSP opiera się na powtarzanych multiplikacjach i dodatkach. W ustalonym punkcie po każdej operacji należy rozważyć możliwość wystąpienia przepełnienia lub niedopełnienia. Programista musi nieustannie rozumieć amplitudę liczb, sposób gromadzenia się błędów kwantowania i jakie skalowanie musi mieć miejsce. Dla porównania, problemy te nie pojawiają się w liczbach zmiennoprzecinkowych, które same się zajmują (z wyjątkiem rzadkich przypadków). Aby lepiej zrozumieć ten problem, rys. 28-7 pokazuje tabelę z podręcznika użytkownika SHARC. Opisuje sposoby mnożenia dla formatów stałych i zmiennoprzecinkowych. Po pierwsze, spójrz, jak liczby zmiennoprzecinkowe mogą być mnożone, istnieje tylko jeden sposób To jest, Fn Fx Fy, gdzie Fn, Fx i Fy są jednym z 16 rejestrów danych. To nie może być prostsze. Dla porównania spójrz na wszystkie możliwe polecenia dla mnożenia punktowego. Jest to wiele opcji potrzebnych do skutecznego radzenia sobie z problemami zaokrąglania, skalowania i formatowania. Na rys. 28-7, Rn, Rx i Ry odnoszą się do dowolnego z 16 rejestrów danych, a MRF i MRB to akumulatory 80-bitowe. Pionowe linie wskazują opcje. Na przykład, górny lewy wpis w tej tabeli oznacza, że ​​wszystkie poniższe są poprawnymi poleceniami: Rn Rx Ry, MRF Rx Ry i MRB Rx Ry. Innymi słowy, wartość dowolnych dwóch rejestrów może być pomnożona i umieszczona w innym rejestrze lub w jednym z rozszerzonych akumulatorów precyzyjnych. Ta tabela pokazuje również, że liczby mogą być albo podpisane, albo niepodpisane (S lub U), i mogą być ułamkowe lub całkowite (F lub I). Opcje RND i SAT to sposoby kontrolowania przepełnienia i przepełnienia rejestru. W tabeli są inne szczegóły i opcje, ale nie są one istotne dla naszej obecnej dyskusji. Ważną ideą jest to, że programista z ustalonym punktem musi rozumieć dziesiątki sposobów na przeprowadzenie bardzo podstawowego zadania pomnożenia. Natomiast programista zmiennoprzecinkowy może spędzić swój czas koncentrując się na algorytmie. Biorąc pod uwagę te kompromisy pomiędzy stałym a zmiennoprzecinkowym, w jaki sposób wybrać, którego użyć. Oto kilka rzeczy do rozważenia. Najpierw sprawdź, ile bitów jest używanych w ADC i DAC. W wielu aplikacjach 12-14 bitów na próbkę jest zwrotem w przypadku używania stałego lub zmiennoprzecinkowego. Na przykład telewizja i inne sygnały wideo zwykle używają 8-bitowego ADC i DAC, a dokładność ustalonego punktu jest akceptowalna. Dla porównania, profesjonalne aplikacje audio mogą próbkować nawet 20 lub 24 bity i prawie na pewno potrzebują zmiennoprzecinkowego, aby uchwycić duży zakres dynamiki. Następną rzeczą, na którą należy spojrzeć, jest złożoność algorytmu, który zostanie uruchomiony. Jeśli jest względnie prosty, pomyśl punkt stały, jeśli jest bardziej skomplikowany, pomyśl o zmiennoprzecinkowej. Na przykład filtrowanie FIR i inne operacje w dziedzinie czasu wymagają tylko kilkudziesięciu linii kodu, dzięki czemu nadają się do stałego punktu. W przeciwieństwie do tego algorytmy w dziedzinie częstotliwości, takie jak analiza spektralna i splot FFT, są bardzo szczegółowe i mogą być znacznie trudniejsze do zaprogramowania. Chociaż można je zapisać w ustalonym punkcie, czas rozwijania zostanie znacznie skrócony, jeśli zostanie użyty zmiennoprzecinkowy. Wreszcie, pomyśl o pieniądzach: jak ważny jest koszt produktu i jak ważny jest koszt rozwoju Po wybraniu punktu stałego, koszt produktu zostanie zmniejszony, ale koszt opracowania będzie prawdopodobnie wyższy ze względu na koszty. trudniejsze algorytmy. W odwrotnym kierunku, zmiennoprzecinkowe generalnie spowodują szybszy i tańszy cykl rozwoju, ale droższy produkt końcowy. Rysunek 28-8 pokazuje niektóre z głównych trendów w DSP. Rysunek (a) ilustruje wpływ, jaki Cyfrowy Procesor Sygnałów wywarł na rynek wbudowany. Są to aplikacje wykorzystujące mikroprocesor do bezpośredniego obsługiwania i kontrolowania niektórych większych systemów, takich jak telefon komórkowy, kuchenka mikrofalowa lub panel wyświetlacza samochodowego. Nazwa mikrokontroler jest często używany w odniesieniu do tych urządzeń, aby odróżnić je od mikroprocesorów używanych w komputerach osobistych. Jak pokazano w (a), około 38 wbudowanych projektantów już zaczęło korzystać z DSP, a kolejne 49 rozważa zmianę. Wysoka wydajność i moc obliczeniowa procesorów DSP sprawia, że ​​są one idealnym wyborem dla projektów wbudowanych. Jak zilustrowano w (b), około dwa razy więcej inżynierów używa obecnie stałego punktu, jak używa zmiennoprzecinkowe DSP. Jednak zależy to w dużym stopniu od aplikacji. Stały punkt jest bardziej popularny w konkurencyjnych produktach konsumenckich, gdzie koszt elektroniki musi być bardzo niski. Dobrym tego przykładem są telefony komórkowe. Gdy rywalizujesz o sprzedaż milionów produktów, różnica w cenie zaledwie kilku dolarów może być różnicą między sukcesem a porażką. Dla porównania, zmiennoprzecinkowe jest bardziej powszechne, gdy wymagana jest większa wydajność, a koszt nie jest istotny. Załóżmy na przykład, że projektujesz system obrazowania medycznego, taki jak skaner tomografii komputerowej. Tylko kilkaset modelu zostanie sprzedanych za cenę kilkuset tysięcy dolarów. W przypadku tej aplikacji koszt DSP jest nieistotny, ale wydajność jest krytyczna. Pomimo większej liczby stałych punktów DSP, rynek zmiennoprzecinkowy jest najszybciej rosnącym segmentem. Jak pokazano w (c), ponad połowa inżynierów używających 16-bitowych urządzeń planuje migrację do zmiennoprzecinkowych w pewnym momencie w najbliższej przyszłości. Przed opuszczeniem tego tematu powinniśmy ponownie podkreślić, że zmiennoprzecinkowe i stałe punkty zazwyczaj używają odpowiednio 32 bitów i 16 bitów, ale nie zawsze. Na przykład rodzina SHARC może reprezentować liczby w 32-bitowym punkcie stałym, tryb powszechny w cyfrowych aplikacjach audio. To sprawia, że ​​poziomy kwantyzacji 2 32 są rozłożone równomiernie w stosunkowo niewielkim zakresie, powiedzmy, pomiędzy -1 i 1. W porównaniu z tym, notacja zmiennoprzecinkowa umieszcza poziomy kwantyzacji 2 32 logarytmicznie w szerokim zakresie, zazwyczaj plusmn3.4times10 38. Daje to 32 - bitowy punkt stały lepsza precyzja. to znaczy, błąd kwantyzacji na dowolnej próbce będzie niższy. Jednak 32-bitowy zmiennoprzecinkowy ma wyższy zakres dynamiki. co oznacza, że ​​istnieje większa różnica pomiędzy największą liczbą a najmniejszą liczbą, które można reprezentować. Dokumentacja dfilt. latticemamin Najważniejsza jest pozycja etykiety na diagramie, która określa, gdzie ma zastosowanie format. Jako jeden przykład spójrz na etykietę ProductFormat, która zawsze podąża za współczynnikiem mnożenia elementu w przepływie sygnału. Etykieta wskazuje, że współczynniki opuszczają element mnożenia o długości słowa i długości ułamka powiązanej z operacjami produktu, które zawierają współczynniki. Po przejrzeniu tabeli widać, że ProductFormat odnosi się do właściwości ProductFracLength. ProductWordLength. i ProductMode, które w pełni definiują format współczynnika po operacjach mnożenia (lub produktu). Właściwości W tej tabeli widać właściwości związane z minimalną fazą, ruchomą średnią siatkową implementacją obiektów dfilt. Uwaga: Tabela zawiera listę wszystkich właściwości, które może posiadać filtr. Wiele właściwości jest dynamicznych, co oznacza, że ​​istnieją tylko w odpowiedzi na ustawienia innych właściwości. Możesz nie widzieć wszystkich wymienionych nieruchomości przez cały czas. Aby wyświetlić wszystkie właściwości filtru w dowolnym momencie, użyj miejsca, w którym hd jest filtrem. Aby uzyskać więcej informacji na temat właściwości tego filtru lub dowolnego obiektu z dfiltem, zobacz Właściwości filtru punktów stałych. Ustawia tryb używany do reagowania na warunki przepełnienia w arytmetyce stałoprzecinkowej. Wybierz z nasycenia (ogranicz wynik do największej dodatniej lub ujemnej wartości reprezentowalnej) lub zawiń (ustaw przepełnienie wartości do najbliższej reprezentowalnej wartości za pomocą arytmetyki modularnej). Dokonany wybór wpływa tylko na akumulator i arytmetykę wyjściową. Współczynnik arytmetyczna i wejściowa zawsze nasyca się. Wreszcie, produkty nigdy nie przepełniają 8212, zachowują pełną precyzję. Dla danych wyjściowych z operacji produktu ustawia długość frakcji użytą do interpretacji danych. Ta właściwość staje się zapisywalna (można zmienić wartość) po ustawieniu ProductMode na SpecifyPrecision. Określa, w jaki sposób filtr obsługuje wyjście operacji produktu. Wybieraj spośród pełnej precyzji (FullPrecision) lub tego, czy zachować najważniejszy bit (KeepMSB) lub najmniej znaczący bit (KeepLSB) w wyniku, gdy chcesz skrócić słowa danych. Aby móc ustawić precyzję (długość ułamkową) używaną przez dane wyjściowe mnożników, należy ustawić parametr ProductMode na SpecifyPrecision. Określa długość słowa do użycia dla wyników operacji mnożenia. Ta właściwość staje się zapisywalna (można zmienić wartość) po ustawieniu ProductMode na SpecifyPrecision. Określa, czy resetować stany filtrów i pamięć przed każdą operacją filtrowania. Pozwala zdecydować, czy filtr zachowuje stany z poprzednich operacji filtrowania. Ustawienie False to ustawienie domyślne. Ustawia tryb używany przez filtr do kwantyzacji wartości numerycznych, gdy wartości leżą pomiędzy reprezentowanymi wartościami dla formatu danych (słowo i długość ułamków). ceil - Round towards positive infinity. convergent - Round do najbliższej reprezentowalnej liczby całkowitej. Wiąże zaokrąglenie do najbliższej nawet zapisanej liczby całkowitej. Jest to najmniej obciążona metoda dostępna w tym oprogramowaniu. fix - Okrąg w kierunku zera. floor - Round towards negative infinity. najbliższy - runda w kierunku najbliższego. Wiąże się w kierunku pozytywnej nieskończoności. runda - runda w kierunku najbliższego. Wiąże się z ujemną nieskończonością dla liczb ujemnych i z dodatnią nieskończonością dla liczb dodatnich. Dokonany wybór wpływa tylko na akumulator i arytmetykę wyjściową. Współczynnik arytmetyczny i wejściowy zawsze okrągły. Wreszcie, produkty nigdy nie przepełniają 8212, zachowują pełną precyzję. Określa, czy filtr używa podpisanych, czy niepodpisanych współczynników stałoprzecinkowych. Tylko współczynniki odzwierciedlają to ustawienie właściwości. Wybierz swój kraj

No comments:

Post a Comment