📄 code_erro.m
字号:
function erro=code_erro(input_seq,SNR,varargin)
%--------------------------------------------------------------------------
%用法: erro=code_erro(input_seq,SNR,'type')
%input: 随机序列;
% SNR:信噪比;
%type: 编码类型,可选 dppm, ppm, ook ;
%erro: 编码、加高斯白噪声、检测、解码后,与input_seq相比的误码率
%--------------------------------------------------------------------------
s=varargin{1,1}; %取得输入的第三个参数
N=length(input_seq);
% for dppm,ppm,and ook coding
code_out=code(input_seq,s);
% add niose
temp=awgn(code_out,SNR,'measured');
% detect
detect=temp>0.5;
% decode
decode_out=decode(detect,s);
% erro calculate
if length(decode_out)>=N
errol=decode_out(1:N)-input_seq;
else
add1=zeros(1,(N-length(decode_out)));
decode_out=cat(2,decode_out,add1);
errol=decode_out(1:N)-input_seq;
end
erro_abs=abs(errol);
errosum=0; %错误的个数
for i=1:N
errosum=errosum+erro_abs(i);
end
erro=errosum/N;
% end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -