Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Matlab: togliere rumore

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

0
voti

[1] Matlab: togliere rumore

Messaggioda Foto UtenteConcetto » 4 ago 2015, 9:54

Buongiorno, chiedo aiuto per un problema che in un primo momento mi era sembrato banale e invece mi sta dando qualche problema.
Io ho un profilo di potenza affetto da rumore... in pratica vorrei togliere il rumore in modo tale che resti solo il profilo ideale (quello rosso in figura).
Ho provato ad usare la media e anche la fft... ma nel momento in cui le transizioni tra un livello di potenza sono ed un altro sono più complicate di quella in figura, non funziona.

fm8ggm.jpg


Qualcuno ha qualche suggerimento?

Grazie mille per l'eventuale risposta
Ultima modifica di Foto Utentesimo85 il 4 ago 2015, 9:56, modificato 1 volta in totale.
Motivazione: Inserita immagine sul forum. Non usare server esterni.
Avatar utente
Foto UtenteConcetto
0 1 3
 
Messaggi: 24
Iscritto il: 16 gen 2010, 12:01

0
voti

[2] Re: Matlab: togliere rumore

Messaggioda Foto UtenteRussell » 4 ago 2015, 9:59

hai pochi campioni per ottenere un buon risultato

l'approccio all'ordine zero potrebbe essere quello di applicare un filtro passa basso.... hai provato?

EDIT:
vedi qui
http://it.mathworks.com/help/signal/ref/filtfilt.html
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25

0
voti

[3] Re: Matlab: togliere rumore

Messaggioda Foto UtenteDrCox » 4 ago 2015, 10:09

Guarda questa sezione del manuale di MATLAB: Signal Smoothing
"The past is not really the past until it has been registered. Or put another way, the past has no meaning or existence unless it exists as a record in the present."
John Archibald Wheeler
Avatar utente
Foto UtenteDrCox
2.738 2 8 12
Master EY
Master EY
 
Messaggi: 744
Iscritto il: 8 giu 2010, 21:42

0
voti

[4] Re: Matlab: togliere rumore

Messaggioda Foto UtenteConcetto » 4 ago 2015, 10:44

grazie mille ad entrambi... ora leggo le guide e vi faccio sapere. Per quanto riguarda il numero dei campioni, ho messo solo 20 secondi per rendere l'idea.
In realtà sarebbe l'uscita di un powermeter che fa una misura al secondo
Avatar utente
Foto UtenteConcetto
0 1 3
 
Messaggi: 24
Iscritto il: 16 gen 2010, 12:01

0
voti

[5] Re: Matlab: togliere rumore

Messaggioda Foto UtenteConcetto » 5 ago 2015, 10:59

Premesso che con i filtri ho qualche problema (e questo mi è costato il 30 in elettrotecnica II :oops: ) ho provato a seguire la soluzione del filtro e fin tanto che il senale è costante sembrerebbe funzionare. Appena il segnale inizia a diventare più complesso(come in figura), quindi con un maggior numero di transizioni, non riesce (o forse sono io che non riesco) a separare il rumore dalle transizioni significative.

Giusto per completezza, le immagini che posto sono profili di potenza dove il passaggio da un valore ad un altro rappresentano varie accensioni e spegnimenti, io vorrei isolare queste dal rumore.

mligpc.jpg


Edit mod: allega le immagini sul forum e non da server esterni. È la seconda che ti allego.
Avatar utente
Foto UtenteConcetto
0 1 3
 
Messaggi: 24
Iscritto il: 16 gen 2010, 12:01

1
voti

[6] Re: Matlab: togliere rumore

Messaggioda Foto UtenteRussell » 5 ago 2015, 11:26

un filtro non sarà mai in grado di restituirti perfettamente il segnale senza il rumore
un passabasso smusserà un po' le transizioni, con la speranza che nelle zone 'piatte' vada a ridurre il rumore
se si vogliono transizioni nette e zone piatte pulite si vuole troppo, o almeno non si riesce a farlo con un banale filtro (anche giocando con la frequenza di taglio)

Se non sei soddisfatto potrei eventualmente suggerirti di implementare un filtro di diverso tipo, scrivendo un po' di codice a mano:
notando che il rumore sovrapposto alle zone piatte ha sempre lo stesso ordine di grandezza, cioè con picchi piu' o meno sempre della stessa entità, potresti invertarti un algoritmo del tipo
* fissi una soglia delta (sulla base di qualche test, a posteriori ... a occhio metterei 100/200, o qualcosa del genere)
* individui porzioni del segnale dove i campioni consecutivi stanno all'interno di un range (m-delta;m+delta)
* sostituisci tutti i campioni di ogni gruppo con il valore medio (m)

a naso dovresti ottenere qualcosa di moto somigliante al segnale originario
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25

0
voti

[7] Re: Matlab: togliere rumore

Messaggioda Foto UtenteConcetto » 7 ago 2015, 17:22

si... questa è la strada che sto cercando si seguire e sembrerebbe andare abbastanza bene. L'unico problema si presenta quando la transizione avviene tra due livelli di potenza, la cui differenza è confrontabile con l'ampiezza del rumore. In questo caso ho qualche problema.
Per questi casi sto cercando di adottare una soluzione che quando individua due transizioni di segno opposto le spiana, in modo tale da piallare i picchi indesiderati.. ma ancora non sono sicuro del risultato.

work in progress :D
Avatar utente
Foto UtenteConcetto
0 1 3
 
Messaggi: 24
Iscritto il: 16 gen 2010, 12:01


Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti