2017-07-28 6 views
1

Considérant un canal de communication Additive Gaussian Noise (AWGN) où un signal prenant des valeurs de la modulation BPSK est en cours de transmission. Ensuite, le signal bruité reçu est: y[k] = s[k] + w[k]s[k] est soit + 1, -1 symbole et w[k] est le bruit gaussien blanc moyen nul.Modulation BPSK et SNR: Matlab

- Je souhaite estimer le signal s et évaluer la performance en mesurant le rapport signal sur bruit à partir de 0:40 dB. Soit, le signal estimé est hat_s.

Ainsi, le graphique pour que cela aurait sur l'axe X la plage de SNR et sur l'axe Y la erreur quadratique moyenne obtenue entre les valeurs de signal connues et les estimations-à-dire, s[k] - hat_s[k]

Question 1: Comment définir le signal rapport au bruit? Est-ce que la formule de SNR serait sigma^2/sigma^2_w. Je suis confus au sujet du terme dans le numérateur: quelle est la variance du signal, sigma^2, habituellement considérée? Question 2: Mais, je ne sais pas quelle est la valeur de la variance du bruit, alors comment ajouter du bruit?

C'est ce que j'ai fait.

N = 100; %number of samples 
s = 2*round(rand(N,1))-1; 
%bpsk modulation 
y = awgn(s,10,'measured'); %adding noise but I don't know 
the variance of the signal and noise 

%estimation using least squares 

hat_s = y./s; 


mse_s = ((s-hat_s).^2)/N; 

Corrigez-moi si c'est le cas. Je vous remercie.

Répondre

1

D'abord, je pense qu'il est important de savoir quelles sont les choses que nous avons un système BPSK:

La constellation d'un système BPSK est [-A, A] dans ce cas [-1,1] le SNR varie de 0 db à 40 db

Je chose que la réponse est dans cette fonction:

y = awgn (...); à partir de matlab central:

y = awgn (x, snr) ajoute un bruit blanc gaussien au signal vectoriel x. Le scalaire snr spécifie le rapport signal sur bruit par échantillon, en dB. Si x est complexe, awgn ajoute du bruit complexe. Cette syntaxe suppose que la puissance de x est 0 dBW. Y = awgn (x, snr, sigpower) est identique à la syntaxe ci-dessus, sauf que sigpower est la puissance de x en dBW. Y = awgn (x, snr, 'mesuré') est le même que y = awgn (x, snr), sauf que awgn mesure la puissance de x avant d'ajouter du bruit.

vous utilisez y = awgn (x, RSB, « mesurée »), de sorte que vous n'avez pas besoin de vous inquiéter, beacuse Matlab porte tout pour vous, mesurer la puissance du signal, et appliquer ensuite à canaliser un bruit avec la variance nécessaire pour obtenir ce rapport SNR.

nous allons voir comment cela peut-il arriver

SNRbit = Eb/No = A^2/No = dmin^2 /4N0 

the constelation [A,-A] in this case is [-1,1] so 

10 log10(A^2/N0) = 10 log10(1/N0) = SNRbitdb 

SNRlineal = 10^(0.1*SNRdb) 

donc avec ce que:

noise_var=0.5/(EbN0_lin); % s^2=N0/2 

et le signal sera quelque chose comme ça

y = s + sqrt(noise_var)*randn(1,size); 

donc dans votre cas, je vais générer le signal comme vous le faites:

>> N = 100; %number of samples 
>> s = 2*round(rand(N,1))-1; %bpsk modulation 

prépare ensuite un SNR varie de 0 à 40 db

>> SNR_DB = 0:1:40; 

après que calulating tous les signaux posible:

>> y = zeros(100,length(SNR_DB)); 

>> for i = 1:41 
y(:,i) = awgn(s,SNR_DB(i),'measured'); 
end 

à ce moment la meilleure façon de voir le signal est à l'aide d'un intrigue constellation comme ceci:

>> scatterplot(y(:,1)); 
>> scatterplot(y(:,41)); 

scatter plot 40 db

scatter plot 0 db

vous pouvez voir un mauvais signal 0 bruit db puissance égale en tant que signal et un signal de très bon signal plus grand que 40 bruit DB. Eb/No = Signal de puissance - Db de puissance, donc 0 signifie un bruit de puissance égal à la puissance du signal, 40 db signifie la puissance du signal plus grand que la puissance du bruit

alors pour vous, calculer le mse, matlab en a un la fonction de cette

err = immse (X, Y) description de

exemple

err = immse (X, Y) calcule l'erreur quadratique moyenne (MSE) entre les tableaux X et Y. X et Y peuvent être des tableaux de n'importe quelle dimension, mais doivent être de la même taille et la classe.

donc avec ceci:

>> for i = 1:41 
err(i) = immse(s,y(:,i)); 
end 
>> stem(SNR_DB,err) 

enter image description here

Placettes, et puisque nous travaillons dans db, il devrait être beeter d'utiliser des axes logarithmiques

+0

Nous vous remercions de votre réponse le long avec les parcelles, cependant peu de choses ne sont pas claires. Pourriez-vous clarifier s'il vous plaît? (1) Comme 'awgn' s'occupe des parties de bruit de signal, la plupart du temps, à partir des articles de recherche, on ne sait pas quelle est la variance du bruit et la variance du signal. Lorsque je rédige des documents, je dois également le mentionner. J'ai donc posé la question. Pouvez-vous dire quelle est la variance de signal et de bruit qui devrait être écrite théoriquement? (2) Je ne comprends pas comment la valeur de 1 vient dans la formule 'A^2 = 1' – SKM

+0

J'ai corrigé la formule pour la question (2), vous avez raison de dire que c'était inexact. Pour la première question, autant que je sache, la chose importante ici est l'énergie par bit du signal et la variance du bruit. – anquegi

+0

Désolé de sembler bruyant.Je ne pouvais pas comprendre ce qui est 'dmin^2/4N0' et je n'ai trouvé aucune référence sur la façon dont vous avez obtenu cette valeur et noise_var = 0.5/(EbN0_lin); % s^2 = N0/2'. Pouvez-vous s'il vous plaît expliquer/fournir une référence comment vous avez obtenu cette valeur. Merci pour votre temps et vos efforts. – SKM