Monday 13 November 2017

Przeprowadzka średnia na matlab


Używając MATLAB, w jaki sposób można znaleźć 3-dniową średnią ruchu konkretnej kolumny macierzy i dodać średniej ruchomej do tej matrycy staram się obliczyć 3-dniową średnią ruchu od dołu do góry matrycy pod warunkiem, że mam kod. Given następujące matrycy a i maski. Próbowałem realizacji polecenia conv, ale otrzymuję błąd Oto polecenie konwertować próbuję użyć na drugiej kolumnie macierzy a. The wyjście I pragnienie jest podane w po matrycy. Jeśli masz jakieś sugestie, chciałbym bardzo docenić to Dziękuję. Dla kolumny 2 matrycy a, jestem obliczania 3-dniowej średniej ruchomej w następujący sposób i umieszczając wynik w kolumnie 4 matrycy zmieniłem nazwę macierzy jako pożądaneOutput tylko dla ilustracji Średnia 3-dniowa z 17, 14, 11 wynosi 14, 3-dniowa średnia z 14, 11, 8 jest równa 11 średnia 3-dniowa z 11, 8, 5 jest równa 8 i średnia 3-dniowa 8, 5, 2 to 5 W dolnej 2 wierszach w czwartej kolumnie nie ma wartości, ponieważ obliczanie dla 3-dniowej średniej ruchomej zaczyna się od dno Prawidłowe wyjście nie będzie wyświetlane do co najmniej 17, 14 i 11 Mamy nadzieję, że ma to sens Aaron czerwca 12 13 w 1 28. Ogólnie pomogłoby, gdybyś wykazał błąd W tym przypadku robisz dwie rzeczy źle. Pierwsze splot musi być podzielony przez trzy lub długość średniej ruchomej. Drugie, zwróć uwagę na wielkość c Nie możesz po prostu zmieścić się w c. Typowy sposób na uzyskanie średniej ruchomej byłoby taki sam. Ale to nie robi wyglądasz tak, jak chcesz. Zamiast tego musisz zmusić się do używania kilku wierszy. Dobierz movAv m zobacz także movAv2 - zaktualizowana wersja pozwalająca na ważenie. Matryca Matematyczna zawiera funkcje zwane movavg i tsmovavg średnią ruchliwą w programie Financial Toolbox, movAv jest mające na celu powtórzenie podstawowych funkcji tych kodów Poniżej przedstawiono przykładowy sposób zarządzania indeksami wewnątrz pętli, które mogą być mylące, aby rozpocząć od ja celowo trzymałem kod krótko i prosto, aby zachować ten proces. clear. movAv wykonuje prostą ruchę avera ge, które mogą być użyte do odzyskiwania hałaśliwych danych w pewnych sytuacjach Działa poprzez przyjęcie średniej wartości wejściowej y w oknie czasu przesuwu, którego wielkość jest określona przez n Im większy n, tym większa jest ilość wygładzania efektu n jest względnie dłuższe niż wektora wejściowego i skutecznie, typ tworzy filtr częstotliwości dolnoprzepustowy - patrz przykłady i rozważania. Ponieważ ilość wygładzania dostarczana przez każdą wartość n jest względna względem długości wejścia wektor, warto zawsze sprawdzić różne wartości, aby zobaczyć, co jest odpowiednie Pamiętaj też, że n punktów są tracone na każdej średniej, jeśli n wynosi 100, pierwsze 99 punktów wektora wejściowego don t zawiera wystarczające dane dla średniej wartości 100pt Można to uniknąć nieco na przykład za pomocą wykresów, poniższego kodu i wykresu porównuje wiele różnych średnich długości okna Zwróć uwagę, jak płynnie 10 10pt jest porównywana z pojedynczą średnią 20pt W obu przypadkach 20 punktów danych zostaje utraconych. Utwórz xaxis x 1 0 01 5 Wygeneruj hałas hałasuReps 4 hałas repmat randn 1, strajk numel x noiseReps, noiseReps, 1 szum hałasu, 1, hałas hałasu generuje szumy ydata y exp x 10 hałas 1 długość x perfrom średnie y2 movAv y, 10 10 pkt y3 movAv y2, 10 10 10 pt y4 movAv y, 20 20 pt y5 movAv y, 40 40 pt y6 movAv y, 100 100 pt Wykres wykresu wykresu x, y, y2, y3, y4, y5, y6 - dane, średnia ruchoma 10pt, 10 10pt, 20pt, 40pt, 100pt xlabel x ylabel y tytuł Porównanie przenoszenia ruchu averages. movAv m kodowanie przebiegu funkcji movAv y, n Pierwsza linia definiuje nazwę funkcji, wejść i wyjść Wejście x powinien być wektorem danych do wykonywania średniej na, n powinna być liczbą punktów do wykonywania średniej nad wyjściem będzie zawierać uśrednione dane zwracane przez funkcję Preallocate output output NaN 1, numel y Znajdź punkt środkowy n midPoint round n 2 Główne zadanie funkcji odbywa się w pętli for, ale przed rozpoczęciem przygotowania dwóch rzeczy Fir stly wyjście jest wstępnie przydzielone jako NaN, to służył dwóch celom Po pierwsze prealokacja jest ogólnie dobra praktyka, ponieważ zmniejsza żonglowanie pamięci Matlab musi zrobić, po drugie, sprawia, że ​​bardzo łatwo umieścić uśrednione dane na wyjście tego samego rozmiaru, wektor wejściowy Oznacza to, że ten sam xaxis może być używany później dla obu, co jest wygodne do spisu, alternatywnie NaN można usunąć później w jednej linii wyjścia kodu. Zmienna midpoint będzie używana do wyrównywania danych wektora wyjściowego Jeśli n 10, 10 punktów zostanie utracone, ponieważ w pierwszych 9 punktach wektora wejściowego nie ma wystarczająco dużo danych, aby uzyskać 10-punktową średnią. Ponieważ wyjście będzie krótsze niż dane wejściowe, musi być prawidłowo wyrównane midPoint należy używać tak, aby na początku i na końcu była zgubna ilość danych, a dane wejściowe są ustawione w linii z wyjściem przez bufory NaN utworzone przy wstępnym przypisywaniu wyjścia. w przypadku 1 długości y-n Znajdź zakres indeksu, aby przeciętnie obliczyć abban Oblicz średnia wydajność a midPoint oznacza koniec yab W samej pętli fora średnia przejęta przez każdy kolejny segment danych wejściowych Pętla będzie działać dla określonego jako 1 do długości wejścia y, minus danych, które zostaną utracone n Jeśli wejście ma 100 punktów i n wynosi 10, pętla będzie działać od 1 do 90. Oznacza to, że pierwszy indeks segmentu jest uśredniony Drugi indeks b jest po prostu n-1 Więc na pierwszej iteracji, a 1 n 10 tak b 11-1 10 Pierwsza średnia przejęta przez yab lub x 1 10 Średnia wartość tego segmentu, która jest pojedynczą wartością, jest przechowywana na wyjściu w indeksie midpoint lub 1 5 6. Na drugiej iteracji , a 2 b 2 10-1 11 więc średnica zostaje przejęta przez x 2 11 i zapisana w wyjściu 7 W ostatniej iteracji pętli dla wejścia o długości 100, 91 b 90 10-1 100, ponad x 91 100 i zapisane w wyjściu 95 To pozostawia wyjście z całkowitym n 10 wartości NaN przy indeksie 1 5 i 96 100. Przykłady i rozważania Przekazywanie średnich jest przydatne w niektórych sytuacjach, ale nie zawsze najlepszym wyborem Oto dwa przykłady, w których niekoniecznie są optymalne. Kalibracja mikrofonu Ten zestaw danych reprezentuje poziomy każdej częstotliwości generowanej przez głośnik i zarejestrowany przez mikrofon o znanej liniowej odpowiedzi. Wyjście głośnika zmienia się częstotliwość, ale możemy poprawić tę odmianę za pomocą danych kalibracji - wyjście może być ustawione na poziomie w celu uwzględnienia fluktuacji kalibracji. Notwierdza, że ​​surowe dane są hałaśliwe - oznacza to, że niewielka zmiana częstotliwości wydaje się wymagać duża, niepoprawna, zmiana poziomu w celu uwzględnienia Jest to realistyczne Lub czy jest to produkt środowiska nagrywania W tym przypadku rozsądne jest zastosowanie średniej ruchomej, która wygładza krzywą częstotliwości poziomu, aby zapewnić krzywą kalibracji, która jest nieco mniej niestabilna Ale dlaczego nie jest to optymalne w tym przykładzie. Dodatkowe dane byłyby lepsze - wielokrotne kalibracje są uśredniane razem, aby zniszczyć szum w systemie, dopóki jest uruchomiony dom i dostarczyć krzywej mniej subtelne szczegóły utracone Średnia średnia może tylko przybliżyć to i może usunąć niektóre wyższe częstotliwości dipów i szczytów z krzywej, która naprawdę istnieją. Sine fale Korzystanie średniej ruchomej na falach sinusowych podkreśla dwa punkty. Generalnie kwestia wyboru rozsądnej liczby punktów do wykonywania średniej nad. To proste, ale istnieją bardziej skuteczne metody analizy sygnału niż uśrednione oscylujące sygnały w domenie czasu. W tym wykresie, oryginalna fala sinusoidy jest wykreślana w niebieskim szumie dodane i wykreślone jako krzywa pomarańczowa Średnia ruchoma jest wykonywana w różnych ilościach punktów, aby sprawdzić, czy pierwsza fala może zostać odzyskana 5 i 10 punktów daje rozsądne wyniki, ale nie usuwać całego hałasu, gdzie zaczyna się coraz większa liczba punktów utrata szczegółów amplitudy, gdy średnia rozciąga się w różnych fazach, pamiętaj, że fala oscyluje wokół zera, a średnia -1. 0.Innym podejściem byłoby zbudowanie filtra dolnoprzepuszczalnego niż może być zastosowany do sygnału w dziedzinie częstotliwości nie będę wchodził w szczegóły, ponieważ wykraczałoby poza zakres tego artykułu, ale ponieważ hałas jest znacznie większa niż częstotliwość podstawowa fal, byłoby w tym przypadku dość łatwo skonstruować filtr dolnoprzepustowy niż usunie szum o wysokiej częstotliwości. Muszę obliczyć ruchomą średnią w serii danych, w pętli for mam uzyskać średnią ruchomej przez N 9 dni Tablica I m obliczenia w jest 4 serii 365 wartości M, które same w sobie są wartościami średnimi innego zestawu danych chcę wykreślić średnie wartości moich danych z średnią ruchoma w jednym wykresie. I googled trochę o średnich ruchów i conv polecenia i znalazłem coś, co próbowałem wdrożyć w moim code. So w zasadzie, obliczyć moje średnie i spróbować z niewłaściwej ruchomą średnią I wybrał wartość wts tuż off site matematyki, więc jest to nieprawidłowe źródło Mój problem, chociaż to, że nie rozumiem, co to jest wts Czy ktoś może wyjaśnić Jeśli to ma coś ng do czynienia z wagami wartości, które są nieważne w tym przypadku Wszystkie wartości są ważone tym samym. A jeśli to robię to całkowicie złe, mogę uzyskać pomoc z nim. Dziękuję serdecznie za dnia. 23 września w 19 05 . Korzystanie z konwertora jest doskonałym sposobem na zaimplementowanie średniej ruchomej W używanym kodzie, wts jest tym, ile ważysz każdą wartość, jak się domyślasz, suma tego wektora powinna zawsze być równa jednemu Jeśli chcesz równomiernie wyważyć każdą wartość i wykonaj filtr przesuwu rozmiaru N, a następnie chcesz to zrobić. Użycie prawidłowego argumentu w konwencie spowoduje mniejsze wartości w Ms niż w M Użyj tego samego, jeśli nie masz wpływu na zero padding Jeśli masz sygnał jeśli chcesz spróbować średniej ruchomej Coś jak. Należy zapoznać się z dokumentacją conv i cconv, aby uzyskać więcej informacji, jeśli już nie masz dostępu. Możesz użyć filtru, aby znaleźć średnią ruchu bez użycia pętli for przykład znajdzie średnią bieżącej 16-elementowego elementu ve ctor, używając rozmiaru okna 5,2 gładko jako część zakrzywionej przyborów Toolbox, która jest dostępna w większości przypadków. y y gładki y wygładza dane w wektora kolumny y za pomocą ruchomych filtrów średnich Wyniki są zwracane w wektora kolumny yy Domyślny zakres dla średniej ruchomej wynosi 5.

No comments:

Post a Comment