关于一个MATLAB程序的运行问题 100
我是一个初学者,现在一个m文件分成3部分请问怎么运行处结果3个文件分别如下:第一个function[gsrv1]=gngauss(sgma)u=rand;z=sgma*(...
我是一个初学者,现在一个m文件 分成3部分 请问怎么运行处结果 3个文件分别如下:
第一个
function[gsrv1]=gngauss(sgma)
u=rand;
z=sgma*(sqrt(2*log(1/(1-u))));
u=rand;
gsrv1=z*cos(2*pi*u);
第二个
echo on
SNRindB1=0:1:12;
SNRindB2=0:0.1:12;
for i=1:length(SNRindB1),
smld_err_prb(i)=smldPe58(SNRindB1(i));
echo off;
end;
echo on;
for i=1:length(SNRindB2),
SNR_per_bit=exp(SNRindB2(i)*log(10)/10);
theo_err_prb(i)=(3/2)*(0.5*erfc(sqrt(((4/5)*SNR_per_bit)/2)));
echo off;
end;
echo on;
semilogy(SNRindB1,smld_err_prb,'*');
hold
semilogy(SNRindB2,theo_err_prb);
echo off;
grid
xlabel('Eb/No in dB')
title('PAM通信系统的蒙特卡洛仿真')
gtext('(注:“—”理论误码率;“*”误比特率;')
第三个
function [p]=smldPe58(snr_in_dB)
d=1;
SNR=exp(snr_in_dB*log(10)/10);
sgma=sqrt((5*d^2)/(4*SNR));
N=10000;
for i=1:N,
temp=rand;
if(temp<0.25),
dsource(i)=0;
elseif(temp<0.5),
dsource(i)=1;
elseif(temp<0.75),
dsource(i)=2;
else
dsource(i)=3;
end
end;
numoferr=0;
for i=1:N,
if(dsource(i)==0),
r=-3*d+gngauss(sgma);
elseif(dsource(i)==1),
r=-d+gngauss(sgma);
elseif(dsource(i)==2),
r=d+gngauss(sgma);
else
r=3*d+gngauss(sgma);
end;
if(r<-2*d),
decis=0;
elseif(r<0),
decis=1;
elseif(r<2*d),
decis=2;
else
decis=3;
end;
if(decis~=dsource(i)),
numoferr=numoferr+1;
end;
end;
p=numoferr/N;
我不会运行 请各位大哥详细为我讲下 展开
第一个
function[gsrv1]=gngauss(sgma)
u=rand;
z=sgma*(sqrt(2*log(1/(1-u))));
u=rand;
gsrv1=z*cos(2*pi*u);
第二个
echo on
SNRindB1=0:1:12;
SNRindB2=0:0.1:12;
for i=1:length(SNRindB1),
smld_err_prb(i)=smldPe58(SNRindB1(i));
echo off;
end;
echo on;
for i=1:length(SNRindB2),
SNR_per_bit=exp(SNRindB2(i)*log(10)/10);
theo_err_prb(i)=(3/2)*(0.5*erfc(sqrt(((4/5)*SNR_per_bit)/2)));
echo off;
end;
echo on;
semilogy(SNRindB1,smld_err_prb,'*');
hold
semilogy(SNRindB2,theo_err_prb);
echo off;
grid
xlabel('Eb/No in dB')
title('PAM通信系统的蒙特卡洛仿真')
gtext('(注:“—”理论误码率;“*”误比特率;')
第三个
function [p]=smldPe58(snr_in_dB)
d=1;
SNR=exp(snr_in_dB*log(10)/10);
sgma=sqrt((5*d^2)/(4*SNR));
N=10000;
for i=1:N,
temp=rand;
if(temp<0.25),
dsource(i)=0;
elseif(temp<0.5),
dsource(i)=1;
elseif(temp<0.75),
dsource(i)=2;
else
dsource(i)=3;
end
end;
numoferr=0;
for i=1:N,
if(dsource(i)==0),
r=-3*d+gngauss(sgma);
elseif(dsource(i)==1),
r=-d+gngauss(sgma);
elseif(dsource(i)==2),
r=d+gngauss(sgma);
else
r=3*d+gngauss(sgma);
end;
if(r<-2*d),
decis=0;
elseif(r<0),
decis=1;
elseif(r<2*d),
decis=2;
else
decis=3;
end;
if(decis~=dsource(i)),
numoferr=numoferr+1;
end;
end;
p=numoferr/N;
我不会运行 请各位大哥详细为我讲下 展开
4个回答
展开全部
这是三个程序,function开头的是定义函数,先保存好,函数名要和另一个程序调用的函数名一致,最好文件名也一致,具体哪个可以不一样也记不清了,都一样也方便记忆,文件管理,这些都要在matlab工作目录下,不然调用不了,然后运行另一个。
话说你是哪个学校的?初学者都直接搞数字通信仿真,小弟佩服。
看在我在另一个问题里注释了smldPe58(snr_in_dB)程序的辛苦,赏小弟些分吧,我才注册了号三四天,整天回答问题,前两天在养生那板块混,前天才发现matlab问题挺多的,刚转战过来,拉兄弟一把吧。虽然回答者: hunfenyihao (混分一号)就是那个提问者,大家都是混分的么。
话说你是哪个学校的?初学者都直接搞数字通信仿真,小弟佩服。
看在我在另一个问题里注释了smldPe58(snr_in_dB)程序的辛苦,赏小弟些分吧,我才注册了号三四天,整天回答问题,前两天在养生那板块混,前天才发现matlab问题挺多的,刚转战过来,拉兄弟一把吧。虽然回答者: hunfenyihao (混分一号)就是那个提问者,大家都是混分的么。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二个为脚本文件,第一、三个为函数文件。脚本文件中调用了第三个函数,而第三个函数又会调用第一个函数。
将三个文件放在同一文件夹内,运行第二个即可。
将三个文件放在同一文件夹内,运行第二个即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二个为脚本文件,第一、三个为函数文件。脚本文件中调用了第三个函数,而第三个函数又会调用第一个函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询