Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um das englische Original zu sehen.

Signalanalysator

Mehrere Signale und Spektren visualisieren und vergleichen

Beschreibung

Die Signal Analyzer-App ist ein interaktives Werkzeug zum Visualisieren, Messen, Analysieren und Vergleichen von Signalen im Zeitbereich, im Frequenzbereich und im Zeit-Frequenz-Bereich. Mit der App können Sie:

  • Alle Signale im Workspace MATLAB® lassen sich einfach aufrufen.

  • Fehlende Daten auffüllen (seit R2024a); Signale glätten, filtern, neu berechnen, Trends entfernen, Rauschen beseitigen, extrahieren und bearbeiten, ohne die App zu verlassen.

  • Fügen Sie benutzerdefinierte Vorverarbeitungsfunktionen hinzu und wenden Sie diese an.

  • Audiosignale wiedergeben. (seit R2024a)

  • Mehrere Wellenform-, Spektrum-, Persistenz-, Spektrogramm- und Skalogrammdarstellungen von Signalen gleichzeitig visualisieren und vergleichen.

  • Messdaten und Signalstatistiken.

Die Signal Analyzer-App bietet die Möglichkeit, mit vielen Signalen unterschiedlicher Dauer gleichzeitig und in derselben Ansicht zu arbeiten.

Weitere Informationen finden Sie unter Use Signal Analyzer App.

  • Sie benötigen eine Wavelet Toolbox™-Lizenz, um die Skalogramm-Ansicht zu verwenden und Wavelet-Entrauschung auf Signale anzuwenden.

Signal Analyzer app

Öffnen Sie die Signalanalysator-App

  • MATLAB Werkzeugleiste: Klicken Sie auf dem Tab Apps unter Signal Processing and Audio auf das App-Symbol.

  • MATLAB Befehlszeile: Geben Sie signalAnalyzer ein.

Beispiele

alle erweitern

Ein Sprachsignal mit der Abtastrate Fs=7418Hz laden. Die Datei enthält eine Aufnahme einer weiblichen Stimme, die das Wort "MATLAB®" sagt.

load mtlb

Um eine Situation zu simulieren, in der 70 % der Audiodaten fehlen, werden dem Signal zufällig NaN-Werte zugewiesen.

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

mtlbMissing = mtlb;
mtlbMissing(missing) = NaN;

Öffnen Sie den Signal Analyzer und ziehen Sie die Variablen mtlb und mtlbMissing aus dem Arbeitsbereichsbrowser-Bereich in die Tabelle „Filtersignale“. Wählen Sie die beiden Signale aus. Klicken Sie auf der Registerkarte Analysator auf Zeitwerte und wählen Sie Sample Rate and Start Time aus. Geben Sie Abtastrate als Fs Hz und Startzeit als 0 s an. Klicken Sie auf Display Grid, um zwei nebeneinanderliegende Anzeigen zu erstellen. Stellen Sie mtlb im linken Display und mtlbMissing im rechten Display dar. Um das mtlb-Audiosignal zu hören, wählen Sie es aus und klicken Sie auf Wiedergabe im Abschnitt Wiedergabe der Symbolleiste unter der Registerkarte Anzeige. Um das Signal zu wiederholen, wählen Sie vor der Wiedergabe Play in Loop.

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

Wählen Sie das Signal mit fehlenden Daten aus und klicken Sie unter der Registerkarte Analysator auf Vorverarbeitung, um in den Vorverarbeitungsmodus zu gelangen. Wählen Sie dann Fill Missing aus der Liste der Vorverarbeitungsoptionen aus. Verwenden Sie das Function Parameters-Panel, um die Fill Missing-Parameter anzupassen. Wählen Sie Autoregressive model aus und klicken Sie auf Anwenden, um das fehlende Signal zu ergänzen. Klicken Sie auf Alle akzeptieren, um die Vorverarbeitungsergebnisse zu speichern und den Modus zu verlassen. Einzelheiten zu alternativen Füllfunktionen finden Sie unter fillmissing und 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.

Sie können das gefüllte Signal nun mit der Schaltfläche Play abspielen. Um den Effekt des Auffüllens fehlender Daten im Spektrogramm zu sehen, klicken Sie auf Spektrogramm/Zeit-Frequenz im Abschnitt Ansichten der Registerkarte Anzeige. Auf der Registerkarte Spectrogram geben Sie eine Zeitauflösung von 20 ms und eine Überlappung von 80% zwischen benachbarten Segmenten an. Setzen Sie die Leistungsgrenzen auf –50 dB und –10 dB. Klicken Sie auf das linke Display und wiederholen Sie die Schritte.

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

Sie können die spektrale Leckage des Analysefensters anpassen, um Sinuswellen im Signal Analyzer aufzulösen.

Erzeugen Sie ein Zweikanalsignal, das mit 100 Hz abgetastet wird und 2 Sekunden lang aufgezeichnet wird.

  1. Der erste Kanal besteht aus einem 20-Hz-Ton und einem 21-Hz-Ton. Beide Töne haben die Amplitude Einheit.

  2. Der zweite Kanal hat ebenfalls zwei Töne. Ein Ton hat eine Amplitude von 1 und eine Frequenz von 20 Hz. Der andere Ton hat eine Amplitude von 1/100 und eine Frequenz von 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);

Das Signal wird in weißes Rauschen eingebettet. Geben Sie ein Signal-Rausch-Verhältnis von 40 dB an.

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

Öffnen Sie den Signal Analyzer und stellen Sie das Signal grafisch dar. Klicken Sie auf der Registerkarte Analysator bei Auswahl des Signals in der Signaltabelle auf Zeitwerte und wählen Sie Sample Rate and Start Time aus. Geben Sie Sample Rate (Abtastrate) als fs Hz und Startzeit als 0 s an. Klicken Sie auf der Registerkarte Anzeige auf Spektrum, um ein Spektraldiagramm zur Anzeige hinzuzufügen.

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.

Klicken Sie auf die Registerkarte Spectrum. Der Schieberegler zur Steuerung der spektralen Leckage befindet sich in der mittleren Position, was einer Auflösungsbandbreite von etwa 1,28 Hz entspricht. Die beiden Töne im ersten Kanal werden nicht aufgelöst. Der 30-Hz-Ton im zweiten Kanal ist sichtbar, obwohl er viel schwächer ist als der andere.

Erhöhen Sie die Leckage so, dass die Auflösungsbandbreite ungefähr 0,83 Hz beträgt. Der schwache Ton im zweiten Kanal ist deutlich aufgelöst.

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.

Schieben Sie den Regler auf den Maximalwert. Die Auflösungsbandbreite beträgt ungefähr 0,5 Hz. Die beiden Töne im ersten Kanal werden aufgelöst. Der schwache Ton im zweiten Kanal wird durch die großen Nebenkeulen des Fensters überdeckt.

Klicken Sie auf die Registerkarte Anzeige. Verwenden Sie den horizontalen Zoom, um die Frequenzachse zu vergrößern. Fügen Sie dem Display zwei Cursor hinzu und ziehen Sie die Frequenzbereichs-Cursor, um die Frequenzen der Töne zu schätzen.

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.

Lesen Sie eine Audioaufnahme einer elektronischen Zahnbürste in MATLAB® ein. Das Signal wird mit 48 kHz abgetastet. Die Zahnbürste schaltet sich nach etwa 1,75 Sekunden ein und bleibt ungefähr 2 Sekunden lang an.

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

Öffnen Sie den Signal Analyzer und ziehen Sie das Signal aus dem Arbeitsbereichsbrowser in die Signaltabelle. Fügen Sie dem Signal Zeitinformationen hinzu, indem Sie es in der Signaltabelle auswählen und auf der Registerkarte Analysator auf Zeitwerte klicken. Wählen Sie Sample Rate and Start Time und geben Sie fs als Abtastrate ein.

Klicken Sie auf der Registerkarte Anzeige auf Anzeigeraster, um ein 2x2-Raster von Anzeigen zu erstellen. Wählen Sie die einzelnen Anzeigen aus, klicken Sie auf Spektrum, um eine Spektrumansicht hinzuzufügen, und klicken Sie auf Zeit, um die Zeitansicht zu entfernen. Ziehen Sie das Signal auf alle vier Bildschirme.

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".

Klicken Sie auf die Registerkarte Spektrum, um die Spektrumsansicht in den einzelnen Anzeigen zu ändern.

  1. Klicken Sie auf das Symbol oben links, um es auszuwählen. Bewegen Sie den Schieberegler Leakage, bis Sie einen Leckagewert von 32 erhalten.

  2. Klicken Sie auf das Symbol oben rechts, um es auszuwählen. Im Abschnitt Resolution Type wählen Sie Window Length aus. Im Abschnitt Fensterlänge wählen Sie Angeben und geben Sie eine Fensterlänge von 1500 Abtastwerten an. Im Abschnitt Fensteroptionen wählen Sie ein Rectangular Fenster und geben einen Überlappungsprozentsatz von 20 an.

  3. Klicken Sie auf das untere linke Display, um es auszuwählen. Im Abschnitt Resolution Type wählen Sie Window Length aus. Im Abschnitt Fensterlänge wählen Sie Angeben und geben Sie eine Fensterlänge von 500 Abtastwerten an. Im Abschnitt Fensteroptionen wählen Sie ein Hamming Fenster und geben einen Überlappungsprozentsatz von 50 an. Im Abschnitt NFFT sollen 550 diskrete Fourier-Transformationspunkte angegeben werden.

  4. Klicken Sie auf das Symbol unten rechts, um es auszuwählen. Im Abschnitt Resolution Type wählen Sie Window Length aus. Im Abschnitt Fensterlänge wählen Sie Angeben und geben Sie eine Fensterlänge von 5000 Abtastwerten an. Im Abschnitt Fensteroptionen wählen Sie ein Chebyshev-Fenster aus und geben eine Nebenkeulendämpfung von 50 dB und einen Überlappungsgrad von 90 an.

Man kann erkennen, dass einige Ansichten eine höhere Auflösung, aber auch eine höhere Lichtdurchlässigkeit aufweisen, während andere Ansichten eine geringere Lichtdurchlässigkeit, aber auf Kosten der Auflösung aufweisen.

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.

Verwandte Beispiele

Programmatische Nutzung

signalAnalyzer öffnet die Signal Analyzer-App.

signalAnalyzer(sig) öffnet die Signal Analyzer-App und importiert und visualisiert das Signal sig. Wenn die App bereits geöffnet ist, wird sig im aktuellen Display angezeigt. Falls sig bereits gezeichnet wurde, sich aber geändert hat, aktualisiert der Funktionsaufruf die Zeichnung.

sig kann eine Variable im Workspace oder ein MATLAB-Ausdruck sein. sig kann Folgendes sein:

  • Ein Vektor oder eine Matrix mit unabhängigen Signalen in jeder Spalte.

  • Ein timetable mit angegebenen Zeitwerten.

  • Ein timeseries-Objekt.

Weitere Informationen finden Sie unter Data Types Supported by Signal Analyzer.

Standardmäßig stellt die App das Signal als Funktion des Abtastindex dar. Wenn Sie Zeitinformationen angeben oder wenn das Signal inhärente Zeitinformationen enthält, stellt die App das Signal als Funktion der Zeit grafisch dar.

signalAnalyzer(sig1,...,sigN) importiert N Signalvektoren oder -matrizen und stellt sie in der aktuellen Anzeige dar. Die App unterstützt es nicht, Signale mit und ohne inhärente Zeitinformationen im selben Funktionsaufruf zu importieren.

signalAnalyzer(___,'SampleRate',fs) gibt eine Abtastrate, fs, als positiven Skalar in Hz an. Die App verwendet die Abtastrate, um ein oder mehrere Signale über die Zeit darzustellen, wobei ein Startzeitpunkt von Null angenommen wird. Sie können eine Abtastrate für Signale ohne inhärente Zeitinformationen festlegen.

signalAnalyzer(___,'SampleTime',ts) gibt eine Abtastzeit, ts, als positiven Skalar in Sekunden an. Die App verwendet die Abtastzeit, um ein oder mehrere Signale über die Zeit darzustellen, wobei eine Startzeit von Null angenommen wird. Sie können eine Abtastzeit für Signale ohne inhärente Zeitinformationen festlegen.

signalAnalyzer(___,'StartTime',st) gibt eine Signalstartzeit, st, als Skalar in Sekunden an. Wenn Sie keine Abtastrate oder Abtastzeit angeben, geht die App von einer Abtastrate von 1 Hz aus. Sie können eine Startzeit für Signale festlegen, die keine inhärente Zeitinformation besitzen.

signalAnalyzer(___,'TimeValues',tv) spezifiziert einen Vektor tv, der die den Datenpunkten entsprechenden Zeitwerte enthält. tv kann ein numerischer Vektor mit Werten in Sekunden sein. tv kann auch ein duration-Array sein. Die Werte in tv müssen eindeutig sein und dürfen nicht NaN sein, müssen aber nicht gleichmäßig verteilt sein. Alle Eingangssignale müssen die gleiche Länge wie tv haben. Sie können einen Vektor von Zeitwerten für Signale ohne inhärente Zeitinformationen angeben.

Filterung und Skalogrammdarstellung unterstützen keine ungleichmäßig abgetasteten Signale.

Versionsverlauf

Eingeführt in R2016a

alle erweitern