基于matlab的跳频扩频通信的实现及性能的程序代码

基于matlab的跳频扩频通信的实现及性能的程序代码,第1张

rho_b1=0:5:35

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

你最好连上硬件试试,这样才学得进去。共同进步啊~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11247025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存