Wie modelliert man Phasenrauschen?

Ich möchte Phasenrauschen modellieren. Der folgende Code zeigt, wie ich dem Signal Phasenrauschen hinzufüge. Allerdings bekomme ich keine korrekte Ausgabe. Das heißt, das Signalspektrum sollte sich im Frequenzbereich ausbreiten, es ändert jedoch nicht die Phase des Signals. Bitte, kann mir jemand sagen, wie man Phasenrauschen modelliert.

sigma = 0.5;
t = 0:0.01:1;
sig  = cos(2*pi*4*t);                                                        % original signal
A = sigma *randn(1,length(t));                                          % standard deviation of phase noise
sig2 = (A) .* cos(2*pi*4*t + sigma*randn(1,length(t)));           % signal with phase noise & amplitud4e noise
figure,plot(t,sig,'r',t,sig2, 'b');
figure, plot(abs(fft(sig,10*length(sig))));    %%% takin absolute value of fft and zero padding
figure, plot(abs(fft(sig2,10*length(sig2))));
return

Antworten (2)

Beweist Ihnen dieses Beispiel, dass sich das Spektrum ausbreitet? Das Spektraldiagramm verwendet dB (ich finde das bequemer) auf der Y-Achse, also betrachten Sie es als logarithmische Skala.

Sie können sehen, dass ich der Phase VIEL Rauschen hinzufügen muss. Ich denke, das hat damit zu tun, dass das Rauschen, das ich hinzufüge, weißes Rauschen ist. In praktischen Lösungen hat dieses Rauschen in der Regel einen 1/f-Charakter in der Nähe des Trägers.

Ich habe Octave dafür verwendet, da ich kein Matlab zur Verfügung habe (und Octave funktioniert für mich und ist kostenlos :-))

clear all;clc;

Fin =1;
Ttotal = 1000;
nop = 100000;

Tsample = Ttotal/nop;
t = 0:Tsample:Ttotal;
Fsample = nop/Ttotal;

x  = sin(2*pi*Fin*t); 
xn  = sin(2*pi*Fin*(t + 0.1*randn(size(t))));

subplot(2, 1, 1);
points = 500;
plot(Fsample*t(1:points),xn(1:points),'r',Fsample*t(1:points),x(1:points),'b')
NFFT = 2^nextpow2(nop); % Next power of 2 from length of y
SX  = fft(x,NFFT)/nop;
SXn = fft(xn,NFFT)/nop;
dBSX = 20 * log( abs(SX));
dBSXn = 20 * log( abs(SXn));
f = Fsample/2*linspace(0,1,NFFT/2+1);
subplot(2, 1, 2);
plot(f,dBSXn(1:NFFT/2+1),'r',f,dBSX(1:NFFT/2+1),'b')
axis([0.5,1.5,-200,0]);

Geben Sie hier die Bildbeschreibung ein

Hallo IC_designer, danke für deine Antwort. Aber wenn ich von deinem Signal fft nehme und Phasenrauschen hinzufüge. das Spektrum im Frequenzbereich bleibt gleich.
Ich denke, das Spektrum ändert sich, siehe die untere Hälfte des beigefügten Diagramms. Die blaue Spur ist das Signal ohne Rauschen, die rote mit Rauschen. In der Nähe des Trägers ist das Signal ähnlich, aber weit entfernt vom Träger nimmt das Grundrauschen zu. Was erwartest du zu sehen??
Hallo IC_designer_Rimpelbekkie, ich erwarte eine Erweiterung des Spektrums. Da das Phasenrauschen eine Verbreiterung auf beiden Seiten der Mittenfrequenz erzeugt, erwarte ich eine Spektrumverbreiterung im Frequenzbereich. Ich habe eine ideale Simulation des FMCW-Radars erstellt und möchte es nicht ideal machen, daher möchte ich Phasenrauschen und Amplitudenrauschen hinzufügen.
Ha, ich arbeite auch an (FMCW) Radar :-) Ich denke, Sie sind auf dem richtigen Weg, aber Sie müssen dem Signal 1/f-Rauschen hinzufügen. Das 1/f-Zeichen kümmert sich um die Frequenzspreizung in der Nähe des Trägers, was Sie sehen möchten. So verhält sich auch das Rauschen in Oszillatoren. Wenn Sie nach "phasenoise" googeln, können einige interessante Artikel heruntergeladen werden. Diese erklären das 1/f-Verhalten von Phasenrauschen.
ah perfekt. es gibt in mathworks einen dateiaustausch für phasenrauschen. mathworks.com/matlabcentral/fileexchange/8844-phase-noise Allerdings bekomme ich auch hier keine korrekte Ausgabe. Ich brauche diese Lösung dringend, da ich Abgabetermin für meine Abschlussarbeit habe :P
Leider ist dies kein Thema, das in kurzer Zeit leicht zu verstehen ist :-( Haben Sie Ihr Eingangssignal lang genug gemacht, damit Sie nach der FFT die erforderliche Frequenzauflösung erhalten? Generieren Sie auch im Zeitbereich ein 1 / f (rosa Rauschen). kommt mir nicht so klar vor :-(
Ja. Mein Eingangssignal ist lang genug. Ich beziehe mich jetzt auf eine Literatur ( link.springer.com/chapter/10.1007/978-3-319-03659-5_7 ) für die Modellierung des Phasenrauschens.

Ich denke, Sie können dies mit diesen Schritten tun:

  1. Nehmen Sie fft des ursprünglichen Signals.

  2. Rauschen als Exponentialterm hinzufügen (durch Multiplikation).

  3. Nehmen Sie inverses fft als verrauschtes Signal.

    close all
    sigma = 10;
    t = 0:0.01:1;
    sig  = cos(2*pi*4*t);      % original signal
    A = sigma *randn(1,length(t));  % standard deviation of phase noise
    fftsig=fft(sig);
    fftsig2=fftsig.*exp(A*1i); %adding noise
    sig2=ifft(fftsig2);% signal with phase noise
    

Zusammenfassung der Ergebnisse

anders vielleicht:

   sigma = 100;
   t = 0:0.01:10;
   sig  = cos(2*pi*4*t);      % original signal
   sig3 = cos(2*pi*4*t+sigma *randn(1,length(t)));

Geben Sie hier die Bildbeschreibung ein

Hallo SMA.D. Danke für deine Antwort. Wenn Sie die FFT beider Signale sehen, ist es dasselbe. Es sollte eine Streuung des Spektrums geben, wenn ich dem Signal Phasenrauschen hinzufüge.
Bearbeitet! Vielleicht...
Danke SMA.D. Aber das habe ich bereits getan. Ich meine die Art und Weise, wie Sie bearbeitet haben.