Main Content

Rimozione del rumore a bassa frequenza in Simulink utilizzando un filtro adattivo LMS normalizzato

I filtri adattivi tengono traccia della natura dinamica di un sistema, consentendo di eliminare i segnali che variano nel tempo. Le librerie DSP System Toolbox™ contengono blocchi che implementano algoritmi di filtro adattivo del minimo quadratico medio (LMS), LMS a blocchi, LMS a blocchi rapidi e del minimo quadratico ricorsivo (RLS). Questi filtri minimizzano la differenza tra il segnale in uscita e il segnale desiderato, alterando i loro coefficienti del filtro. Nel tempo, il segnale di uscita del filtro adattivo si avvicina maggiormente al segnale che si desidera riprodurre.

Progettazione di un filtro adattivo in Simulink

Questo esempio riguarda la progettazione di un filtro adattivo LMS per rimuovere il rumore a bassa frequenza del segnale:

  1. Se il modello creato in Aggiunta di un filtro digitale al modello non è aperto sul desktop, è possibile aprire un modello equivalente digitando

    nella riga di comando MATLAB®.

    Snapshot of ex_gstut5. On left, there is a Sine Wave block and a Random Source block. The noise generated by the Random Source block feeds into a Digital Filter Design block. The output of the Filter Design block feeds into an adder. The other input to the adder is the original sinusoidal signal with no noise. The output of the adder and the original sinusoidal signal are fed into a Scope.

  2. Aprire la libreria DSP System Toolbox digitando dsplib nella riga di comando MATLAB.

  3. Rimuovere il rumore a bassa frequenza dal segnale aggiungendo un blocco LMS Filter al sistema. Nello scenario dell’areo, questo equivale a sottrarre il rumore del vento all’interno della cabina di pilotaggio dall’ingresso del microfono. Fare doppio clic sulla libreria Filtering, quindi fare doppio clic sulla sotto libreria Adaptive Filters. Aggiungere il blocco LMS Filter al modello.

    LMS Filter block has been added and is disconnected in ex_gstut5.

  4. Impostare i parametri del blocco LMS Filter per modellare l’uscita del blocco Digital Filter Design. Aprire la finestra di dialogo del blocco LMS Filter facendo doppio clic sul blocco stesso. Impostare e applicare i parametri del blocco come segue:

    • Algorithm = Normalized LMS

    • Filter length = 32

    • Specify step size via = Dialog

    • Step size (mu) = 0.1

    • Leakage factor (0 to 1) = 1.0

    • Initial value of filter weights = 0

    • Azzerare la casella di spunta Adapt port.

    • Reset port = None

    • Selezionare la casella di spunta Output filter weights.

Sulla base di questi parametri, il blocco LMS Filter calcola i pesi del filtro utilizzando le equazioni LMS normalizzate. L'ordine del filtro specificato è lo stesso dell'ordine del filtro del blocco Digital Filter Design. Il parametro Step size (mu) definisce la granularità delle fasi di aggiornamento del filtro. Poiché il parametro Leakage factor (0 to 1) è impostato su 1.0, i valori attuali del coefficiente del filtro dipendono dalle condizioni iniziali del filtro e da tutti i valori precedenti in entrata. Il valore iniziale dei pesi del filtro (coefficienti) è zero. Poiché è stata selezionata la casella di spunta Output filter weights, la porta Wts viene visualizzata sul blocco. Il blocco fornisce i pesi del filtro da questa porta.

Ora che i parametri di blocco del blocco LMS Filter sono stati impostati, si può incorporare questo blocco nel diagramma a blocchi.

Aggiunta di un filtro adattivo al modello

In questo esempio, il segnale sinusoidale originale viene recuperato incorporando nel sistema il filtro adattivo progettato in Progettazione di un filtro adattivo in Simulink. Nello scenario dell’aereo, il filtro adattivo modella il rumore a bassa frequenza sentito all'interno della cabina di pilotaggio. Di conseguenza, è possibile rimuovere il rumore in modo che la voce del pilota sia l'unico input per il microfono:

  1. Se il modello creato in Progettazione di un filtro adattivo in Simulink non è aperto sul desktop, è possibile aprire un modello equivalente digitando

    nella riga di comando MATLAB.

    Snapshot of ex_gstut6 model. LMS Filter block has been added to the model and is disconnected.

  2. Aggiungere un blocco Sum al modello per sottrarre l'uscita del filtro adattivo dal segnale sinusoidale con rumore a bassa frequenza. Dalla libreria Simulink® Math Operations, trascinare un blocco Sum nel modello. Aprire la finestra di dialogo del blocco Sum facendo doppio clic sul blocco stesso. Modificare il parametro List of signs in |+-, quindi fare clic su OK.

  3. Incorporare il blocco LMS Filter nel sistema.

    1. Collegare l'uscita del blocco Random Source alla porta in ingresso del blocco LMS Filter. Nello scenario dell’aereo, il rumore casuale è il rumore bianco misurato dal sensore all'esterno dell’aereo. Il blocco LMS Filter modella l'effetto della fusoliera dell'aeroplano sul rumore.

    2. Collegare l'uscita del blocco Digital Filter Design alla porta desiderata sul blocco LMS Filter. Questo è il segnale che si desidera riprodurre dal blocco LMS.

    3. Collegare l'uscita del blocco LMS Filter alla porta negativa del blocco Sum aggiunto nel passaggio 2.

    4. Collegare l'uscita del primo blocco Sum alla porta positiva del secondo blocco Sum. Il modello dovrebbe ora essere simile alla figura seguente.

    Snapshot of ex_gstut6 model with the LMS Filter block connected. Error and Wts output ports of the LMS Filter block are not connected.

    L’ingresso positivo al secondo blocco Sum è la somma del segnale in entrata e del rumore a bassa frequenza s(n) + y. L’ingresso negativo al secondo blocco Sum è la miglior stima del blocco LMS Filter del rumore a bassa frequenza y'. Quando si sottraggono i due segnali, si ottiene un'approssimazione del segnale in entrata.

    s(n)approx=s(n)+yy'

    In questa equazione:

    • s(n) è il segnale in entrata

    • s(n)approx è l’approssimazione del segnale in entrata

    • y è il rumore creato dal blocco Random Source e dal blocco Digital Filter Design

    • y' è l'approssimazione del rumore del blocco LMS Filter

    Poiché il blocco LMS Filter può solo approssimare il rumore, è ancora presente una differenza tra il segnale in entrata e la sua approssimazione. Nei passaggi successivi, impostare il blocco Scope in modo da poter confrontare il segnale sinusoidale originale con la sua approssimazione.

  4. Aggiungere due ulteriori ingressi e assi al blocco Scope. Aprire la finestra di dialogo del blocco Scope facendo doppio clic sul blocco stesso. Fare clic su Parameters. Per il parametro Number of axes, immettere 4. Chiudere la finestra di dialogo facendo clic su OK.

  5. Etichettare i nuovi assi Scope. Nella finestra Scope, fare clic con il pulsante destro del mouse sul terzo asse e selezionare Axes properties. Proprietà Scope: si apre la finestra di dialogo dell’asse 3. Nella casella Title, immettere Approximation of Input Signal. Chiudere la finestra di dialogo facendo clic su OK. Ripetere questa procedura per il quarto asse ed etichettarlo Error.

  6. Collegare l’uscita del secondo blocco Sum alla terza porta del blocco Scope.

  7. Collegare l’uscita della porta Error sul blocco LMS Filter alla quarta porta del blocco Scope. Il modello dovrebbe ora essere simile alla figura seguente.

    Snapshot of ex_gstut6 model with the LMS Filter block connected. Error port of the LMS Filter block is connected, Wts is not connected.

In questo esempio, l’uscita della porta Error è la differenza tra il segnale desiderato del filtro LMS e il suo segnale in uscita. Poiché l'errore non è mai zero, il filtro continua a modificare i coefficienti del filtro per approssimare meglio il rumore a bassa frequenza. Migliore è l'approssimazione, maggiore è il rumore a bassa frequenza che può essere rimosso dal segnale sinusoidale. Il prossimo argomento Visualizzazione dei coefficienti del filtro adattivo, illustra come visualizzare i coefficienti del filtro adattivo man mano che cambiano nel tempo.

Visualizzazione dei coefficienti del filtro adattivo

I coefficienti di un filtro adattativo cambiano nel tempo secondo un algoritmo scelto. Una volta che l'algoritmo ottimizza la prestazione del filtro, questi coefficienti di filtro raggiungono i loro valori di stato stazionario. Mentre la simulazione è in esecuzione, è possibile visualizzare la variazione dei coefficienti per osservare il loro stabilizzarsi sui valori di stato stazionario. Quindi, si può determinare se questi valori sono implementabili nel sistema corrente:

  1. Se il modello creato in Aggiunta di un filtro adattivo al modello non è aperto sul desktop, è possibile aprire un modello equivalente digitando

    nella riga di comando MATLAB. Si noti che la porta Wts del filtro adattivo, che produce i pesi del filtro, deve ancora essere collegata.

    Snapshot of the ex_gstut7 model.

  2. Aprire la libreria DSP System Toolbox digitando dsplib nella riga di comando MATLAB.

  3. Visualizzare i coefficienti del filtro collegato un blocco Time Scope alla porta Wts del blocco LMS Filter.

  4. Modificare le seguenti proprietà di configurazione nel blocco Time Scope:

    • Time span = 0.05

    • Y-limits (Minimum) = -0.15

    • Y-limits (Maximum) = 0.5

    Snapshot of the ex_gstut7 model with Wts port connected to the Time Scope block.

  5. Aprire le impostazioni di modello. Fare clic su Model Settings nella scheda Modeling. Nel pannello Solver, impostare i seguenti parametri di configurazione:

    1. Stop time = inf

    2. Type = Fixed-step

    3. Solver = discrete (no continuous states)

    Consigliamo questi parametri di configurazione per i modelli che contengono blocchi DSP System Toolbox. Poiché questi blocchi calcolano i valori direttamente anziché risolvere equazioni differenziali, è necessario configurare Simulink Solver affinché si comporti come uno schedulatore. Quando il Solver è in modalità di schedulazione, utilizza il tempo di campionamento di un blocco per determinare quando viene eseguito il codice dietro ogni blocco. Ad esempio, il tempo di campionamento dei blocchi Sine Wave e Random Source in questo modello è 0.05. Il Solver esegue il codice dietro questi blocchi e dietro ogni altro blocco con questo tempo di campionamento, una volta ogni 0,05 secondi.

    Nota

    Quando si lavora con modelli che contengono blocchi DSP System Toolbox, utilizzare i blocchi di origine che consentono di specificare il loro tempo di campionamento. Se il blocco di origine non dispone di un parametro Sample time, è necessario aggiungere un blocco di mantenimento dell'ordine zero nel modello e utilizzarlo per specificare il tempo di campionamento. Per ulteriori informazioni, vedere Continuous-Time Source Blocks. L'eccezione a questa regola è il blocco Constant, che può avere un tempo di campionamento costante. Quando questo blocco è presente, Simulink lo esegue e registra il valore costante una volta, all'inizio della simulazione, e successivamente ogni volta che si sintonizza un parametro. Ciò consente simulazioni più veloci e un codice generato più compatto.

  6. Eseguire il modello e osservare il comportamento dei coefficienti del filtro nel Time Scope che si apre automaticamente all'avvio della simulazione. Nel tempo, i coefficienti del filtro si avvicinano ai loro valori di stato stazionario.

    Filter coefficient values.

    È inoltre possibile visualizzare il comportamento del sistema nella finestra Scope. Nel tempo, l'errore diminuisce e l'approssimazione del segnale in entrata corrisponde maggiormente al segnale di ingresso sinusoidale originale.

    The Scope shows 4 signals - Input signal, signal with low frequency noise, approximation of the input signal, and the error between the signal and the approximation of the signal. The error is a straight line around zero.

È stato creato un modello in grado di cancellare il rumore adattivo.

Sommario

Si è appreso come creare un filtro passa bassa utilizzando il blocco Digital Filter Design. Si è inoltre appreso come creare un filtro adattivo utilizzando il blocco LMS Filter. Il prodotto DSP System Toolbox dispone di altri blocchi in grado di progettare e implementare filtri digitali e adattivi. Per ulteriori informazioni sulle capacità di filtraggio di questo prodotto, vedere Filter Design e Filter Analysis.

Poiché tutti i blocchi in questo modello hanno lo stesso tempo di campionamento, questo modello è a frequenza singola e Simulink lo ha eseguito in modalità Solver SingleTasking. Se i blocchi nel modello hanno tempi di campionamento diversi, il modello è a multifrequenza e Simulink potrebbe eseguirlo in modalità Solver MultiTasking. Per ulteriori informazioni sulle modalità solver, vedere Recommended Settings for Discrete-Time Simulations.

Per informazioni su come generare codice dal modello utilizzando il prodotto Simulink Coder™, vedere Generate C Code from Simulink Model.

Vedi anche

|

Argomenti complementari