Re: [問題] 依然是有關QPSK的疑問...已回收
恩,你好,你們老師要求不少。
另外我沒講到的基本常識是少用 for 迴圈。
這樣會拖慢數度。盡量以vector表示。
我幫你修了一下code:
% =======================================================================
clear all;
close all;
SNR = 0:1:10; %%%% SNR的範圍
Eb = 1; %%%% 設定Eb=1
No = 10.^(-SNR/10); %%%% 逆推得到的雜訊Power
for i=1:length(SNR)
NO = No(i);
N(i)=0;
correct(i)=0;
for j=1:100
s = sqrt(2*Eb/2)*ones(10000,1);
n1 = sqrt(NO/2)*randn(10000,1);
n2 = sqrt(NO/2)*randn(10000,1);
s1 = s + n1;
s2 = s + n2;
correct(i)=correct(i)+sum(s1>0)+sum(s2>0); %若在第一象限則判斷他對
N(i)=N(i)+length(s1)+length(s2)-sum(s1>0)-sum(s2>0);
end
pe(i)=N(i)/j/length(s)/2; %計算錯誤率
end
%%%%%%%%%%%%%%%%% QPSK理論值 %%%%%%%%%%%%%%%%%%%%%%%%%
r = 0:1:10; %%% SNR的範圍 %%%
Eb=1; %%% 固定Eb=1 %%%
No = 10.^(-r/10); %%% 逆推得到的No %%%
for i=1:length(r)
snr = Eb./No;
pe1=(1/2)*erfc(sqrt(2*(snr))/sqrt(2)); %%% 這是Matlab中不用Qfunction跑的錯誤機率程式碼 %%%
end
semilogy(SNR,pe,'*',r,pe1); %%% 畫圖,X軸為Eb/No的範圍,Y軸為錯誤機率
legend('simulation','theoretical');
ylabel('BER')
xlabel('SNR (dB)')
希望有幫助~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.2.93
推
10/17 17:45, , 1F
10/17 17:45, 1F
→
10/17 17:46, , 2F
10/17 17:46, 2F
→
10/17 17:46, , 3F
10/17 17:46, 3F
推
10/17 17:48, , 4F
10/17 17:48, 4F
→
10/17 17:49, , 5F
10/17 17:49, 5F
→
10/17 17:50, , 6F
10/17 17:50, 6F
→
10/17 17:51, , 7F
10/17 17:51, 7F
→
10/17 17:56, , 8F
10/17 17:56, 8F
推
10/17 18:03, , 9F
10/17 18:03, 9F
推
10/17 18:11, , 10F
10/17 18:11, 10F
→
10/17 18:12, , 11F
10/17 18:12, 11F
→
10/17 18:13, , 12F
10/17 18:13, 12F
推
10/17 19:09, , 13F
10/17 19:09, 13F
※ 編輯: ck901004 來自: 59.117.11.68 (10/17 20:21)
→
10/17 20:23, , 14F
10/17 20:23, 14F
推
10/18 01:19, , 15F
10/18 01:19, 15F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章