Creato il Mercoledì 8 Ottobre 2008 20:04 Ultimo aggiornamento il Giovedi, 14 marzo 2013 01:29 Scritto da Batuhan Osmanoglu Hits: 41415 Media mobile in MATLAB Spesso mi ritrovo bisogno di una media dei dati devo ridurre il rumore un po ' po. Ho scritto funzioni paio di fare esattamente quello che voglio, ma matlabs costruiti in funzione di filtro funziona piuttosto buona. scrivere qui Ill circa 1D e 2D media dei dati. Filtro 1D può essere realizzato utilizzando la funzione di filtro. La funzione di filtro richiede almeno tre parametri di ingresso: il coefficiente numeratore per il filtro (b), il coefficiente denominatore del filtro (a), ei dati (X) naturalmente. Un filtro media mobile può essere definito semplicemente: Per i dati 2D possiamo usare la funzione filtro2 Matlabs. Per ulteriori informazioni su come funziona il filtro, è possibile digitare: Ecco una implementazione veloce e sporco di un 16 da 16 spostando filtro a media. Per prima cosa dobbiamo definire il filtro. Dal momento che tutto quello che vogliamo è uguale contributo di tutti i vicini possiamo semplicemente usare la funzione di quelli. Dividiamo tutto con 256 (1616), in quanto noi non vogliamo cambiare il livello generale (ampiezza) del segnale. Per applicare il filtro possiamo semplicemente dire quanto segue Di seguito sono riportati i risultati della fase di un interferogramma SAR. In questo caso Range è in asse Y e Azimuth è mappato sull'asse X. Il filtro era larga 4 pixel in Gamma e 16 pixel di larghezza in Azimuth. I bisogno di calcolare una media mobile su una serie di dati, all'interno di un ciclo for. Devo ottenere la media mobile più giorni N9. La matrice Im computing è 4 serie di 365 valori (M), che a sua volta sono valori medi di un altro insieme di dati. Voglio tracciare i valori medi dei miei dati con la media mobile in una trama. Ho cercato su google un po 'di medie e il comando conv movimento e trovato qualcosa che ho cercato di esecuzione nel mio codice .: Quindi, fondamentalmente, computo mia media e tracciare con una (sbagliata) media mobile. Ho scelto il valore di WTS destra fuori del sito MathWorks, in modo che non è corretto. (Fonte: mathworks. nlhelpeconmoving-media-trend-estimation. html) Il mio problema, però, è che non capisco che cosa questo WTS. Qualcuno potrebbe spiegare se ha qualcosa a che fare con i pesi dei valori: che non è valido in questo caso. Tutti i valori sono ponderati lo stesso. E se sto facendo questo tutto sbagliato, potrei avere un aiuto con esso miei più sinceri ringraziamenti. chiesto 23 settembre 14 alle 19:05 Utilizzando conv è un ottimo modo per implementare una media mobile. Nel codice che si sta utilizzando, wts è quanto si sta pesando ogni valore (come avete indovinato). la somma di tale vettore deve essere sempre uguale a uno. Se si desidera peso ogni valore in modo uniforme e fare una dimensione N del filtro in movimento, allora si vorrebbe fare Utilizzando l'argomento valido in conv porterà ad avere un minor numero di valori in Ms di quello che hai in M. Usa stesso se non vi dispiace gli effetti della zero padding. Se hai la casella degli strumenti di elaborazione del segnale è possibile utilizzare cconv se si vuole provare una media circolare in movimento. Qualcosa di simile si dovrebbe leggere la documentazione conv e cconv Per ulteriori informazioni, se si havent già. È possibile utilizzare il filtro per trovare una media in esecuzione senza utilizzare un ciclo for. Questo esempio trova il media corrente di un vettore di 16 elementi, con una dimensione della finestra di 5. 2) liscia come parte del Curve Fitting Toolbox (che è disponibile nella maggior parte dei casi) YY liscio (y) leviga i dati nel vettore colonna y utilizzando un filtro a media mobile. I risultati sono restituiti nella aa vettore colonna. La durata predefinita per la media mobile è 5.UTILIZZO MATLAB, come posso trovare la media mobile di 3 giorni di una determinata colonna di una matrice e aggiungere il media mobile a quella matrice sto cercando di calcolare la media mobile a 3 giorni dalla basso verso l'alto della matrice. Ho fornito il mio codice: Dato il seguente matrice A e la maschera: ho provato l'attuazione del comando di conv ma sto ricevendo un errore. Ecco il comando conv ho cercato di utilizzare al 2 ° colonna della matrice A: L'uscita che desidero è riportata nella seguente tabella: Se avete suggerimenti, sarei molto grato. Grazie per colonna 2 della matrice A, sto calcolando la media mobile di 3 giorni come segue e ponendo il risultato nella colonna 4 della matrice A (ho rinominato matrice A come 39desiredOutput39 solo per l'illustrazione). La media di 3 giorni del 17, 14, 11 è 14, la media di 3 giorni del 14, 11, 8 è 11 alla media di 3 giorni di 11, 8, 5 è 8 e la media di 3 giorni di 8, 5, 2 è 5. ci sono alcun valore nel fondo 2 righe per la colonna 4 perché il calcolo ai 3 giorni in movimento iniziale media sul fondo. Il 39valid39 uscita non verrà mostrato almeno fino al 17, 14, e 11. Speriamo che questo ha un senso ndash Aaron 12 Giugno 13 a 01:28 In generale, sarebbe utile se si desidera mostrare l'errore. In questo caso si sta facendo due cose sbagliate: in primo luogo il tuo convoluzione deve essere diviso per tre (o la lunghezza della media mobile) In secondo luogo, nota la dimensione del c. Non si può semplicemente inserire c in una. Il modo tipico di ottenere una media mobile sarebbe quella di utilizzare lo stesso: ma quello non assomigliare a ciò che si desidera. Invece si è costretti ad usare un paio di righe:
No comments:
Post a Comment