WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Rechteck Modulation von weißem Rauschen

 

sonicycle
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 03.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2019, 14:39     Titel: Rechteck Modulation von weißem Rauschen
  Antworten mit Zitat      
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?

Das ist mein Code:
Code:
close all
clear all

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

figure(1);
subplot(2,1,1);
plot(t,x,t,s);
axis([0 duration -5 5]);
title('White Noise and 1 Hz Rectangular Function');
xlabel('Seconds');
ylabel('Sample Values');
grid on;

subplot(2,1,2);
plot(t,y);
axis([0 duration -5 5]);
title('White Noise 1 Hz Sine Modulated');
xlabel('Seconds');
ylabel('Sample Values');
grid on;




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!

Vielen Dank und viele Grüße
sonicycle
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.07.2019, 13:06     Titel: Re: Rechteck Modulation von weißem Rauschen
  Antworten mit Zitat      
Hallo sonicycle,

Zunächst würde ich das clear all weglassen, denn es ist Zeitverschwendung, alle Funktionen aus dem RAM zu löschen und sie von der langsamen Festplatte nachzuladen. close all 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.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
sonicycle
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 03.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2019, 14:06     Titel:
  Antworten mit Zitat      
Hallo Jan,

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;


Dann erhalte ich allerdings folgenden Output:

Private Nachricht senden Benutzer-Profile anzeigen
 
sonicycle
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 03.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2019, 16:31     Titel:
  Antworten mit Zitat      
Okay, habs jetzt folgendermaßen gelöst:

Code:
fs = 44100;
L = 176400;     % Number of samples after 4 seconds for fs=44,1kHz
fmod = 1;
cycles = L/fs*fmod;

x = sigma+randn(L,1)+mu;            % Gaussian Noise Signal
s = 4*square(2*pi*fmod*t);          % 1 Hz Rectangular Signal

y = ammod(x,1,fs);                  % 1 Hz Sine Modulation

for j = 1:cycles
    x(fs*1/fmod*j-(fs*1/(2*fmod)):fs*1/fmod*j)=0;
end


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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.