Thursday 14 September 2017

Matlab Mobile Media Array


Ho 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 hanno né ricontattato already.29 settembre 2013 Moving media di convoluzione cosa si sta muovendo media e ciò che è bene per come si sta muovendo la media fatta utilizzando convoluzione media mobile è una semplice operazione usato di solito per sopprimere il rumore di un segnale: abbiamo impostato il valore di ciascun punto alla media dei valori nel suo vicinato. Con formula: Qui x è l'ingresso ed y è il segnale di uscita, mentre la dimensione della finestra è w, dovrebbe essere dispari. La formula sopra descrive un'operazione simmetrica: i campioni vengono prelevati da entrambi i lati del punto reale. Di seguito è riportato un esempio di vita reale. Il punto in cui la finestra è definito in realtà è rosso. I valori al di fuori x dovrebbero essere zeri: Per giocare e vedere gli effetti di media mobile, dare un'occhiata a questa dimostrazione interattiva. Come fare per circonvoluzione Come avrete riconosciuto, calcolando la media mobile semplice è simile alla convoluzione: in entrambi i casi una finestra viene fatto scorrere lungo il segnale e gli elementi della finestra sono riassunti. Quindi, fare un tentativo per fare la stessa cosa utilizzando convoluzione. Utilizzare i seguenti parametri: l'output desiderato è: Come primo approccio, cerchiamo ciò che si ottiene convolvendo segnale x dal seguente kernel k: L'uscita è esattamente tre volte più grande del previsto. Esso può essere anche visto che i valori di uscita sono la sintesi dei tre elementi nella finestra. E 'perché durante convoluzione la finestra viene fatto scorrere lungo, tutti gli elementi in esso sono moltiplicati per uno e poi riassunti: YK 1 cdot x 1 x 1 cdot cdot x Per ottenere i valori desiderati di y. l'uscita deve essere diviso per 3: da una formula tra cui la divisione: Ma non sarebbe ottimale per fare la divisione durante la circonvoluzione Ecco che arriva l'idea riorganizzando l'equazione: Così useremo i seguenti kernel k: In questo modo ci sarà ottenere il risultato desiderato: In generale: se vogliamo fare media mobile da convoluzione avere una dimensione della finestra di w. Si usa il seguente kernel k: una semplice funzione facendo la media mobile è: Un esempio d'uso è: Ive ha ottenuto un vettore e voglio calcolare la media mobile di esso (utilizzando una finestra di larghezza di 5). Per esempio, se il vettore in questione è 1,2,3,4,5,6,7,8. quindi la prima voce del vettore risultante dovrebbe essere la somma di tutte le voci 1,2,3,4,5 (cioè 15) il secondo ingresso del vettore risultante dovrebbe essere la somma di tutte le voci 2,3,4, 5,6 (cioè 20) ecc alla fine, il vettore risultante dovrebbe essere 15,20,25,30. Come posso fare che la funzione conv è proprio al caso vostro: tre risposte, tre diversi metodi. Ecco un rapido punto di riferimento (diverse dimensioni di ingresso, larghezza della finestra fissa di 5) utilizzando timeit esitate a colpire i fori in esso (nei commenti) se si pensa che ha bisogno di essere raffinato. conv emerge come l'approccio più veloce la sua circa due volte più veloce approccio monete (con filtro). e circa quattro volte più veloce approccio Luis Mendos (utilizzando cumSum). Ecco un altro punto di riferimento (dimensione ingresso fisso di 1E4. Diversa larghezza della finestra). Qui, Luis Mendos cumSum approccio emerge come il chiaro vincitore, perché la sua complessità è principalmente governata dalla lunghezza dell'input ed è insensibile alla larghezza della finestra. Conclusione Per riassumere, è necessario utilizzare l'approccio conv se la finestra è relativamente piccolo, utilizzare il metodo cumSum se la finestra è relativamente grande. Codice (per parametri di riferimento)

No comments:

Post a Comment