Verfasst am: 03.07.2019, 13:39
Titel: Rechteck Modulation von weißem Rauschen
Hallo zusammen,
ich würde gerne weißes Rauschen mit einem Rechteck-Signal modulieren. Ich dachte, dass einfachste wäre es, beide Signale miteinander zu multiplizieren, aber dann bekomme ich die Fehlermeldung "Out of memory", was ich verstehen kann, weil mein Noise-Signal ein 1-Spalten-Array ist und meine Rechteck-Funktion eine riesige Matrix. Wahrscheinlich müsste ich beide vereinheitlichen?
Jedenfalls dachte ich, es gäbe vielleicht eine Modulation-Funktion, die für beliebige Signale verwendet werden kann, so wie die ammod(x,f,fs) Funktion aus der Communications Toolbox (die allerdings eine Sinus-Modulation ausführt). Gibt es auch eine Funktion für Rechteck-Modulationen?
fs = 44100; % Samplefequency in Hz
dt = 1/fs; % Seconds per Sample
duration = 4; % duration in seconds
t = (0:dt:duration-dt);
L = 176400; % Number of samples after 4 seconds for fs=44,1kHz
sigma = 0; % standard deviation
mu = 0;
x = sigma+randn(L,1)+mu; % Gaussian Noise Signal
s = 4*square(2*pi*1*t+1.5); % 1 Hz Rectangular Signal
y = ammod(x,1,fs); % 1 Hz Sine Modulation of Noise x
Was ich im Endeffekt versuche auf die Beine zu stellen ist eine Square-Modulation mit einer Modulationstiefe von 100% und einem Tastverhältnis von 50% wie die rote Funktion im Bild. Ich freue mich über jede Hilfe!
Zunächst würde ich das
clearall
weglassen, denn es ist Zeitverschwendung, alle Funktionen aus dem RAM zu löschen und sie von der langsamen Festplatte nachzuladen.
closeall
schließt alle Fenster. Sowie du ein andere GUI im Hintergrund laufen hast, ist dieser "brutale Clear Header" extrem ungeschickt und er zerstört bisherige Arbeit ohne dass das irgendeinen Vorteil hat.
Zitat:
dann bekomme ich die Fehlermeldung "Out of memory"
Bitte poste immer die vollständige Fehlermeldung. Wahrscheinlich ist das nur ein Tippfehler. Wenn man die Meldung hätte, wüsste man, in welcher Zeile man suchen muss.
Zitat:
weil mein Noise-Signal ein 1-Spalten-Array ist und meine Rechteck-Funktion eine riesige Matrix.
Welche der Variablen enthalten denn das "Noise-Signal" und die "Rechteck-Funktion"? Wieso ist die Rechteck-Funktion als Matrix definiert? Was bezeichnest du als "riesig"? Manche User finden 1 Millionen Elements schon viel, andere erst eine Billionen.
vorab Danke für die Info über clear/close all. Bei der Fehlermeldung handelte es sich quasi schon um die vollständige Meldung:
Out of memory. Type "help memory" for your options. Error in noise (line 17)
y = x.*s;
Die Variable x ist das Noise-Signal und s ist das Square-Signal. Ich habe nun mit s=s ( : ) aus der Rectangle-Matrix einen Vektor gemacht und miteinander multipliziert
Code:
x = sigma+randn(L,1)+mu; % Gaussian Noise Signal
s = 4*square(2*pi*1*t+1.5); % 1 Hz Rectangular Signal
s=s(:);
y = x.*s;
Mit einer for-Schleife wird nun in regelmäßigen Abständen das Signal gemutet. Dabei kann man die Modulationsfrequenz fmod und die Abtastrate fs frei wählen.
Sieht dann zum Beispiel so aus (fmod = 4 Hz):
Viele Grüße!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.