📄 psk_8_lp.m
字号:
%============= 2008.10.10 4:00 PM ======%
%============= 观察调制解调效果,加噪声, 观察"误符号率","误码率"
%========== “根” 升余弦 脉冲
clear;
clc;
fs=12000; % sample rate
fb=2400;
ts=1/fs;
tb=1/fb;
fc=1800; % carrier frequency
df=50;
%b=fir1(128,0.25);
alpha=0.25;
SNR=0:2:20;
SNR_real=SNR-10*log10(6);
for m=1:length(SNR_real)
now=SNR(m)
snr(m)=10^(SNR_real(m)/10); % 注意,此处的信噪比为符号信噪比,也是样点信噪比。《高数通》196页图为比特信噪比
% 比特信噪比*3=符号信噪比
symbol_err=0;
bit_err=0;
for n=1:10000
n
N=1000;
s=randint(1,N,8);
[signal_t,f_off]=bw0_modulation_LP(s,0);
signal_t=signal_t./sqrt(mean(abs(signal_t).^2));
% 信道
noise=randn(1,length(signal_t)).*exp(j*2*pi.*rand(1,length(signal_t))).*sqrt(1/snr(m));
signal_t=signal_t+noise;
f_off_e=0;
out_demodu=bw0_demodulation_LP(signal_t,f_off_e); % 解调完成
for k=1:N
dec(k)=out_demodu((k-1)*6+49);
end;
%=============采样判决
for k=1:N
for l=1:8
tt=dec(k);
distance(l)=abs(tt-exp(j*2*pi/8*(l-1)));
[value,md]=min(distance);
switch md
case 1
out(k)=0;
case 2
out(k)=1;
case 3
out(k)=2;
case 4
out(k)=3;
case 5
out(k)=4;
case 6
out(k)=5;
case 7
out(k)=6;
case 8
out(k)=7;
end;
end;
end;
for k=1:N
if out(k)~=s(k)
symbol_err=symbol_err+1;
bit_err=bit_err+biterr(out(k),s(k));
else;
end;
end;
if bit_err>1000
break;
else;
end;
end;
Pe_bit(m)=bit_err/N/3/n;
if Pe_bit(m)==0
break;
else;
end;
end;
semilogy(SNR(1:length(Pe_bit)),Pe_bit,'-o');hold on; % 8PSK 仿真值
% SNR=0:2:20;
% Pe_bit=[0.31917,0.28817,0.223,0.15244,0.09525,0.051571,0.020059,0.0048696
% ,0.00072379,3.7874e-005,4.3333e-007;]
x_dB=0:2:20;
x=10.^(x_dB/10);
y=2*Qfunct(sqrt(2.*x).*sin(pi/8)); % 8PSK近似公式 《高数通》197页
semilogy(x_dB,y,'-s');hold off;
grid;
% semilogy(SNR_dB2,Pth);hold off;grid;
% figure;
% plot(dec_i,dec_q,'o');
% [XI,xi,df1]=fftseq(xi,ts,df);
% XI=XI/fs;
% f=[0:df1:df1*(length(xi)-1)]-fs/2;
%
% [XQ,xq,df1]=fftseq(xq,ts,df);
% XQ=XQ/fs;
% f=[0:df1:df1*(length(xq)-1)]-fs/2;
%
% [YI,yi,df1]=fftseq(yi,ts,df);
% YI=YI/fs;
% f=[0:df1:df1*(length(yi)-1)]-fs/2;
%
% [YQ,yq,df1]=fftseq(yq,ts,df);
% YQ=YQ/fs;
% f=[0:df1:df1*(length(yq)-1)]-fs/2;
%
% [TEMP_I,temp_i,df1]=fftseq(temp_i,ts,df);
% TEMP_I=TEMP_I/fs;
% f=[0:df1:df1*(length(temp_i)-1)]-fs/2;
%
% [TEMP_Q,temp_q,df1]=fftseq(temp_q,ts,df);
% TEMP_Q=TEMP_Q/fs;
% f=[0:df1:df1*(length(temp_q)-1)]-fs/2;
%
% figure;
% subplot(3,2,1),plot(f,abs(fftshift(XI)));
% subplot(3,2,2),plot(f,abs(fftshift(XQ)));
% subplot(3,2,3),plot(f,abs(fftshift(YI)));
% subplot(3,2,4),plot(f,abs(fftshift(YQ)));
% subplot(3,2,5),plot(f,abs(fftshift(TEMP_I)));
% subplot(3,2,6),plot(f,abs(fftshift(TEMP_Q)));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -