北邮通信原理编程实验完整代码

北邮通信原理编程实验完整代码告各位学弟学妹书:此实验对于大多数人来说甚是烦人,但是我还是要劝你:尽力去学吧,学的时候觉得没什么用,那是因为不了解其博大精深,如果你一不小心顶住压力认真学了(譬如me),日后涉及相关领域时,你就能够触类旁通,瞬间迸发出灵感,撞击出智慧的火花,这种感觉就好像搂着一群漂亮的姑娘行走在春风中一样,原来那些朦胧的理论都变成了清晰的线条,串在一起:你会有一种类似于愚公般的给子子孙孙签订卖身契投身于学术的激进想法,不过这种极左的思想毕竟要不得——除非你想女朋友和你分手,于激励学习便是极好的。

实验一://基带信号m(t)=sin(2000*pi*t)+2cos(1000*pi*t),fc=20khz,求AM,DSB-SC,SSBclear allexec t2f.sci;exec f2t.sci;fs=800; //采样速率T=200; //截短时间N=T*fs; //采样点数dt=1/fs; //时域采样间隔t=[-T/2:dt:T/2-dt]; //时域采样点df=1/T; //频域采样间隔f=[-fs/2:df:fs/2-df]; //频域采样点数fm1=1; //待观测正弦波频率,单位KHz,下同fm2=0.5; //待观测余弦波频率fc=20; //载波频率//以上为初始化参数设置m1=sin((2*%pi)*fm1*t); //待观测正弦波部分M1=t2f(m1,fs); //傅里叶变换MH1=-%i*sign(f).*M1; //希尔伯特变换mh1=real(f2t(MH1,fs)); //希尔伯特反变换m2=2*cos((2*%pi)*fm2*t); //待观测余弦波部分M2=t2f(m2,fs); //傅里叶变换MH2=-%i*sign(f).*M2; //希尔伯特变换mh2=real(f2t(MH2,fs)); //希尔伯特反变换s1=(1+(m1+m2)/abs(max(m1+m2))).*cos((2*%pi)*fc*t); //AM信号时域表达式S1=t2f(s1,fs); //AM信号频域表达式s2=(m1+m2).*cos((2*%pi)*fc*t); //DSB-SC信号时域表达式S2=t2f(s2,fs); //DSB-SC信号频域表达式s3=(m1+m2).*cos((2*%pi)*fc*t)-(mh1+mh2).*sin((2*%pi)*fc*t); //SSB信号时域表达式,以上边带为例S3=t2f(s3,fs); //SSB信号上边带频域表达式//以上是仿真计算部分//以下为绘图部分//AM信号xset('window',1)plot(f,abs(S1))title('AM信号频谱')xlabel('f')ylabel('S(f)')mtlb_axis([-25,25,0,max(abs(S1))]);xset('window',2)plot(t,s1)title('AM信号波形')xlabel('t')ylabel('s(t)')mtlb_axis([-3,3,-3,3]);//DSB-SC信号xset('window',3)plot(f,abs(S2))title('DSB-SC信号频谱')xlabel('f')ylabel('S(f)')mtlb_axis([-25,25,0,max(abs(S2))]);xset('window',4)plot(t,s2)title('DSB-SC信号波形')xlabel('t')ylabel('s(t)')mtlb_axis([-1,4,-3,3]);//SSB信号(以上边带为例)xset('window',5)plot(f,abs(S3))title('SSB信号频谱')xlabel('f')mtlb_axis([-25,25,0,max(abs(S3))])xset('window',6)plot(t,s3)title('SSB信号波形')xlabel('t')ylabel('s(t)')mtlb_axis([0,6,-3,3])实验二://m(t)=sin(2000*pi*t)+2cos(1000*pi*t)+4sin(500*pi*t+pi/3),fc=40KHz,Kf=5kHz/V,仿真产生FM,观察频谱和波形//初始化参数设置clear all;exec t2f.sci;exec f2t.sci;xdel(winsid()); //关闭所有图形窗口fs=4000; //采样速率T=16; //截短时间N=T*fs; //采样点数dt=1/fs; //时域采样间隔t=[-T/2:dt:T/2-dt]; //时域采样点df=1/T; //频域采样间隔f=[-fs/2:df:fs/2-df]; //频域采样点数fm1=1;fm2=0.5;fm3=0.25;fc=40;Kf=5; //频偏常数//仿真计算m1=sin((2*%pi)*fm1*t);phi1=(2*%pi)*Kf*cumsum(m1)*dt; //cumsum函数为求累积和,相当于积分m2=2*cos((2*%pi)*fm2*t);phi2=(2*%pi)*Kf*cumsum(m2)*dt;m3=4*sin((2*%pi)*fm3*t+%pi/3);phi3=(2*%pi)*Kf*cumsum(m3)*dt;s=cos((2*%pi)*fc*t+phi1+phi2+phi3); //FM信号时域表达式S=t2f(s,fs); //FM信号频域表达式m=sin(2*%pi*fm1*t)+2*cos(2*%pi*fm2*t)+4*sin(2*%pi*fm3*t+%pi/3); //调制信号表达式//绘图//FM已调信号xset('window',1)plot(f,abs(S))title('FM信号频谱')xlabel('f')ylabel('S(f)')mtlb_axis([-80,80,0,max(abs(S))]);xset('window',2)plot(t,s)title('FM信号波形')xlabel('t')ylabel('s(t)')mtlb_axis([0,3,-2,2]);//调制信号xset('window',3)plot(f,abs(M))title('m(t)信号频谱')xlabel('f')ylabel('S(f)')mtlb_axis([-5,5,0,max(abs(M))]);xset('window',4)plot(t,m)title('m(t)信号波形')xlabel('t')ylabel('m(t)')mtlb_axis([-8,8,-6,8]);实验三://通过仿真测量占空比为50%、75%以及100%的单双极性归零码波形及其功率//谱,分析不同占空比对仿真结果的影响clear all;xdel(winsid()); //关闭所有图形窗口exec t2f.sci;exec f2t.sci;L=32; //每个码元间隔内的采样点数N=2^13; //总采样点数M=N/L; //总码元数Rb=2; //码元速率Ts=1/Rb; //比特间隔fs=L/Ts; //采样速率T=N/fs; //截短时间Bs=fs/2; //系统带宽t=-T/2+[0:N-1]/fs; //时域采样点f=-Bs+[0:N-1]/T; //频域采样点L0=input('请输入占空比(0~1):')EP=zeros(1,N);ch=input('请选择要观察的码型:1-单极性;2-双极性')for loop=1:1000 //1000次样本函数取平均if ch==1 //单极性条件a=(rand(1,M)>0.5)+0; //生成单极性序列else //双极性条件a=sign((rand(1,M)>0.5)-0.5); //生成双极性序列endtmp=zeros(L,M); //一个码元的归零部分取零L1=L*L0; //占空比,求出一个码元不归零部分的取样点数tmp([1:L1],:)=ones(L1,1)*a; //将一个码元不归零部分的取样点值置为1s=tmp(:)';S=t2f(s,fs); //傅里叶变化P=abs(S).^2/T; //样本的功率谱密度EP=EP*(1-1/loop)+P/loop; //随机过程的功率谱是各个样本的功率谱的数学期望endxset("window",1)plot(t,s)set(gca(),"grid",[1,1])title('时域图')xlabel('t')ylabel('S(t)')mtlb_axis([-3,3,-1.5,1.5]);xset("window",2)plot(f,abs(EP+%eps))set(gca(),"grid",[1,1])title('功率谱图形')xlabel('f')ylabel('功率')mtlb_axis([-35,35,-5,max(EP+%eps)]);xset("window",3)plot(f,10*log10(EP+%eps))set(gca(),"grid",[1,1])title('功率谱图形(dB)')xlabel('f')ylabel('功率')实验四:clear allexec t2f.sci ;exec f2t.sci ;//exec eyes.sci;function eyes(result,L,Na)N=length(result);tt=0:1:Na*L;set(gca(),"auto_clear","off")for jj=1:Na*L:N-Na*Lplot(tt,result(jj:jj+Na*L));endset(gca(),"auto_clear","on")endfunctionk=input('请输入采样点数2^k:(输入k值)');aa=0.5;N=2^k;L=8;M=N/L;Rs=2; //码率2MbpsTs=1/Rs; //码元间隔dt=Ts/L; //时域采样间隔fs=1/dt;df=1/(N*dt); //频域采样间隔T=N*dt; //截断时间Bs=N*df/2; //系统带宽t=[-T/2+dt/2:dt:T/2]; //时域横坐标f=[-Bs+df/2:df:Bs]; //频域横坐标alpha=input('所需要的滚降系数是(0~1范围):'); // Hcos=zeros(1,N);i1=find(abs(f)>(1-alpha)/(2*Ts)&abs(f)<=(1+alpha)/(2*Ts));Hcos(i1)=Ts/2*(1+cos(%pi*Ts/alpha*(abs(f(i1))-(1-alpha)/(2*Ts)))); i2=find(abs(f)<=(1-alpha)/(2*Ts));Hcos(i2)=Ts;//GT=sqrt(Hcos);GR=GT; //for loop1=1:20;Eb_N0(loop1)=(loop1-1); //eb_n0(loop1)=10^(Eb_N0(loop1)/10); EP=1;n0=EP/eb_n0(loop1); //sita=n0*Bs; //n_err=0; //EP1=1;//zeros(1,N);EP2=1;//zeros(1,N);EP3=1;//zeros(1,N);for loop2=1:20;b=sign(rand(1,M,"normal"));s=zeros(1,N); //s(L/2:L:N)=b/dt;SS=t2f(s,fs);P=abs(SS).^2/T; //序列功率谱密度EP1=EP1*(1-1/loop2)+P/loop2; //S2=SS.*GT; //s2=real(f2t(S2,fs)); //PAMP2=abs(S2).^2/T;EP=EP*(1-1/loop2)+P2/loop2; //nr=sqrt(sita)*rand(1,N,"normal"); //sr=s2+nr; //SR=t2f(sr,fs);S=SR.*GR;PS=abs(S).^2/T; //EP3=EP3*(1-1/loop2)+PS/loop2; ////a=real(f2t(S,fs)); //sout=real(f2t(S,fs));y=sout(L/2:L:N); //bb=sign(y); //s3=zeros(1,N); //s3(L/2:L:N)=bb/dt;BB=t2f(s3,fs);PB=abs(BB).^2/T;EP2=EP2*(1-1/loop2)+PB/loop2; //n_err=n_err+length(find(bb~=b));//endPe(loop1)=n_err/(M*loop2);xset("window",10)plot(Eb_N0,log10(Pe+%eps),'g'); //Pe~Eb/N0 xlabel('Eb/N0');ylabel('Pe');title("Pe~Eb/N0曲线"); eb_n0=10.^(Eb_N0/10);set(gca(),"auto_clear","off")plot(Eb_N0,log10(0.5*erfc(sqrt(eb_n0))));mtlb_axis([0,15,-3.5,0]);xlabel('Eb/N0')ylabel('Pe')legend('实际的','理论的');set(gca(),"auto_clear","on")endxset("window",1)plot(f,EP1)title("序列功率谱")xlabel("f(kHz)")ylabel("功率谱(W/kHz)")mtlb_axis([-2,2,0,max(EP1)])xgridxset("window",2)plot(t,s)title("发送序列")xlabel("t(ms)")ylabel("s(t)(V)")mtlb_axis([0,5,-2,2])xgridxset("window",3)plot(f,EP)title("发送PAM信号功率谱")xlabel("f(kHz)")ylabel("功率谱(W/kHz)")mtlb_axis([-2,2,0,max(EP)])xgridxset("window",4)plot(t,s2)title("发送的PAM信号波形")xlabel("t(ms)")ylabel("s2(t)(V)")mtlb_axis([0,5,-2.5,2.5])xgridxset("window",5)plot(t,s3)title("采样后的信号波形")xlabel("t(ms)")ylabel("y(t)(V)")mtlb_axis([0,5,-2,2])xgridxset("window",6)plot(f,EP2)title("采样后的信号功率谱")xlabel("f(kHz)")ylabel("功率谱(W/kHz)")mtlb_axis([-2,2,0,max(EP2)])xgridxset("window",7)plot(t,sout)title("接收滤波器输出波形")xlabel("t(ms)")ylabel("y(t)(V)")mtlb_axis([0,5,-2,2])xgridxset("window",8)plot(f,EP3)title("通过接收滤波器后信号的功率谱") xlabel("f(kHz)")ylabel("功率谱(W/kHz)")mtlb_axis([-2,2,0,max(EP3)])xgridxset("window",9)title("接收眼图")eyes(sout,L,3) xgrid。

合集下载

北邮通信原理实验报告完整

北邮通信原理实验报告完整

北京邮电大学通信原理课程实验实验报告学院:电子工程学院专业:电子信息科学与技术班级:2010211203班学号:姓名:2013年6月3日实验二抑制载波双边带的产生一、实验目的1.了解抑制载波双边带(SC-DSB)调制器的基本原理。

2.测试SC-DSB 调制器的特性。

二、实验步骤1.将TIMS 系统中的音频振荡器(Audio Oscillator)、主振荡器(Master Signals)、缓冲放大器(Buffer Amplifiers)和乘法器(Multiplier)按下图连接。

图1 实验连接图方式一2.用频率计来调整音频振荡器,使其输出为1kHz 作为调制信号,并调整冲放大器的K1,使其输出到乘法器的电压振幅为1V。

3.调整缓冲放大器的K2,使主振荡器输至乘法器的电压为1V 作为载波号。

4.测量乘法器的输出电压,并绘制其波形。

如下图2所示。

图2 乘法器输出电压波形5.调整音频振荡器的输出,重复步骤4。

如下图3所示。

图3 调整后输出波形6.将电压控制振荡器(VCO)模快和可调低通滤波器(Tuneable LPF)模块按下图4连接。

图4 实验连接图方式二7.VCO 得频率选择开关器至于“LO”状态下,调整VCO 的Vin(控制电压DC -3V~3V )使VCO 的输出频率为10kHZ。

8.将可调低通滤波器的频率范围选择范围至“wide”状态,并将频率调整至最大,此时截至频率大约在12kHz 左右。

LPF 截止频率最大的时候输出如图5所示。

图5 截止频率最大时输出9.将可调低通滤波器的输出端连接至频率计,其读数除360 就为LPF 的3dB 截止频率。

10.降低可调LPF 的截止频率,使SC-DSB 信号刚好完全通过低通滤波器,记录此频率(fh=fc+F)。

11.再降低3dB 截止频率,至刚好只有单一频率的正弦波通过低通滤波器,记录频率(fl=fc-F)只通过单一频率的LPF 输出如图6所示。

图6 单一低通滤波器输出12.变化音频振荡器输出为频率为800Hz、500Hz,重复步骤10、11,得到的波形如图7和8所示。

北邮通信原理软件实验报告

北邮通信原理软件实验报告

北邮通信原理软件实验报告北邮通信原理软件实验报告通信原理软实验实验报告学院:信息与通信工程学院班级:@@@@@@@@@@姓名:execf2t.sci;fs=800;//采样速率T=200;//截短时间N=T*fs;//采样点数dt=1/fs;//时域采样间隔t=[-T/2:dt:T/2-dt];//时域采样点df=1/T;//频域采样间隔f=[-fs/2:df:fs/2-df];//频域采样点数fm1=1;//待观测正弦波频率,单位KHz,下同fm2=0.5; //待观测余弦波频率fc=20;//载波频率//以上为初始化参数设置m1=sin((2*%pi)*fm1*t);//待观测正弦波部分M1=t2f(m1,fs);//傅里叶变换MH1=-%i*sign(f).*M1;//希尔伯特变换mh1=real(f2t(MH1,fs));//希尔伯特反变换m2=2*cos((2*%pi)*fm2*t);//待观测余弦波部分M2=t2f(m2,fs);//傅里叶变换MH2=-%i*sign(f).*M2;//希尔伯特变换mh2=real(f2t(MH2,fs));//希尔伯特反变换s1=(1+(m1+m2)/abs(max(m1+m2))).*cos((2*%pi)*fc*t); //AM信号时域表达式S1=t2f(s1,fs);//AM信号频域表达式s2=(m1+m2).*cos((2*%pi)*fc*t);//DSB-SC信号时域表达式S2=t2f(s2,fs);//DSB-SC信号频域表达式s3=(m1+m2).*cos((2*%pi)*fc*t)-(mh1+mh2).*sin((2*%pi)*fc*t);//SSB信号时域表达式,以上边带为例S3=t2f(s3,fs);//SSB信号上边带频域表达式//以上是仿真计算部分//以下为绘图部分//AM信号xset(window,1)plot(f,abs(S1))title(AM信号频谱)xlabel(f)ylabel(S(f))mtlb_axis([-25,25,0,max(abs(S1))]); xset( window,2)plot(t,s1)title(AM信号波形)xlabel(t)ylabel(s(t))mtlb_axis([-3,3,-3,3]);//DSB-SC信号window,3)plot(f,abs(S2))title(DSB-SC信号频谱)xlabel(f)ylabel(S(f))mtlb_axis([-25,25,0,max(abs(S2))]); xset( window,4)plot(t,s2)title(DSB-SC信号波形)xlabel(t)s(t))mtlb_axis([-1,4,-3,3]);//SSB信号(以上边带为例)xset(window,5)plot(f,abs(S3))title(SSB信号频谱)xlabel(f)ylabel(S(f))mtlb_axis([-25,25,0,max(abs(S3))]) xset(window,6)plot(t,s3)title(SSB信号波形)xlabel(t)ylabel(s(t))mtlb_axis([0,6,-3,3]) 2、产生的波形图:1)AM信号:2)AM信号频谱:3)DSB-SC信号:4)DSB-SC信号的频谱:5)SSB信号波形:6)SSB信号频谱:3、实验心得:做这个实验时的我的理论知识已经准备得比较充分了,所以难点主要在编程方面。

北京邮电大学计算机学院 - 操作系统实验报告(含源代码)

北京邮电大学计算机学院 - 操作系统实验报告(含源代码)
小组成员:许伟林 08211306 (6 班) 刘惠庭 08211338 (7 班)
1/58
10 年 12 月 19 日
内容目录
实验 1.3 Shell 编程...........................................................4 1、实验目的...............................................................4 2、实验内容...............................................................4 3、实验原理...............................................................4 4、实验步骤...............................................................4 5、实验结果:.............................................................4 6、人员任务分配...........................................................5
实验项目:
1. 实验 1.3 Shell 编程 2. 实验 2.3 内核模块 3. 实验 2.4 系统调用 4. 实验 3.3 Shell 编程实验(进程管理实验) 5. 实验 4.1 观察实验(存储管理实验) 6. 实验 5.1 观察实验(进程通信) 7. 实验 6.3 Io 系统编程实验 8. 实验 6.4 设备驱动程序 9. 实验 7.1 代码分析(文件系统管理实验)
实验 3.3 Shell 编程实验(进程管理实验)......................................18 1、实验目的..............................................................18 2、实验内容..............................................................18 3、实验原理..............................................................18 4、实验步骤..............................................................18 5、实验结果及分析........................................................19 6、人员任务分配..........................................................19 2、实验内容 2............................................................20 3、实验原理..............................................................20 4、实验步骤..............................................................20 5、实验结果及分析........................................................23 6、人员分配..............................................................24

北邮通信原理软软件实验报告

北邮通信原理软软件实验报告

实验八:一、实验目的假设基带信号为m(t)=sin(2000*pi*t)+2cos(1000*pi*t),载波频率为20kHz,请仿真出AM,DSB-SC、SSB信号,观察已调信号的波形和频谱。

二、实验模型基带信号m(t)可以分成两个信号的叠加,分别记为m1(t),m2(t)。

借助公式s DSB-SC=m(t)cos(2*pi*fc*t),S AM=(1+m(t))cos(2*pi*fc*t),s SSB=m(t)cos(2*pi*fc*t)+H[m(t)]sin(2*pi*fc*t)分别仿真出m1(t)和m2(t)的信号波形,然后叠加便可以得到m(t)的波形和频谱三、仿真设计设计程序时先确定采样点、采样频率,然后分别表示出m1(t)和m2(t)的表达式,然后表示出后面仿真SSB信号所需要的两个信号的希尔伯特变换表达式。

其中表示希尔伯特变换时,采用的方法是先表示出频域的形式MH1和MH2,然后再傅里叶反变换得出对应的mh1和mh2。

对应代码如下:m1=sin(2*pi*fm1*t);M1=t2f(m1,fs);MH1=-j*sign(f).*M1;mh1=real(f2t(MH1,fs));m2(t)信号做相同的处理。

处理完信号后,就利用上述的三个公式,表示出AM、DSB-SC和SSB信号s1、s2和s3和其对应傅里叶变换得到其频谱S1 、S2、S3。

为了方便实验结果的观察与对比,将这三组图处理在一张图内,利用的函数是subplot。

四、实验结果五、分析讨论由实验结果可见,AM与DSB-SC相比,频谱多了一个离散的大载波直流分量,而且DSB-SC信号波形会有相位翻转的现象出现;而DSB-SC和SSB相比,SSB信号的频谱是DSB-SC的一个边带,本实验中采用的上边带滤波。

可见实验结果与理论结果是相一致的。

六、思考题1.如何仿真VSB系统?答:将残留边带滤波器用M文件实现,然后当做函数使用,在程序中调用。

北邮通信原理软件实验报告

北邮通信原理软件实验报告

通信原理软件实验报告学院:信息与通信工程学院班级:一、通信原理Matlab仿真实验实验八一、实验内容假设基带信号为m(t)=sin(2000*pi*t)+2cos(1000*pi*t),载波频率为20kHz,请仿真出AM、DSB-SC、SSB信号,观察已调信号的波形和频谱。

二、实验原理1、具有离散大载波的双边带幅度调制信号AM该幅度调制是由DSB-SC AM信号加上离散的大载波分量得到,其表达式及时间波形图为:应当注意的是,m(t)的绝对值必须小于等于1,否则会出现下图的过调制:AM信号的频谱特性如下图所示:由图可以发现,AM信号的频谱是双边带抑制载波调幅信号的频谱加上离散的大载波分量。

2、双边带抑制载波调幅(DSB—SC AM)信号的产生双边带抑制载波调幅信号s(t)是利用均值为0的模拟基带信号m(t)和正弦载波c(t)相乘得到,如图所示:m(t)和正弦载波s(t)的信号波形如图所示:若调制信号m(t)是确定的,其相应的傅立叶频谱为M(f),载波信号c(t)的傅立叶频谱是C(f),调制信号s(t)的傅立叶频谱S(f)由M(f)和C(f)相卷积得到,因此经过调制之后,基带信号的频谱被搬移到了载频fc处,若模拟基带信号带宽为W,则调制信号带宽为2W,并且频谱中不含有离散的载频分量,只是由于模拟基带信号的频谱成分中不含离散的直流分量。

3、单边带条幅SSB信号双边带抑制载波调幅信号要求信道带宽B=2W, 其中W是模拟基带信号带宽。

从信息论关点开看,此双边带是有剩余度的,因而只要利用双边带中的任一边带来传输,仍能在接收机解调出原基带信号,这样可减少传送已调信号的信道带宽。

单边带条幅SSB AM信号的其表达式:或其频谱图为:三、仿真设计1、流程图:Array2、实验结果&分析讨论实验仿真结果从上至下依次是AM信号、DSB信号、SSB信号。

从仿真结果看,AM调制信号包络清晰,可利用包络检波恢复原信号,接收设备较为简单。

北邮信通C++上机实验 第七章

北邮信通C++上机实验 第七章

第七章实验题一.基础题1.#include <iostream>using namespace std;class CSample {double a;CSample(){a=2.5;};public:CSample(int val);~CSample(); };2.#include <iostream>using namespace std;class cube{public:cube();//构造函数~cube();//析构函数int volume(); //定义整形函数private:int height, width, depth;//定义私有数据成员};cube::cube(){height = 100;depth = 4;width = 2;cout<<"Constructor called."<<endl;}cube::~cube(){cout << "Destructor called." << endl;system("pause");}int cube::volume(){return height*width*depth;}void main(){cube cubeone; //定义对象cout<<"立方体的体积为:"<<cubeone.volume()<<endl;system("pause");}3.#include <iostream>using namespace std;class CCounter{int value;public:CCounter(){cout << "CCounter Constructor1" << endl;value = 0;}CCounter(int val){cout << "CCounter Constructor2" << endl;value = val;}~CCounter(){cout << "CCounter Destructor" << endl;system("pause");}};class CExample{int value;public:CCounter car;CExample(){cout << "CExample Constructor1" << endl;value = 0;}CExample(int val){cout << "CExample Constructor2" << endl;value = val;}~CExample(){cout << "CExample Destructor" << endl;system("pause");}void Display() { cout << "value=" << value << endl; } };void main(){CExample obj(350);obj.Display();system("pause");}//调用顺序:CCounter()-CExample(int val)-~CExample()-~CCounter()4.#include <iostream>using namespace std;class Point{protected:int x;public:int Getx(){ return x; }int Y;void init(int a, int b){ x = a; Y = b; } int Gety(){ return Y; }void Setx(int a){ x = a; }void Sety(int b){ Y = b; }};void main(){Point A, B;A.init(25, 27);B.init(29, 31);cout << "A.x=" << A.Getx() << endl;cout << "B.x=" << B.Getx() << endl;cout << "A.Y=" << A.Y << endl;cout << "A.y=" << A.Gety() << endl;cout << "B.y=" << B.Y << endl;cout << "B.y=" << B.Gety() << endl;system("pause");}5.#include <iostream>using namespace std;class base{private:int i;static int k; //定义静态变量k public:base() { i = 0; k++; } //定义构造函数void Display();};void base::Display(){k = k + 10;i++;cout << "i=" << i << ",k=" << k << endl; }int base::k = 0; //初始化k的值void main(){base a, b;a.Display();b.Display();system("pause");}运行结果为:i=1;k=12i=1;k=22二.编程题1.{if (x > 0){cout << "It's a positive number" << endl;positive++;}else if (x == 0){zero++;cout << "It's zero" << endl;}else{negative++;cout << "It's a negative number" << endl;}}int num::positive = 0; int num::negative = 0; int num::zero = 0; void main(){int n;while (cin >> n){num test(n);test.decision();test.print();}system("pause"); }2.#include <iostream>using namespace std;class dianqi{public:void getprice(int x , int y, int z ) {colorcast = x;ridge = y;washer = z;};void total(int a , int b , int c ){int t = a*colorcast + b*ridge + c*washer;cout << t << endl;};private:int colorcast;int ridge;int washer;};void main(){dianqi dian;dian.getprice(4200, 2800, 1500);cout << "请分别输入彩电,冰箱,洗衣机的销售数量:";int a = 0, b = 0, c = 0;cin >> a;cout << " ";cin >> b;cout << " ";cin >> c;cout << endl;cout << "总营业额为:";dian.total(a, b, c);system("pause");}3.#include<iostream>#include<string>using namespace std; class car{public:void disp_parameters(){cout << "型号:" << type<< endl;cout << "颜色:" << colour << endl;cout << "车门数:" << door << endl;cout << "座位数:" << seat << endl;cout << "轴距:" <<distance << endl;}void change(string a, char b, int c, int d, int e) {type = a;colour = b;door = c;seat = d;distance = e;}private:string type;char colour;int door;int seat;int distance;};void main(){car gundam;gundam.change("Double O GUNDAM", 'b', 1, 5, 6);gundam.disp_parameters();system("pause");}4.#include <iostream>using namespace std;class student{public:int num;char name[20];char sex;int age;};void main(){student stu[5];student temp;for (int i = 0; i<5; i++){cout << "输入第" << i + 1 << "位学生的学号:";cin >> stu[i].num;cout << "输入第" << i + 1 << "位学生的姓名:";cin >> stu[i].name;cout << "输入第" << i + 1 << "位学生的性别:";cin >> stu[i].sex;cout << "输入第" << i + 1 << "位学生的年龄:";cin >> stu[i].age;}for (int a = 1; a < 5; a++){for (int b =0 ; b < 5-a; b++){if (stu[b].age<stu[b + 1].age){temp.age = stu[b + 1].age;stu[b + 1].age = stu[b].age;stu[b].age = temp.age;}}}for (int i = 0; i<5; i++)cout << "num:" << stu[i].num << " name:" << stu[i].name << " sex:" << stu[i].sex << " age:" << stu[i].age << endl;system("pause");}5.#include <iostream>using namespace std;class ATM{public:void s_balance(void){cout << "The balance is " << balance << endl;}void deposit(float a){balance += a;}void withdraw(float a){balance -= a;}int checking(int a){if (key == a)return 1;elsereturn 0;}private:int key = 328;static float balance; };float ATM::balance = 0.0f; void main(){ATM sys1;int k,m;float num;cout << "Please input the key: ";cin >> k;if (sys1.checking(k) != 1)cout << "Error" << endl;else{cout << "Please choose the function:" << endl << "(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl <<"(4) Return to the main interface"<<endl;while (cin >> m){switch (m){case 1:cout << "Please input how much you want to deposit: ";cin >> num;sys1.deposit(num);cout << "You have deposited " << num << endl;sys1.s_balance();cout << "Please choose the function:" << endl <<"(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl << "(4) Return to the main interface" << endl;break;case 2:cout << "Please input how much you want to withdraw: ";cin >> num;sys1.withdraw(num);cout << "You have withdrawed " << num << endl;sys1.s_balance();cout << "Please choose the function:" << endl <<"(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl << "(4) Returnto the main interface" << endl;break;case 3:sys1.s_balance();cout << "Please choose the function:" << endl <<"(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl << "(4) Return to the main interface" << endl;break;case 4:cout << "Please choose the function:" << endl <<"(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl;break;default:cout << "Error1" << endl;break;}}}system("pause"); }6.#include <iostream>#include<string>using namespace std;class student{public:friend void sort(student &a, student &b, student &temp);void change(string a, int b, float c){name=a;num = b;score = c;}float show(){return score;}private:int num;string name;float score;};void sort(student &a, student &b,student &temp){if (a.score < b.score){temp = a;a= b;b = temp;}}void main(){student stu[5];student temp;string q=" ";int w = 0;float e=0.0f;for (int i = 0; i<5; i++){cout << "输入第" << i + 1 << "位学生的姓名,学号,成绩:"<<endl;cout << " 姓名:";cin >> q;cout << " 学号:";cin >> w;cout << " 成绩:";cin >> e;stu[i].change(q, w, e);cout << endl;}for (int i = 1; i<5; i++){for (int j = 0; j<(5 - i); j++){sort(stu[j], stu[j + 1], temp);}}cout << "最高分" << stu[0].show() << endl;cout << "最低分" << stu[4].show() << endl;system("pause");}。

北邮ASIC实验报告 3

北京邮电大学ASIC原理课程实验实验报告设计要求:(3,1,8)卷积码编码器学院:电子工程学院专业:电子信息科学与技术班级:学号:姓名:2013年6月20日一、设计要求)卷积码编码器,并对其进行仿真。

3,1,8verilog语言编写一个(运用二、卷积码编码器原理卷积码拥有良好的纠错性能,是一种被广泛应用于移动通信的信道编码系统。

一个(n,k,m)卷积码编码器由k个输入,具有m阶存储的n个输出的线形时序电路实现。

通常,n和k是较小的整数,且k<n,但m比较大。

当k=1时,信息序列不再分成小块,以便可以连续处理。

卷积码(n,k,m)表示码率R=k/n,编码器级数m=s-1,其中s是码约束长度。

反向CDMA信道使用(3,1,8)卷积码,码率R=1/3,约束长度为9,由于k =1,n=3,m=8,则该卷积编码器包含单个输入端,一个8级移位寄存器,三个模2加法器和一个3向编码器输出的连续转向器。

编码器每输入一位信息比特将产生三位编码输出。

这些编码符号中,第一个输出符号G0是生成序列g1⑴编码产生的符号,第二个输出符号G1是由生成序列g1⑵编码产生的符号,最⑶编码产生的符号,如下图所示。

是由生成序列g1后一个输出符号G2该电路由一个八位寄存器、三个码生成逻辑、一个时隙发生器和一个四选一由时隙发clk1C[1:0]和G1G0、和G2,码选择信号mux复用器构成。

的输入为Yout。

生器产生,输出信号即为整个电路的输出时,电路清零。

,异步清零信号置为0rst=0卷积编码器的初始状态用rst,初始状态之后输出的第一个编码符号由生成0卷积编码器的初始状态全为⑵,)g1101101111=g1g1序列⑴编码产生。

这里,三个生成序列分别为⑴(。

=(111001001)⑶=(110110011), g1.即三个生成多项式分别为:C0=1+X+X2+X3+X5+X6+X8 (557)C1=1+X+X4+X5+X7+X8 (663)C2=1+X3+X6+X7+X8 (711)三、实验设计与实现根据以上实验要求,我们首先设想了分为几个模块,然后将各个模块进行整合实现编码器的功能,根据我们的设想编写相应的verilog程序,进行调试、实现。

北京邮电大学 通信原理实验报告 硬件部分

北京邮电大学实验报告题目:基于TIMS通信原理实验报告班级:2009211126班专业:信息工程姓名:成绩:实验1振幅调制(AM)与解调一、实验目的(1)掌握具有离散大载波(AM)调制的基本原理;(2)掌握包络检波器的基本构成和原理;(3)掌握调幅波调制系数的意义和求法。

二、实验原理幅度调制是由DSB-SC AM信号加上一离散的大载波分量(设载波的初始相位φc=0),其表示式为s t=A c1+m t cos2πf c t式中要求基带信号波形m t≤1,使AM信号的包络A c1+m t总是正的,式中的A c cos2πf c t是载波分量A c m t cos2πf c t是DSB-SC AM信号。

定义m n t=m(t)max⁡|m(t)|,|m(t)|≤1a=max m t,|m(t)|≤1称标量因子a为调制系数或调幅系数。

有两种调制方式,调制框图如下AM 信号调制原理框图1AM 信号调制原理框图2 解调原理框图如下AM 信号解调原理框图三、实验步骤1、按如下所示的连接图连接好AM信号调制连接图AM信号解调连接图2、调节加法器上两路输入信号的放大倍数,同时用示波器监测,在保证加法器输出波形不削顶的情况下,调节至交流信号峰值与直流成分之比(即调制系数)为小于1、等于1、大于1,观察调制信号和解调信号波形图;3、观察滤波器输入输出波形的变化,分析原因。

四、实验结果音频振荡器的输出频率调整为1kHZ,直流电压幅度调整为1V。

a<1时,基带与调制信号波形如下调制与解调输出调制与解调信号调制与解调信号五、实验讨论可以看出,AM信号在调制系数a<1,a=1,a>1的情况下,分别有不同的包络形状。

当a<1或a<1时可以恢复成原信号,而在a>1的情况下产生幅度翻转的现象,无法恢复成原信号。

若用同步检波的方法,则需在接收端先进行载波提取操作,然后经过乘法器和低通滤波器,最后通过隔直流电路即可。

北邮信通C++实验二

1.1#include <iostream>using namespace std;void main() //主函数,不返回任何信息{ //函数体开始int x,y; //定义整型变量x,ycin>>x>>y; //输入x,ycout<<!(y==x/2)<<endl; //判断y是否等于x/2,然后进行非运算cout<<(y!=x%3)<<endl;cout<<(x>0&&y<0)<<endl;cout<<(x!=y||x>=y)<<endl;y=x--+1; //令y=x+1,后x=x-1cout<<(x<y?x++:y++)<<endl;cout<<endl; //换行}1.2#include<iostream>using namespace std;int main(){int x,y,s; //定义三个整型变量cout<<"请输入三个数x,y,s:"; //提示语cin>>x>>y>>s; //在键盘上输入变量的值x=(x+--y)*s++;cout<<"x="<<x<<endl<<"y="<<y<<endl<<"s="<<s<<endl; //输出结果cout<<endl;return 0;}1.3#include<iostream>using namespace std;void main(){int x,y,z;float ans;cout<<"请输入三个数x,y,z:";cin>>x>>y>>z;ans=(x*x+y*y+z*z)/(3.0*x*y*z);cout<<'\n'<<"计算结果="<<ans<<endl;cout<<endl;}1.4#include<iostream>using namespace std;void main(){int num;cout << "Please enter a decimal number:";cin >> num;cout << "Dec " << num << endl;cout << "Oct " << oct << num << endl;cout << "Hex " << hex << num << endl; }1.5#include<iostream>using namespace std;void main(){int n, m;cout << "请输入一个正整数n:" << endl;cout << "n=";cin >> n;m = n | 15;cout<< "结果为" << m<<endl;}2.1#include<iostream>using namespace std;void main(){char ch;cout << "请输入一个小写字母:";cin >> ch;cout << endl;ch -= 32;cout <<"其对应大写字母为:"<< ch << endl;}2.2#include<iostream>using namespace std;void main(){int a,b,c;cout << " 请输入一个整数:";cin >> a;cout << endl;b = a*a;c=a*a*a;cout <<" 此数的平方是="<<b<< endl;cout << " 此数的立方是=" << c << endl; }2.3#include<iostream>using namespace std;void main(){int a;cout << "请输入一个三位以上的整数:";cin >> a;cout << endl;a %= 100;a =( a - a % 10)/10;cout << "十位数数字为:" << a << endl; }2.4#include<iostream>using namespace std;void main(){int a,b,c,n;cout << "请输入一个三位正整数:";cin >> n;cout << endl;a = n / 100;b =( n % 100)/10;c = n % 10;cout << "逆转数为:" << c<<b<<a << endl; }2.5#include<iostream>#include<cmath>using namespace std;void main(){const double PI = 3.1415926;double a,sina, cosa,tana;cout << "请输入一个锐角:";cin >> a;cout << endl;a = a / 180 * PI;sina = sin (a); cosa = cos(a); tana = tan(a);cout << "sina=" << sina << endl;cout << "cosa=" << cosa << endl;cout << "tana=" << tana << endl;}2.6#include<iostream>#include<string>using namespace std;void main(){cout << "char:" << sizeof(char) << "字节\n";cout << "int:" << sizeof(int) << "字节\n";cout << "float:" << sizeof(float) << "字节\n";cout << "double:" << sizeof(double) << "字节\n";cout << "bool:" << sizeof(bool) << "字节\n";cout << "请输入一种数据类型:";string s1;cin>> s1;cout << endl;cout << s1<<":" << sizeof(s1) << endl;}。

北邮 通信网实验报告

北京邮电大学实验报告通信网理论基础实验报告学院:信息与通信工程学院班级:2013211124学号:姓名:实验一 ErlangB公式计算器一实验内容编写Erlang B公式的图形界面计算器,实现给定任意两个变量求解第三个变量的功能:1)给定到达的呼叫量a和中继线的数目s,求解系统的时间阻塞率B;2)给定系统的时间阻塞率的要求B和到达的呼叫量a,求解中继线的数目s,以实现网络规划;3)给定系统的时间阻塞率要求B以及中继线的数目s,判断该系统能支持的最大的呼叫量a。

二实验描述1 实验思路使用MATLAB GUITOOL设计图形界面,通过单选按钮确定计算的变量,同时通过可编辑文本框输入其他两个已知变量的值,对于不同的变量,通过调用相应的函数进行求解并显示最终的结果。

2 程序界面3 流程图4 主要的函数符号规定如下:b(Blocking):阻塞率;a(BHT):到达呼叫量;s(Lines):中继线数量。

1)已知到达呼叫量a及中继线数量s求阻塞率b 使用迭代算法提高程序效率B(s,a)=a∙B(s−1,a) s+a∙B(s−1,a)代码如下:function b = ErlangB_b(a,s)b =1;for i =1:sb = a * b /(i + a * b);endend2)已知到达呼叫量a及阻塞率b求中继线数量s考虑到s为正整数,因此采用数值逼近的方法。

采用循环的方式,在每次循环中增加s的值,同时调用 B(s,a)函数计算阻塞率并与已知阻塞率比较,当本次误差小于上次误差时,结束循环,得到s值。

代码如下:function s = ErlangB_s(a,b)s =1;Bs = ErlangB_b(a,s);err = abs(b-Bs);err_s = err;while(err_s <= err)err = err_s;s = s +1;Bs = ErlangB_b(a,s);err_s = abs(b - Bs);ends = s -1;end3)已知阻塞率b及中继线数量s求到达呼叫量a考虑到a为有理数,因此采用变步长逼近的方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档