📄 复件 lihui.m
字号:
clear;
clc;
type = input('调制方式(0:BPSK,1:CFSK,2:CASK):');
tic;
T = 2;
delt_t = 0.1;
A = 1;
E_N0 = 0:10;
snr = E_N0 + 3 - 10*log10(T/delt_t);
t = (delt_t:delt_t:T)';
LOOP = 2500;
if type==0 %if BPSK
wc = 4*pi;
s0 = A*sin(wc*t);
s1 = A*sin(wc*t+pi);
VT = 0;
elseif type==1 %if CFSK
w0 = 2*pi;
w1 = 4*pi;
s0 = A*sin(w0*t);
s1 = A*sin(w1*t);
VT = 0;
else %if CASK
wc = 2*pi;
s0 = 0*t;
s1 = A*sin(wc*t);
VT = 0.5*s1'*s1*delt_t;
end
%E = 0.5*(s0'*s0+s1'*s1)*delt_t;
%sigpower = 10*log10(E); %信号功率
for loop = 1:length(E_N0)
error = 0;
for i = 1:LOOP
code = randint(1,100);
y = s0*(1-code) + s1*code; %发射机调制
rt = awgn(reshape(y,[T*100/delt_t 1]),snr(loop),'measured'); %加噪
%rt = awgn(reshape(y,[T*100/delt_t 1]),snr(loop),sigpower);
r = reshape(rt,[T/delt_t 100]);
code_test = (s1'*r*delt_t-s0'*r*delt_t)>VT; %相关并判决
error = error + sum(code_test~=code);
end
error_rat(loop) = error/LOOP/100;
end
toc;
%系统理论误码率
if type==0 %if BPSK
PE = 1 - normcdf(sqrt(2*10.^(E_N0/10)));
elseif type==1 %if CFSK
PE = 1 - normcdf(sqrt(10.^(E_N0/10)));
Else %if CASK
PE = 1 - normcdf(sqrt(10.^(E_N0/10)));
end
semilogy(E_N0,error_rat,'k*-',E_N0,PE,'ko-')
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -