Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l’originale in inglese.

Signal Analyzer

Visualizzare e confrontare segnali e spettri multipli

Descrizione

L'app Signal Analyzer è uno strumento interattivo per visualizzare, pre-elaborare, misurare, analizzare e confrontare segnali nel dominio del tempo, nel dominio della frequenza e nel dominio tempo-frequenza. Utilizzando l' applicazione, puoi:

  • Accedi facilmente a tutti i segnali nell'area di lavoro MATLAB®.

  • Completa i dati mancanti (da R2024a); leviga, filtra, ricampiona, rimuovi tendenza, riduci il rumore, estrai e modifica i segnali senza uscire dall’applicazione.

  • Aggiungi e applica funzioni di preelaborazione personalizzate.

  • Riproduci segnali audio. (da R2024a)

  • Visualizza e confronta simultaneamente diverse rappresentazioni di segnali, tra cui forme d'onda, spettri, persistenza, spettrogrammi e scalogrammi.

  • Misurazione dei dati e delle statistiche del segnale.

L'app consente di lavorare contemporaneamente e nella stessa vista con numerosi segnali di durata variabile.

Per ulteriori informazioni, vedere Use Signal Analyzer App.

  • Per utilizzare la visualizzazione scalogramma e applicare la riduzione del rumore wavelet ai segnali è necessaria una licenza Wavelet Toolbox™.

Signal Analyzer app

Apri l’app Signal Analyzer

  • Toolstrip MATLAB: Nella schedaApps, sotto Signal Processing and Audio, fai clic sull'icona applicazione .

  • Prompt dei comandi MATLAB: Inserisci signalAnalyzer.

Esempi

espandi tutto

Carica un segnale vocale campionato alla frequenza Fs=7418Hz. Il file contiene una registrazione di una voce femminile che pronuncia la parola "MATLAB ®".

load mtlb

Per simulare una situazione in cui manca il 70% dei dati audio, assegnare casualmente i valori NaN al segnale.

rng(2024) 
numToReplace = round(length(mtlb) * 0.70);
missing = randperm(length(mtlb),numToReplace);

mtlbMissing = mtlb;
mtlbMissing(missing) = NaN;

Apri Signal Analyzer e trascina le variabili mtlb e mtlbMissing dal pannello Browser area di lavoro alla tabella Segnali filtro. Seleziona i due segnali. Nella schedaAnalizzatore, fai clic su Valori temporali e seleziona Sample Rate and Start Time. Specificare la frequenza di campionamento come Fs Hz e l'ora di inizio come 0 s. Fai clic su Visualizza griglia per creare due visualizzazioni affiancate. Traccia mtlb nel display di sinistra e mtlbMissing nel display di destra. Per ascoltare il segnale audio mtlb, selezionalo e fai clic su Riproduci nella sezione Riproduzione della barra degli strumenti sotto la schedaVisualizzazione. Per ripetere il segnale, selezionare Riproduci in loop prima della riproduzione.

Signal Analyzer app, showing the Display strip, the "mtlb" signal is selected and played in loop.

Seleziona il segnale con dati mancanti e fai clic su Pre-elaborazione nella scheda Analizzatore per accedere alla modalità di pre-elaborazione, quindi seleziona Fill Missing dall'elenco delle opzioni di pre-elaborazione. Utilizzare il pannello Parametri funzione per regolare i parametri Fill Missing. Seleziona Autoregressive model e fai clic su Applica per inserire il segnale mancante. Fai clic su Accetta tutto per salvare i risultati della preelaborazione ed uscire dalla modalità. Per i dettagli sulle funzioni di riempimento alternative, vedere fillmissing e fillgaps.

Signal Analyzer app, showing the Search bar in the Preprocess strip. Clicking the Search bar shows a variety of preprocessing options. The "Fill Missing" option is selected.

Ora puoi riprodurre il segnale riempito utilizzando il pulsante Riproduci. Per visualizzare l'effetto del riempimento dei dati mancanti sullo spettrogramma, fare clic su Spettrogramma/Tempo-Frequenza nella sezione Visualizzazioni della schedaVisualizzazione. Nella schedaSpettrogramma, specificare una risoluzione temporale di 20 ms e una sovrapposizione dell'80% tra segmenti adiacenti. Imposta i Limiti di potenza su –50 dB e –10 dB. Fai clic sul display a sinistra e ripeti i passaggi.

Signal Analyzer app, showing the Spectrogram strip, the "mtlb" and "mtlbMissing" signals with their respective spectrograms.

È possibile regolare la dispersione spettrale della finestra di analisi per risolvere le sinusoidi in Signal Analyzer.

Genera un segnale a due canali campionato a 100 Hz per 2 secondi.

  1. Il primo canale è costituito da un tono a 20 Hz e da un tono a 21 Hz. Entrambi i toni hanno ampiezza unitaria.

  2. Anche il secondo canale ha due toni. Un tono ha ampiezza unitaria e una frequenza di 20 Hz. L'altro tono ha un'ampiezza di 1/100 e una frequenza di 30 Hz.

fs = 100;
t = (0:1/fs:2-1/fs)';

x = sin(2*pi*[20 20].*t)+[1 1/100].*sin(2*pi*[21 30].*t);

Incorporare il segnale nel rumore bianco. Specificare un rapporto segnale/rumore di 40 dB.

x = x + randn(size(x)).*std(x)/db2mag(40);

Apri Signal Analyzer e traccia il segnale. Nella schedaAnalizzatore, con il segnale selezionato nella tabella Segnale, fare clic su Valori temporali e selezionare Sample Rate and Start Time. Specificare la Frequenza di campionamento come fs Hz e l'Ora di inizio come 0 s. Nella schedaVisualizzazione, fare clic su Spettro per aggiungere un grafico spettrale alla visualizzazione.

Signal Analyzer app, showing the Display strips, from which the Time and Spectrum views are selected. The app also displays the signal "x" with channels 1 and 2, in time domain and frequency domain.

Fai clic sulla schedaSpettro. Il cursore che controlla la dispersione spettrale si trova in posizione centrale, corrispondente a una larghezza di banda di risoluzione di circa 1,28 Hz. I due toni del primo canale non vengono risolti. Il tono a 30 Hz nel secondo canale è percepibile, sebbene sia molto più debole rispetto all'altro.

Aumentare la dispersione in modo che la larghezza di banda di risoluzione sia approssimativamente di 0,83 Hz. Il tono debole nel secondo canale viene chiaramente risolto.

Signal Analyzer app, showing the Spectrum strip, from which Leakage is selected. The app also displays the signal "x" with channels 1 and 2, in time domain and frequency domain.

Sposta il cursore al valore massimo. La larghezza di banda di risoluzione è di circa 0,5 Hz. I due toni del primo canale vengono risolti. Il tono debole nel secondo canale viene mascherato dagli ampi lobi laterali della finestra.

Fai clic sulla schedaVisualizza. Utilizza lo zoom orizzontale per ingrandire l'asse delle frequenze. Aggiungi due cursori al display e trascina i cursori nel dominio della frequenza per stimare le frequenze dei toni.

Signal Analyzer app, showing the Display strips, from which the Data Cursor toggle button is selected. The app also displays the signal "x" with channels 1 and 2. Two vertical data cursors are shown in the time-domain and frequency-domain plots.

Carica una registrazione audio di uno spazzolino elettrico nel dispositivo MATLAB ®. Il segnale viene campionato a 48 kHz. Lo spazzolino si accende dopo circa 1,75 secondi e rimane acceso per circa 2 secondi.

[y,fs] = audioread("toothbrush.m4a");

Apri Signal Analyzer e trascina il segnale dal Browser dell'area di lavoro alla tabella dei segnali. Aggiungi le informazioni temporali al segnale selezionandole nella tabella Segnale e facendo clic su Valori temporali nella schedaAnalizzatore. Seleziona Sample Rate and Start Time e inserisci fs come frequenza di campionamento.

Nella schedaVisualizzazione, fai clic su Griglia di visualizzazione per creare una griglia di visualizzazioni due per due. Seleziona ciascuna visualizzazione, fai clic su Spettro per aggiungere una visualizzazione dello spettro e fai clic su Ora per rimuovere la visualizzazione dell'ora. Trascina il segnale su tutti e quattro gli schermi.

Signal Analyzer app, showing the Display strip, from which the Spectrum view is selected. The app also shows the signal "y" in frequency domain in a 2-by-2 grid of displays. The four displays show the same spectrum for "y".

Fai clic sulla scheda Spettro per modificare la visualizzazione dello spettro in ciascun display.

  1. Fai clic sull'elemento visualizzato in alto a sinistra per selezionarlo. Sposta il cursore Dispersione fino a ottenere un valore di dispersione pari a 32.

  2. Fai clic sull'elemento visualizzato in alto a destra per selezionarlo. Nella sezione Tipo di risoluzione, selezionare Lunghezza finestra. Nella sezione Lunghezza finestra, selezionare Specifica e specificare una lunghezza della finestra di 1500 campioni. Nella sezione Opzioni finestra, scegli una finestra Rectangular e specifica una percentuale di sovrapposizione del 20%.

  3. Fai clic sull'elemento visualizzato in basso a sinistra per selezionarlo. Nella sezione Tipo di risoluzione, selezionare Lunghezza finestra. Nella sezione Lunghezza finestra, selezionare Specifica e specificare una lunghezza della finestra di 500 campioni. Nella sezione Opzioni finestra, scegli una finestra Hamming e specifica una percentuale di sovrapposizione del 50%. Nella sezione NFFT, specificare 550 punti di trasformata di Fourier discreta.

  4. Fai clic sull'elemento visualizzato in basso a destra per selezionarlo. Nella sezione Tipo di risoluzione, selezionare Lunghezza finestra. Nella sezione Lunghezza finestra, selezionare Specifica e specificare una lunghezza della finestra di 5000 campioni. Nella sezione Opzioni finestra, selezionare una finestra Chebyshev e specificare un'attenuazione del lobo laterale di 50 dB e una percentuale di sovrapposizione del 90%.

Come si può notare, alcune visualizzazioni mostrano una risoluzione più elevata ma anche una maggiore dispersione spettrale, mentre altre presentano una minore dispersione spettrale a scapito della risoluzione.

Signal Analyzer app, showing the Display strip, from which the Spectrum view is selected. The app also shows the signal "y" in frequency domain in a 2-by-2 grid of displays. The four displays now show different spectra for "y", each of them modified with its own spectrum settings.

Esempi correlati

Uso programmatico

signalAnalyzer apre l' applicazioneSignal Analyzer.

signalAnalyzer(sig) apre l' applicazione Signal Analyzer e importa e traccia il segnale sig. Se l' applicazione è già aperta, allora traccia sig sul display corrente. Se sig è già presente nel grafico ma è cambiato, la chiamata alla funzione aggiorna il grafico.

sig può essere una variabile nell'area di lavoro o un'espressione MATLAB. sig può essere:

  • Un vettore o una matrice con segnali indipendenti in ciascuna colonna.

  • Un oggetto timetable con valori temporali specificati come durate.

  • Un oggetto timeseries.

Per ulteriori dettagli, vedere Data Types Supported by Signal Analyzer.

Per impostazione predefinita, l' applicazione traccia il segnale in funzione dell'indice del campione. Se si forniscono informazioni temporali, o se il segnale contiene informazioni temporali intrinseche, l' applicazione traccia il segnale in funzione del tempo.

signalAnalyzer(sig1,...,sigN) importa vettori o matrici di segnale da N e li visualizza nel display corrente. L' applicazione non supporta l'importazione di segnali con informazioni temporali intrinseche e segnali senza informazioni temporali intrinseche nella stessa chiamata di funzione.

signalAnalyzer(___,'SampleRate',fs) specifica una frequenza di campionamento, fs, come scalare positivo espresso in Hz. L' applicazione utilizza la frequenza di campionamento per tracciare uno o più segnali in funzione del tempo, assumendo un tempo iniziale pari a zero. È possibile specificare una frequenza di campionamento per segnali privi di informazioni temporali intrinseche.

signalAnalyzer(___,'SampleTime',ts) specifica un tempo di campionamento, ts, come uno scalare positivo espresso in secondi. L' applicazione utilizza il tempo di campionamento per tracciare uno o più segnali in funzione del tempo, assumendo un tempo iniziale pari a zero. È possibile specificare un tempo di campionamento per i segnali privi di informazioni temporali intrinseche.

signalAnalyzer(___,'StartTime',st) specifica un tempo di inizio del segnale, st, come scalare espresso in secondi. Se non si specifica una frequenza di campionamento o un tempo di campionamento, l' applicazione presuppone una frequenza di campionamento di 1 Hz. È possibile specificare un orario di inizio per i segnali che non dispongono di informazioni temporali intrinseche.

signalAnalyzer(___,'TimeValues',tv) specifica un vettore, tv, con valori temporali corrispondenti ai punti dati. tv può essere un vettore numerico reale con valori espressi in secondi. tv può anche essere un array duration. I valori in tv devono essere univoci e non possono essere NaN, ma non è necessario che siano uniformemente spaziati. Tutti i segnali di ingresso devono avere la stessa lunghezza di tv. È possibile specificare un vettore di valori temporali per i segnali privi di informazioni temporali intrinseche.

Le funzioni di filtraggio e visualizzazione dello scalogramma non supportano segnali campionati in modo non uniforme.

Cronologia versioni

Introdotto in R2016a

espandi tutto