matlab程序

matlab程序,第1张

c=[]

d=[]

for k=4:12

H=hilb(k)

L=diag(sqrtm(H))

F=inv(L)*H*inv(L) %%%% 错误之处 %%%%

%%%%% 错误原因:L不是方阵,不可逆,所以inv(L)报错!%%%%%%

c=[c,cond(H)]

d=[d,cond(F)]

end

lc=log(d/c)

n=4:12

p=polyfit(n,lc,1)

plot(n,lc,'*',n,polyval(p,n))

residdure=c-exp(polyval(p,n))

1 新建m文件,把函数

function [ray]=ray_sig(zhongzi)贴进去,保存;

2 新建m文件,把函数

function [p]=wubitlv(snr_in_dB,Lc,W0)贴进去,保存;

3 在command window里输入

echo on

Lc=20

W0=1%窄带干扰信号的中心频率

SNRindB=0:2:30

for i=1:length(SNRindB)

smld_err_prb(i)=wubitlv(SNRindB(i),Lc,W0)

echo off

end

% 绘制仿真结果曲线,误码率用对数表示

echo on

semilogy(SNRindB,smld_err_prb)

axis([0,10,0,10^-1])

xlabel('信噪比Eb/N0')

ylabel('误码率Pb')

title('DS系统在窄带干扰下的误码率曲线')

%%%即可,可以出图!

%这是主函数,在matlab中建个m文件复制进去,保存

echo on

Lc=20%每个信息比特为对应的PN码片数

A1=3%第一个正弦干扰信号的幅度

A2=7%第二个正弦干扰信号的幅度

A3=12%第三个正弦干扰信号的幅度

A4=0%无正弦干扰情况下

W0=1%正弦干扰信号的频率

SNRindB=0:2:30%要求的信噪比范围

%计算在不同幅度正弦干扰信号的误码率

for i=1:length(SNRindB)

smld_err_prb1(i)=wubitlv(SNRindB(i),Lc,A1,W0)

smld_err_prb2(i)=wubitlv(SNRindB(i),Lc,A2,W0)

smld_err_prb3(i)=wubitlv(SNRindB(i),Lc,A3,W0)

echo off

end

%计算在无正弦干扰信号情况下的误码率

echo on

SNRindB4=0:1:8

for i=1:length(SNRindB4)

mld_err_prb4(i)=wubitlv(SNRindB(i),Lc,A4,W0)

echo off

end

%绘制仿真结果曲线,误码率用对数表示

semilogy(SNRindB,smld_err_prb1,SNRindB,smld_err_prb2,SNRindB,smld_err_prb3,SNRindB4,smld_err_prb4)

xlabel('信噪比Eb/N0')

ylabel('误码率Pb')

title('DS系统在不同振幅的正弦干扰下的误码率曲线')

%这是子函数,在matlab中建立新的m文件,复制进去,保存,文件名必须为wubitlv.m

%子函数:

%计算误码率的m文件

function [p]=wubitlv(snr_in_dB,Lc,Ac,W0)

snr=10^(snr_in_dB/10)

sgma=1

Eb=2*sgma^2*snr%每位信息比特的能量

E_chip=Eb/Lc%每个码片的能量

N=10000%待传输的信息符号数

num_of_err=0

%生成一个待传的随机信息符号

for i=1:N

temp=rand

if (temp<0.5)

data=-1

else

data=1

end

% 将一位信息比特重复LC次

for j=1:Lc

repeat_data(j)=data

end

% 生成PN码

for j=1:Lc

temp=rand

if (temp<0.5)

pn_seq(j)=-1

else

pn_seq(j)=1

end

end

% 待传输的扩频信号

trans_sig=sqrt(E_chip)*repeat_data.*pn_seq

noise=sgma*randn(1,Lc)%高斯白噪声

% 生成单频率正弦干扰信号

n=(i-1)*Lc+1:i*Lc

interference=Ac*sin(W0*n)

%接收机接收的信号

rec_sig=trans_sig+noise+interference

temp=rec_sig.*pn_seq%进行解扩

%进行输出判决

decision_variable=sum(temp)

if (decision_variable<0)

decision=-1

else

decision=1

end

if (decision~=data)

num_of_err=num_of_err+1%误码计数

end

end

p=num_of_err/N%误码率计数器

%%然后运行主程序,上述两个m文件放在同一个文件夹。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存