Pobierz movAv. m (patrz także movAv2 - zaktualizowana wersja umożliwiająca ważenie) Opis Matlab zawiera funkcje nazwane movavg i tsmovavg (średnia czasowa ruchu szeregów czasowych) w Przyborniku finansowym, movAv jest przeznaczony do replikowania podstawowych funkcji tych. Kod tutaj stanowi dobry przykład zarządzania indeksami wewnątrz pętli, co może być mylące na początek. Rozmyślnie trzymałem kod krótki i prosty, aby ten proces był jasny. movAv wykonuje prostą średnią ruchomą, która może być używana do odzyskiwania hałaśliwych danych w niektórych sytuacjach. Działa poprzez przyjmowanie średniej wartości wejściowej (y) na przesuwanym oknie czasowym, którego rozmiar jest określony przez n. Im większe n, tym większa ilość wygładzania efektu n jest zależna od długości wektora wejściowego y. i skutecznie (no, w pewnym sensie) tworzy filtr dolnoprzepustowy - patrz rozdział Przykłady i zagadnienia. Ponieważ wielkość wygładzania zapewniona przez każdą wartość n jest zależna od długości wektora wejściowego, zawsze warto przetestować różne wartości, aby zobaczyć, co jest właściwe. Pamiętaj także, że n punktów jest traconych na każdej średniej, jeśli n wynosi 100, pierwsze 99 punktów wektora wejściowego nie zawiera wystarczającej ilości danych dla średniej 100pt. Można tego w pewnym stopniu uniknąć, układając średnie wartości, na przykład poniższy kod i wykres porównują różne długości okien o różnych długościach. Zwróć uwagę, jak gładki 1010pt jest porównywany z pojedynczą średnią 20pt. W obu przypadkach łącznie traci się 20 punktów danych. Utwórz xaxis x1: 0.01: 5 Wygeneruj szum hałasuReps 4 repmat szumu (randn (1, ceil (numel (x) noiseReps)), noiseReps, 1) noise shape (noise, 1, length (noise) noiseReps) Generuj ydata noise yexp ( x) 10noza (1: długość (x)) Od średnich: y2 movAv (y, 10) 10 pkt y3 movAv (y2, 10) 1010 pkt y4 movAv (y, 20) 20 pkt y5 movAv (y, 40) 40 pkt y6 movAv (y, 100) 100 pt Legenda wydruku wykresu (x, y, y2, y3, y4, y5, y6) (surowe dane, 10pt średnia ruchoma, 1010pt, 20pt, 40pt, 100pt) xlabel (x) ylabel ( y) tytuł (Porównanie średnich kroczących) wartość wyjściowa funkcji movAv. m movAv (y, n) Pierwsza linia definiuje nazwę funkcji, wejścia i wyjścia. Wejście x powinno być wektorem danych do wykonania średniej na, n powinna być liczbą punktów do wykonania średniej ponad wyjście będzie zawierać uśrednione dane zwracane przez funkcję. Prealocate output output NaN (1, numel (y)) Znajdź punkt środkowy rundy midpoint (n2) Główna praca funkcji odbywa się w pętli for, ale przed rozpoczęciem przygotowuje się dwie rzeczy. Po pierwsze, dane wyjściowe są wstępnie przydzielane jako NaN, co służy dwóm celom. Po pierwsze, wstępna alokacja jest ogólnie dobrą praktyką, ponieważ redukuje ona żonglowanie pamięcią Matlaba, a po drugie bardzo ułatwia umieszczanie uśrednionych danych na wyjściu o takim samym rozmiarze jak wektor wejściowy. Oznacza to, że te same xaxis mogą być później użyte dla obu, co jest wygodne do wykreślania, alternatywnie NaN można później usunąć w jednym wierszu kodu (wyjście wyjściowe (Zmienna midPoint będzie używana do wyrównania danych w wektorze wyjściowym. n 10, 10 punktów zostanie utraconych, ponieważ dla pierwszych 9 punktów wektora wejściowego nie ma wystarczającej ilości danych, aby uzyskać średnią z 10 punktów, ponieważ dane wyjściowe będą krótsze niż dane wejściowe, muszą być odpowiednio wyrównane. być użyte, aby na początku i na końcu utracić taką samą ilość danych, a dane wejściowe są utrzymywane w wyrównaniu z danymi wyjściowymi przez bufory NaN utworzone podczas wstępnego przydzielania danych wyjściowych dla 1: length (y) - n Znajdź zakres indeksów, aby uzyskać średnią over (a: b) bana Obliczyć średnią wartość wyjściową (amidPoint) średnia (y (a: b)) koniec W pętli for, średnia jest brana na każdy kolejny segment wejścia. Pętla będzie działać dla a., która jest zdefiniowane jako 1 do długości wejścia (y) minus dane, które zostaną utracone (n).Jeśli wejście wynosi 100 punktów ng in wynosi 10, pętla będzie przebiegać od (a) od 1 do 90. Oznacza to, że zapewnia pierwszy indeks segmentu, który ma być uśredniony. Drugi indeks (b) jest po prostu an-1. Tak więc w pierwszej iteracji, a1. n10. więc b 11-1 10. Pierwsza średnia jest pobierana przez y (a: b). lub x (1:10). Średnia tego segmentu, który jest pojedynczą wartością, jest przechowywana w wynikach w indeksie amidPoint. lub 156. W drugiej iteracji, a2. b 210-1 11. więc średnia jest brana pod x (2:11) i zapisywana na wyjściu (7). W ostatniej iteracji pętli dla wejścia o długości 100, a91. b 9010-1 100, więc średnia jest brana na x (91: 100) i zapisywana na wyjściu (95). Pozostawia to wynik w sumie n (10) wartości NaN na indeksie (1: 5) i (96: 100). Przykłady i rozważania Średnie kroczące są przydatne w niektórych sytuacjach, ale nie zawsze są najlepszym wyborem. Oto dwa przykłady, które niekoniecznie są optymalne. Kalibracja mikrofonu Ten zestaw danych reprezentuje poziomy każdej częstotliwości wytwarzanej przez głośnik i rejestrowane przez mikrofon ze znaną reakcją liniową. Moc wyjściowa głośnika zmienia się z częstotliwością, ale możemy skorygować tę zmianę za pomocą danych kalibracyjnych - moc wyjściową można regulować w poziomie, aby uwzględnić fluktuacje w kalibracji. Zauważ, że surowe dane są hałaśliwe - oznacza to, że niewielka zmiana częstotliwości wymaga dużej, nieobliczalnej zmiany poziomu. Czy jest to realistyczne? Czy jest to produkt środowiska nagrywającego? Rozsądne w tym przypadku jest zastosowanie średniej ruchomej, która wygładza krzywą częstotliwości, aby uzyskać krzywą kalibracji, która jest nieco mniej błędna. Ale dlaczego nie jest to optymalne w tym przykładzie? Więcej danych byłoby lepsze - uśrednione wielokrotne kalibracje zniszczyłyby hałas w systemie (tak długo, jak jego losowe wartości) i zapewnią krzywiznę z mniejszą ilością subtelnych szczegółów. Średnia ruchoma może jedynie przybliżać to, i może usunąć niektóre spadki i piki wyższej częstotliwości z krzywej, która naprawdę istnieje. Fale sinusoidalne Używanie średniej ruchomej na falach sinusoidalnych podkreśla dwa punkty: Ogólny problem wyboru rozsądnej liczby punktów do wykonania średniej. Jest to proste, ale istnieją skuteczniejsze metody analizy sygnałów niż uśrednianie sygnałów oscylujących w dziedzinie czasu. Na tym wykresie oryginalna fala sinusoidalna jest naniesiona na niebiesko. Hałas jest dodawany i wykreślany jako pomarańczowa krzywa. Średnia ruchoma jest wykonywana z różną liczbą punktów, aby sprawdzić, czy można odzyskać oryginalną falę. 5 i 10 punktów daje rozsądne wyniki, ale nie usuwaj hałasu w całości, gdzie jako większa liczba punktów zaczynają tracić szczegóły amplitudy, ponieważ średnia rozciąga się na różne fazy (pamiętaj, że fala oscyluje wokół zera, a średnia (-1 1) 0) . Alternatywnym podejściem byłoby skonstruowanie filtra dolnoprzepustowego, niż można zastosować do sygnału w dziedzinie częstotliwości. Nie będę wchodził w szczegóły, ponieważ wykracza poza zakres tego artykułu, ale ponieważ szum jest znacznie większą częstotliwością niż częstotliwość podstawowa fal, w tym przypadku byłoby dość łatwo skonstruować filtr dolnoprzepustowy, niż usunąć wysoką częstotliwość noise. Moving Average Funkcja resultmovingmean (data, window, dim, option) oblicza wyśrodkowaną średnią ruchomą danych macierzy danych przy użyciu rozmiaru okna określonego w oknie w wymiarze dim, przy użyciu algorytmu określonego w opcji. Dim i opcja są opcjonalnymi wejściami i będą domyślnie ustawione na 1. Dim a opcja opcjonalne wejścia mogą być całkowicie pominięte lub mogą być zastąpione przez a. Na przykład movemean (data, window) da takie same wyniki jak movemean (data, window, 1,1) lub movingmean (data, okno, 1). Rozmiar i wymiar macierzy danych wejściowych jest ograniczony tylko przez maksymalny rozmiar macierzy dla platformy użytkownika. Okno musi być liczbą całkowitą i powinno być nieparzyste. Jeśli okno jest równe, jest zaokrąglane w dół do następnej niższej liczby nieparzystej. Funkcja oblicza średnią ruchomą zawierającą punkt środkowy i (okno-1) 2 elementy przed i po w określonym wymiarze. Na krawędziach macierzy liczba elementów przed lub po jest zmniejszana, aby rzeczywisty rozmiar okna był mniejszy niż określone okno. Funkcja podzielona jest na dwie części, algorytm 1d-2d i algorytm 3d. Dokonano tego w celu optymalizacji szybkości rozwiązania, zwłaszcza w mniejszych macierzach (to jest 1000 x 1). Ponadto zapewniono kilka różnych algorytmów problemów 1d-2d i 3d, ponieważ w niektórych przypadkach domyślny algorytm nie jest najszybszy. Zwykle dzieje się tak, gdy matryca jest bardzo szeroka (tj. 100 x 100000 lub 10 x 1000 x 1000), a średnia ruchoma jest obliczana w krótszym wymiarze. Rozmiar, w którym domyślny algorytm jest wolniejszy, zależy od komputera. MATLAB 7.8 (R2009a) Tagi dla tego pliku Proszę się zalogować, aby otagować pliki. Zaloguj się, aby dodać komentarz lub ocenę. Komentarze i oceny (8) Funkcja zajmuje się końcami poprzez przycięcie końcowej lub wiodącej części okna i przejście do początkowej lub końcowej średniej ruchomej zamiast wyśrodkowanej. Aby przejść do przykładu podanego w komentarzu, jeśli rozmiar okna wynosi 3, to w środku 1 funkcja średnie dane z punktów 1 i 2 w środku 2 punktów 1, 2 i 3 są uśredniane w centrum 9 punkty 8, 9 i 10 są uśredniane iw centrum 10 (pozwala przypuszczać, że wektor ma 10 wpisów) punkty 9 i 10 są uśredniane. W jaki sposób movemean radzi sobie z końcami Czy zaczyna się od rozmiaru okna obejmującego tylko punkt 1 w punkcie 1, a następnie 3 punkty w punkcie 2, a następnie zwiększający rozmiar okna, aż do rozmiaru okna określonego w funkcji wejściowej Dzięki. Ładne i proste. Dziękuję Ci. Dobra robota Bardzo przydatne, jak powiedział Stephan Wolf. Właśnie tego szukałem. Wyśrodkowana średnia ruchoma, która może pracować na wykresie na całej szerokości, bez konieczności szukania rozmiaru okna filtru i przesuwania początku. Wielkie Przyspieszenie tempa inżynierii i nauki MathWorks jest wiodącym twórcą oprogramowania obliczeniowego dla inżynierów i naukowców. Przeprowadzanie filtrów średnich (filtr MA) Ładowanie. Filtr średniej ruchomej to prosty filtr dolnoprzepustowy FIR (Finite Impulse Response), powszechnie stosowany do wygładzania tablicy próbkowanych sygnałów danych. Przyjmuje M próbek danych wejściowych na raz i pobiera średnią z tych M-próbek i generuje pojedynczy punkt wyjściowy. Jest to bardzo prosta struktura LPF (filtr dolnoprzepustowy), która jest przydatna naukowcom i inżynierom do filtrowania niechcianego hałaśliwego komponentu z zamierzonych danych. Wraz ze wzrostem długości filtra (parametr M) zwiększa się gładkość wyjścia, podczas gdy ostre przejścia w danych stają się coraz bardziej tępe. Oznacza to, że ten filtr ma doskonałą odpowiedź w dziedzinie czasu, ale słabą odpowiedź częstotliwościową. Filtr MA wykonuje trzy ważne funkcje: 1) Pobiera M punktów wejściowych, oblicza średnią z tych M-punktów i generuje pojedynczy punkt wyjściowy 2) Z powodu obliczeń związanych z obliczaniem. filtr wprowadza określoną ilość opóźnienia 3) Filtr działa jako filtr dolnoprzepustowy (z niską odpowiedzią częstotliwościową i dobrą odpowiedzią w dziedzinie czasu). Kod Matlaba: następujący kod Matlaba symuluje odpowiedź w czasie w odniesieniu do punktu ruchomej średniej klasy M-point, a także kreśli odpowiedź częstotliwościową dla różnych długości filtrów. Odpowiedź w dziedzinie czasu: Na pierwszym wykresie mamy dane wejściowe, które trafiają do filtra średniej ruchomej. Wejście jest głośne, a naszym celem jest zmniejszenie hałasu. Następna figura jest odpowiedzią wyjściową 3-punktowego filtra średniej ruchomej. Z rysunku można wywnioskować, że trzypunktowy filtr średniej ruchomej nie przyczynił się do odfiltrowania hałasu. Zwiększamy odczepy filtrów do 51-punktów i widzimy, że hałas na wyjściu znacznie się zmniejszył, co przedstawiono na następnym rysunku. Zwiększamy pobory o kolejne 101 i 501 i możemy zauważyć, że nawet pomimo tego, że hałas jest prawie zerowy, przejścia są drastycznie stępione (obserwuj nachylenie po obu stronach sygnału i porównaj je z idealną zmianą ściany ceglanej w nasz wkład). Pasmo przenoszenia: na podstawie odpowiedzi częstotliwościowej można stwierdzić, że zwinięcie jest bardzo wolne, a tłumienie pasma zatrzymania nie jest dobre. Biorąc pod uwagę to tłumienie pasma zatrzymania, filtr o średniej ruchomej nie może oddzielić jednego pasma częstotliwości od drugiego. Jak wiemy, dobra wydajność w dziedzinie czasu skutkuje słabą wydajnością w dziedzinie częstotliwości i na odwrót. Krótko mówiąc, średnia krocząca jest wyjątkowo dobrym filtrem wygładzającym (działanie w dziedzinie czasu), ale wyjątkowo złym filtrem dolnoprzepustowym (działanie w dziedzinie częstotliwości). Linki zewnętrzne: Polecane książki: Główny pasek boczny
FOREX ECN. co oznacza Electronic Communication Network, tak naprawdę jest to droga przyszłości dla rynków walutowych. ECN można najlepiej opisać jako pomost łączący mniejszych uczestników rynku z dostawcami płynności za pośrednictwem brokera FOREX ECN. Makler otrzymuje płynność od swoich dostawców płynności, dostarcza ją swoim klientom za pomocą protokołu wymiany finansowej (FIX) i odsyła zamówienia klientów do dostawców płynności w celu ich wykonania. Sprawdź teraz naszą szeroką gamę narzędzi FX Trading i codzienną analizę techniczną. Nasze platformy handlują w taki sposób, w jaki chcesz Dlaczego inteligentni handlowcy wybierają nas 0,01 lot Minimalna wielkość partii 100 Minimalna kwota depozytu 0,1 ECN Spread od 0,1 pipsa 0 opłat Bez prowizji na koncie XL STP ECN Broker Get Social Stay połącz z nami OSTRZEŻENIE RYZYKA: Handel Forex i kontrakty na różnicę (CFD), które są produktami lewarowanymi, są wysoce spekulacyjne i wiążą się ze znacznym ryzykiem strat. Można stracić więcej niż za...
Comments
Post a Comment