[問題] 可以幫我看看BPSK嗎?已回收

看板MATLAB作者 (專心讀書不忘休閒)時間14年前 (2009/10/14 21:55), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/2 (看更多)
不好意思 可以幫我看看BPSK嗎? 模擬出來的點就是不對? 可以幫我看看哪邊有出錯嗎? % Main code close all;clear all; SNR_dB1=0:2:10; SNR_dB2=0:0.1:10; bit_err_prb=zeros(1,length(SNR_dB1)); theo_err_prb=zeros(1,length(SNR_dB2)); for i=1:length(SNR_dB1), bit_err_prb(i)=bpsk_pb(SNR_dB1(i)); end for i=1:length(SNR_dB2), SNR=exp(SNR_dB2(i)*log(10)/10); theo_err_prb(i)=Qfunc(sqrt(2*SNR)); end semilogy(SNR_dB2,theo_err_prb); hold semilogy(SNR_dB1,bit_err_prb,'r*'); % function pb=bpsk_pb(snr_in_db) % % N=5000; E=1; % energy per symbol snr=10^(snr_in_db/10); vari=sqrt(E/snr)/2; % generate of the random data sourses between 0 & 1 data_s=sign(randint(1,N)-0.5); % dection and the probability of error calculation numofbiterror=0; for i=1:N, n=sqrt(vari)*randn; r=data_s(i)+n; % correlation metrics c00=dot(r,1); % 1 c01=dot(r,-1); % 0 c_max=max([c00,c01]); if (c00==c_max), decis=1; elseif (c01==c_max), decis=-1; end % increment the error counter, if the decision is not correct if(decis~=data_s(i)), numofbiterror=numofbiterror+1; end end pb=numofbiterror/N; end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 222.228.171.110

10/15 02:08, , 1F
vari=E/sqrt(2*snr); n=vari*randn (印象中)
10/15 02:08, 1F

10/15 23:04, , 2F
可是randn的定義是要乘上standard deviation...?
10/15 23:04, 2F

10/15 23:08, , 3F
但是照你說的修正後圖形就很接近理論值...
10/15 23:08, 3F

10/15 23:32, , 4F
很謝謝你的幫忙!
10/15 23:32, 4F
文章代碼(AID): #1ArTX2hk (MATLAB)
文章代碼(AID): #1ArTX2hk (MATLAB)