[問題] 有關QPSK的程式疑問。已回收
以下是我自己寫的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
10/12 16:55, 1F
→
10/12 16:56, , 2F
10/12 16:56, 2F
→
10/12 16:57, , 3F
10/12 16:57, 3F
→
10/12 17:12, , 4F
10/12 17:12, 4F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章