北邮通信原理编程实验完整代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北邮通信原理编程实验完整代码
告各位学弟学妹书:
此实验对于大多数人来说甚是烦人,但是我还是要劝你:尽力去学吧,学的时候觉得没什么用,那是因为不了解其博大精深,如果你一不小心顶住压力认真学了(譬如me),日后涉及相关领域时,你就能够触类旁通,瞬间迸发出灵感,撞击出智慧的火花,这种感觉就好像搂着一群漂亮的姑娘行走在春风中一样,原来那些朦胧的理论都变成了清晰的线条,串在一起:你会有一种类似于愚公般的给子子孙孙签订卖身契投身于学术的激进想法,不过这种极左的思想毕竟要不得——除非你想女朋友和你分手,于激励学习便是极好的。
实验一:
//基带信号m(t)=sin(2000*pi*t)+2cos(1000*pi*t),fc=20khz,求AM,DSB-SC,SSB
clear all
exec 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); //调制信号表达式