[問題] 有關QPSK的程式疑問。已回收

看板MATLAB作者 (空)時間16年前 (2009/10/12 13:43), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
以下是我自己寫的QPSK方程式,而目前最大的問題是,錯誤次數N,幾乎都是同樣的大小 導致圖型的點只會有一個,請問各位大大我是哪裡寫錯了,能指點我一下嗎嗎? 謝謝。 clear all; close all; EsNo = 1:1:10; %%%% SNR的範圍 Es = 1; %%%% 設定Es=1 No = 10.^(-EsNo/10); %%%% 逆推得到的雜訊Power for i=1:length(EsNo) N(i)=0; correct1(i)=0; correct2(i)=0; correct3(i)=0; correct4(i)=0; for j=1:100000 s = sqrt(Es/2); n1 = sqrt(No/2)*(randn(1) + j*randn(1)); n2 = sqrt(No/2)*(randn(1) + j*randn(1)); N1=n1(i); N2=n2(i); s1(j,i) = s + N1; s2(j,i) = s + N2; %%%%%%%%%%%%%% 寫一個隨機丟進去的程式 %%%%%%%%%%%%%%%%%%%%% X(j,i)=randint(1,1)*2-1; Y(j,i)=randint(1,1)*2-1; if (X(j,i)>0 & Y(j,i)>0) if (s1(j,i)>0 & s2(j,i)>0); correct1(i)=correct1(i)+1; %若在第一象限則判斷他對 else N(i)=N(i)+1; end elseif (X(j,i)<0 & Y(j,i)>0) if (s1(j,i)<0 & s2(j,i)>0) correct2(i)=correct2(i)+1; %若在第二象限則判斷他對 else N(i)=N(i)+1; end elseif (X(j,i)<0 & Y(j,i)<0) if (s1(j,i)<0 & s2(j,i)<0) correct3(i)=correct3(i)+1; %若在第三象限則判斷他對 else N(i)=N(i)+1; end elseif (X(j,i)>0 & Y(j,i)<0) if (s1(j,i)>0 & s2(j,i)<0) correct4(i)=correct4(i)+1; %若在第四象限則判斷他對 else N(i)=N(i)+1; %若判斷錯誤則錯誤+1 end end end pe(i)=N(i)/j; %計算錯誤率 end semilogy(i,pe,'*'); %畫模擬值 hold SNRindB2=0:0.1:10; for i=1:length(SNRindB2) SNR2=exp(SNRindB2(i)*log(10)/10); % theoretical error rate theo_err_prb(i)=qfunct(sqrt(2*SNR2)); %理論值 % echo off ; end; semilogy(SNRindB2,theo_err_prb); 理論值目前還是暫用版上寫的方式,請各位大大幫幫忙,小弟十分感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.23.17.113 ※ 編輯: dv8508 來自: 163.23.17.113 (10/12 13:46)

10/12 16:55, , 1F
No有問題...No改成No(i)試試
10/12 16:55, 1F

10/12 16:56, , 2F
應該懂我在說什麼吧= = 因為你i每一圈都一樣的noise
10/12 16:56, 2F

10/12 16:57, , 3F
所以錯誤率跑出來是近似一直線XD
10/12 16:57, 3F

10/12 17:12, , 4F
喔喔喔,原來是這樣...謝謝大大解答,我馬上去改。
10/12 17:12, 4F
文章代碼(AID): #1Aqi7et0 (MATLAB)
文章代碼(AID): #1Aqi7et0 (MATLAB)