SNR verändern bei Generierung von Rauschen

Gast #2341619
Lesenswert?

Hallo zusammen!
nach dem ich verschiedene Signal softwarmäßig generiert habe und über
mein Bord (Fpga+Dac) gesendet habe, würde ich gerne weisses Rauschen für 
vordefinierten SNR  technisch programmieren.

bisjetzt habe das Rauschen wie folgendes generiert:

ich habe jede Abtastwerte eine Rauschenwert,die von  einfachene
Zufallsgenerator erzeugt wird, addiert :
1
 float untere  =-0.21;     // Rauschen untere Grenze
2
  float obere =0.234;       //Rauschen obere Grenze
3
  srand(time(NULL)); 
4
 
5
 int nsamples=(int)(tmax-tmin)*inputrate;  // Anzahl der abgetasteten Werte
6
  double xr=(double)Interp/CLK;   //Abtastschrittweite
7
  double  X =tmin;
8
  for(int i=0; i<nsamples; i++){
9
                            
10
   Y[i]=sin(2*pi*f*X)+((obere-untere)*((float)rand()/RAND_MAX))+untere;
11
   X+=xr
12
  }

Nun  wie kann ich das Rauschen generieren wenn zB SNR=10 dB ist?

ich weis Dass SNR=10 log(Pnutz/Prauschen) ist.

die Leistung von dem Nutzsignal werde ich so brechnen:
1
  for(int i=0; i<nsamples; i++){
2
                            
3
   Y[i]=sin(2*pi*f*1/inputrate *X);
4
   X+=xr
5
  }
6
               //nach Trapezregel:
7
 doube Pn=0;
8
 for(int i=1; i<Samples; i++){
9
   Pn+=Pn;                         
10
  Pn= ((Y[i]*Y[i]+y[i-1]*Y[i-1])/2)*tmin-tmax/nsamples
11
    }

und danach kann ich die Leistung von dem Rauschen bestimmen,aber  wie 
kann ich die Rauschsignal so generiere, dass es zB SNR=10 dB sein wird?

Ich bin wirklich für jede Hilfe dankbar, Recherche hat mir leider nicht 
sonderlich viel weitergeholfen

Gruß
Ctoly

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren