实验(1)Matlab典型随机信号模拟
第1关:典型随机信号
任务描述
本关任务:编写一个能显示典型随机信号时域波形的程序。
相关知识
为了完成本关任务,你需要掌握:1.如何读取或生成随机信号,2.如何显示随机信号波形。
输出:
-
你可以听到一段鸟鸣音频
-
显示波形图
答案
%%%%%%%%%%%%%%%%%%
%请不要修改
%%%%%%%%%%%%%%%%%
warning('off','all');
graphics_toolkit('gnuplot')
myFile = './task1/huochemingdi.wav';
% 1.读取 'myFile',请将数据命名为data
%%%%%%%%% Begin %%%%%%%%%
data=wavread(myFile);
%%%%%%%%% End %%%%%%%%%
%用于生成txt文件,请不要修改
save('./picans/data.txt','data');
% 2.显示波形
%%%%%%%%% Begin %%%%%%%%%
plot(data);
%%%%%%%%%%End %%%%%%%%%%%%
%用于生成图像,请不要修改
sa=pwd;
print(1,'-djpeg','./picture/step1/picture1.jpg');
第2关:典型随机信号
任务描述
本关任务:使用 Matlab 生成几种典型的随机信号。
相关知识
为了完成本关任务,你需要掌握:1.几种随机信号生成函数,2.函数参数定义以及如何设置。这里的典型随机信号以三角波,脉冲,正弦,方波这四种为例。
答案
%%%%%%%%%%%%%%%%%%
pkg load signal
warning('off','all');
graphics_toolkit('gnuplot')
%请不要修改上述代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t1 = -3*pi:0.0001:7*pi;
sp = sprintf('t1 is %d:',t1);
% 1.生成长度为t1的三角波
% 三角波命名为y1
%%%%%%%%% Begin %%%%%%%%%
y1=sawtooth(t1);
%%%%%%%%% End %%%%%%%%%
plot(t1,y1);
%用于生成图像,请不要修改
sa=pwd;
print('-djpeg','./picture/step2/picture1.jpg');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t2 = -3:0.001:3;
w2 = 1.5;
% 2.生成长度为t2.宽度为w2的矩形脉冲
% 矩形脉冲命名为y2
%%%%%%%%% Begin %%%%%%%%%
y2=rectpuls(t2,w2);
%%%%%%%%% End %%%%%%%%%
%用于生成图像,请不要修改
plot(t2,y2);
sa=pwd;
print('-djpeg','./picture/step2/picture2.jpg');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t3 = 0:pi/180:4*pi;
% 3.生成长度为t3的正弦波
% 正弦波冲命名为y3
%%%%%%%%% Begin %%%%%%%%%
y3=sin(t3);
%%%%%%%%% End %%%%%%%%%
%用于生成图像,请不要修改
plot(t3,y3);
sa=pwd;
print('-djpeg','./picture/step2/picture3.jpg');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t = -5:0.2:9;
t4 = pi./2*t;
duty = 20;
% 4.生成长度为t4,占空比为20的方波
% 方波冲命名为y4
%%%%%%%%% Begin %%%%%%%%%
y4=square(t4,duty);
%%%%%%%%% End %%%%%%%%%
%用于生成图像,请不要修改
plot(t4,y4);
sa=pwd;
print('-djpeg','./picture/step2/picture4.jpg');
第3关:典型噪音生成
任务描述
本关任务:用Matlab生成几种典型噪声。
相关知识
为了完成本关任务,你需要掌握:1.几种典型噪音生成函数,2.函数参数定义以及如何设置。
这里的典型噪音以均匀分布白噪音,高斯白噪音,窄带噪音为例;
答案
%%%%%%%%%%%%%%%%%%
%请不要修改
%%%%%%%%%%%%%%%%%%
pkg load signal
pkg load symbolic
pkg load communications
warning('off','all');
graphics_toolkit('gnuplot')
rand('seed',0)
m1 = 1000;
% 1.生成基于均值0,方差为sigma1,长度为m1的均匀分布白噪音;
% 输出命名为y1
%%%%%%%%% Begin %%%%%%%%%
y1=rand(m1);
%%%%%%%%% End %%%%%%%%%
plot(y1);
%用于生成图像,请不要修改
sa=pwd;
print(1,'-djpeg','./picture/step3/picture1.jpg');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
m2 = 1;
n2 = 600;
p2 = 8;
img = 5;
state = 50;
% 2.生成长度m2*n2,强度为p2的高斯白噪音,负载阻抗的欧姆数为img,并固定状态种子参数为state
% 输出命名为y2
%%%%%%%%% Begin %%%%%%%%%
y2=wgn(m2,n2,p2,img,state);
%%%%%%%%% End %%%%%%%%%
%用于生成图像,请不要修改
plot(y2);
sa=pwd;
print(1,'-djpeg','./picture/step3/picture2.jpg');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
b3 = fir1(64, 0.8);
rand('seed',0)
n3 = rand(1,200);
% 3.使用b3信号对n3信号进行100倍的窄带滤通
% 输出命名为y3
%%%%%%%%% Begin %%%%%%%%%
y3=filter(b3,100,n3);
%%%%%%%%% End %%%%%%%%%
%用于生成图像,请不要修改
plot(y3);
sa=pwd;
print(1,'-djpeg','./picture/step3/picture3.jpg');
第4关:混合信号产生
任务描述
本关任务:编写能混合不同信号和噪音的函数并显示。
编程要求
根据提示,在右侧编辑器补充代码,读取txt
文件信号,并进行信号混合,最后保存成txt
文件。
答案
%%%%%%%%%%%%%%%%%%
%请不要修改
%%%%%%%%%%%%%%%%%%
warning('off','all');
graphics_toolkit('gnuplot')
pkg load signal
pkg load symbolic
pkg load communications
m1 = 1;
n1 = 500;
p1 = 2;
state = 50;
y1 = wgn(m1,n1,p1,[],state);
m2 = 1;
n2 = 500;
p2 = 8;
y2 = wgn(m2,n2,p2,[],state);
A1 = 3;
A2 = 4;
% 1.对信号y1进行幅度操作A1,信号y2进行幅度操作A2,然后相加。
% 新信号命名为yf
%%%%%%%%% Begin %%%%%%%%%
yf=A1*y1+A2*y2;
%%%%%%%%% End %%%%%%%%%
plot(yf);
%用于生成图像,请不要修改
sa=pwd;
print(1,'-djpeg','./picture/step4/picture1.jpg');
filename = './picture/step4/newData.txt';
% 2.保存新信号yf为txt文件filename
%%%%%%%%% Begin %%%%%%%%%
save(filename, 'yf')
%%%%%%%%% End %%%%%%%%%
实验(2)2ASK数字带通传输系统仿真设计
第1关:2ASK信号调制仿真实验
任务描述
对信号的调制,是搭建通信系统的第一步,本关主要实现的就是对信号的振幅键控调制。
答案 :数据太多,附上关键部分
%以上代码省略%
figure (1)
subplot(311);%输出图形排队6行1列,第1列
%%%%%%%%% begin %%%%%%%%%
t=0.001:0.001:3;
for i=1:M
m(1,60*(i-1)+1:(60*i))=a(i)*ones(1,60);
end
plot(t,m);
%%%%%%%%% end %%%%%%%%%
axis([0 3 -1.2 1.2]);%x、y轴范围
title('information source');
st=zeros(1,3000);
subplot(312);%输出图形排队6行1列,第2列
%%%%%%%%% begin %%%%%%%%%
f=150;
carry=cos(2*pi*f*t);
st=m.*carry;
plot(t,st);
%%%%%%%%% end %%%%%%%%%
axis([0 3 -1.2 1.2])
title('2ASK signal')
subplot(313)
%%%%%%%%% begin %%%%%%%%%
anst=noise+st;
plot(t,anst);
%%%%%%%%% end %%%%%%%%%
axis([0 3 -1.2 1.2])
title('2ASK signal and noise')
%%%%%%%%% test %%%%%%%%%
sa=pwd;
print(1,'-djpeg','./picture/step1/student1.jpg')
run('./step1/test1plot.m')
system('python3 ./step1/test.py');
第2关:2ASK信号解调仿真实验
任务描述
经过上一关的任务,相信同学们已经完成了 2ASK 信号的调制,本关在上一关卡的基础上,对调制信号进行解调。
对于 2ASK 信号的解调,有两种基本方法:相干解调法(同步检测法)和非相干解调法(包络检波法)。
- 相干解调需要将载频位置的已调信号频谱重新搬回原始基带位置,因此用相乘器与载波相乘来实现;
- 非相干解调法则是不与载波相乘,而是通过一个全波整流器,再进行低通滤波抽样判决,来实现解调。
本关卡中选取相干解调的方法来实现调制信号的解调。
答案:同上省去数据部分,只列关键代码
%以上部分略去%
title('2ASK signal and noise')
subplot(614)
%%%%%%%%% begin %%%%%%%%%
nst=anst.*carry;
plot(t,nst);
%%%%%%%%% end %%%%%%%%%
axis([0 3 -1.2 1.2]);
title('signal multiply by carrier')
subplot(615)
%%%%%%%%% begin %%%%%%%%%%
N=10;
wc=1010.5;
[B,A]=butter(N,wc,'s');
h=tf(B,A);
dst=lsim(h,nst,t);
plot(t,dst);
%%%%%%%%% end %%%%%%%%%
axis([0 3 -1.2 1.2]);
title('after Low pass filtering signal');
subplot(616)
pdst=zeros(1,3000);
%%%%%%%%% begin %%%%%%%%%
k=0.25;
pdst=1*(dst>0.25);
plot(t,pdst);
%%%%%%%%% end %%%%%%%%%
axis([0 3 -1.2 1.2]);
title('Sampling decision')
%%%%%%%%% begin %%%%%%%%%
errornumber=0;
err=0;
for i=1:M
if a(i)~=pdst(60*(i-1)+30);
errornumber=errornumber+1;
end
end
err=errornumber/M;
%%%%%%%%% end %%%%%%%%%
%%%%%%%%% test %%%%%%%%%
sa=pwd;
print(2,'-djpeg','./picture/step2/student2.jpg')
run('./step2/f_t_2.m');
system('python3 ./step2/test2.py');