rho_b2=0:0.1:35
for i=1:length(rho_b1)
smlid_err_prb(i)=ssfh_Pe(rho_b1(i))
end
for i=1:length(rho_b2)
temp=10^(rho_b2(i)/10)
if(temp>2)
theo_err_rate(i)=1/(exp(1)*temp)
else
theo_err_rate(i)=(1/2)*exp(-temp/2)
end
end
semilogy(rho_b1,smlid_err_prb,'k*',rho_b2,theo_err_rate,'k-)
在程序中调用了ssfh_Pe子函数,程序如下:
function[p]=ssfh_Pe(tho_in_dB)
rho=10^(rho_in_dB/10)
Eb=rho
if(rho>2) alpa=2/rho
else alpa=1
end
agma=sqrt(1/(2*alpha))
N=10000
for i=1:N
temp=rand
if(temp<0.5)data(i)=1
else data(i)=0
end
end
for i=1:N
if(data(i)==0)
rlc(i)=sqrt(Eb)rls(i)=0r2c(i)=0r2s(i)=0
else
rlc(i)=0rls(i)=0r2c(i)=sqrt(Eb)r2s(i)=0
end
if(rand<alpha)
rlc(i)=rlc(i)+gngauss(sgma)
rls(i)=rls(i)+gngauss(sgma)
r2c(i)=r2c(i)+gngauss(sgma)
r2s(i)=r2s(i)+gngauss(sgma)
end
end
num_of_err=0
for i=1:N
r1=rlc(i)^2+rls(i)^2
r2=r2c(i)^2+r2s(i)^2
if(r1>r2)decis=0
else decis=1
end
if(decis~=data(i))
num_off_eff=num_of_err+1
end
end
p=num_of_err/N
其中高斯分布随机变量函数gngauss程序如下
function[gsrv1,gsrv2]=gngauss(n,sgma)
if nargin==0,
m=0sgma=1
elseif nargin==1,
sgma=mm=0
end
u=rand
z=sgma*(sqrt(2*log(1/(1-u))))
u=rand
gsrv1=m+z*cos(2*pi*u)
gsrv2=m+z*sin(2*pi*u)
感性入门篇:在command window里键入tmtool你就入门了tmtool也即test&measurement tool是一个通信工具 可以自动生成代码
下面附上串口通信程序的模板:
%注:此m文件无握手功能
clear,close all
%开启串口通信,以COM3为例
obj1 = instrfind('Type', 'serial', 'Port', 'COM3', 'Tag', '') %MATLAB将串口当做文件来读写
if isempty(obj1)
obj1 = serial('COM3')
else
fclose(obj1)
obj1 = obj1(1)
end
fopen(obj1)
%中间这个部分是程序的具体功能实现部分,自己写拉
%发送控制指令
switch y
case 1
fwrite(obj1, evalin('base', '0'))
case 2
fwrite(obj1, evalin('base', '1'))
case 3
fwrite(obj1, evalin('base', '2'))
otherwise
disp('error')
end
%关串口
fclose(obj1)
delete(obj1)
clear obj1
你最好连上硬件试试,这样才学得进去。共同进步啊~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)