⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smldpe3.m

📁 自己做的一个室内无线通信仿真
💻 M
字号:

%SMLDPE仿真求出以dB为单位的特定信噪比的误码率,返回不同编译码方案的误比特率
function [p,ps1,ps2,ps3]=smldPe(snr_in_dB)

E=1;
% snr_in_dB=4;
SNR=exp(snr_in_dB*log(10)/10); %信噪比
M=12;

sgma=E/sqrt(2*SNR); %噪声的标准偏差
symbols=[];

N=10000-3

%产生信源
for i=1:N,
	temp=rand;	%在(0,1)区间内的均匀随机变量
	if (temp<0.5),
		dsource1(i)=0;  %信源输出为0的概率为1/2
	else
		dsource1(i)=1;  %信源输出为1的概率为1/2
	end
end

temp=[dsource1 0 0 0];
dsource=bianma(temp) % 卷积编码
dsource1=bianma1(temp)
dsource2=bianma2(temp)

%随后为判决和误码概率的计算
numoferr=0;
reinfor=[];
reinfor1=[];
reinfor2=[];

for i=1:length(dsource)
	%匹配滤波器的输出
	if (dsource(i)==0),
		r=-E+sgma*randn; %如果信源输出为“-1”
	else
		r=E+sgma*randn;  %如果信源输出为"1"
	end;
 
	%随后为判决
	if (r<0),
		decis=0;		 %判决为“0”
	else 
		decis=1;	  	%判决为“1”
	end;
    reinfor=[reinfor,decis];
	if(decis~=dsource(i)),
		numoferr=numoferr+1; %如果出错,计数器加1
	end;
end;

for i=1:length(dsource1)

	%匹配滤波器的输出
	if (dsource1(i)==0),
		r=-E+sgma*randn; %如果信源输出为“-1”
	else
		r=E+sgma*randn;  %如果信源输出为"1"
	end;
  
	%随后为判决
	if (r<0),
		decis=0;		 %判决为“0”
	else 
		decis=1;	  	%判决为“1”
	end;
    reinfor1=[reinfor1,decis];
% 	if(decis~=dsource(i)),
% 		numoferr=numoferr+1; %如果出错,计数器加1
% 	end;
end;


for i=1:length(dsource2)
	%匹配滤波器的输出
	if (dsource2(i)==0),
		r=-E+sgma*randn; %如果信源输出为“-1”
	else
		r=E+sgma*randn;  %如果信源输出为"1"
	end;

	%随后为判决
	if (r<0),
		decis=0;		 %判决为“0”
	else 
		decis=1;	  	%判决为“1”
	end;
    reinfor2=[reinfor2,decis];
	
end;



 trellis1 = poly2trellis(3,[7 5]); 
 temp1=vitdec(reinfor,trellis1,10,'trunc','hard');

  trellis2 = poly2trellis(7,[14 117]);
  temp2 = vitdec(reinfor1,trellis2,10,'trunc','hard');

 trellis3 = poly2trellis(6,[65 57]);
 temp3 = vitdec(reinfor2,trellis3,20,'trunc','hard');





ps1=distance(temp1,temp)/length(temp)
ps2=distance(temp2,temp)/length(temp)
ps3=distance(temp3,temp)/length(temp)

p=numoferr/length(dsource)	;  %no c j 误差概率估算


%ps=wrongsym*6/N;



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -