MATLAB上机实习实验一Word文档格式.docx
《MATLAB上机实习实验一Word文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB上机实习实验一Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
xn=sin(w*n1);
a=[1-a1];
xn1=[xn zeros(1,150)]
yn= filter(b,a,xn1);
%用filter实现滤波
figure('
name'
'
实验一');
subplot(211);
plot(n1,xn);
gridon;
title('
x(n)'
);
xlabel('n'
);
ylabel('
幅度');
t1=toc %计时结束,t1记下运算时间
subplot(212);
plot(n2,yn);
title('
y(n)');
xlabel('
n'
ylabel('
幅度');
figure('
'实验一'
freqz(b,a);
%画出频率响应曲线
七:
程序结果及图表:
输入输出曲线:
幅频响应及相频响应曲线:
八:
实验总结
相对来说,这道题目最简单。
值得注意的是b的算法实现和产生输入的新序列(需要后补零)。
这样便得到了系统函数的滤波系数以及输入,可以得到其幅频响应。
通过实验理解了极点越靠近圆,峰值越高越尖锐,滤波效果就越好。
零点越靠近单位圆,谷值越接近零。
也进一步理解了数字滤波器的传输特性。
题目七
该题目的目的是说明一个PN扩频信号在抑制正弦干扰中的有效性。
现考虑下图所示的二进制通信系统,对信号发生器的输出乘上一个二进制(
1)PN序列。
同一个二进制PN序列用来与解调器输入相乘,因此消除了这个PN序列在期望信号上的影响。
信道将传送信号受到一宽带加性噪声序列ω(n)和一正弦干扰序列i(n)=Asinω0n, 0<
ω0<
π的污损。
可以假定A≥M,这里M是来自调制器的每比特的样本数。
用和不用PN序列执行这个仿真系统,并在条件A≥M下,对不同的M值(如M=50,100,500,1000)测量差错率。
画出每种情况的差错率曲线,作比较并说明结论。
说明这个PN序列对于正弦干扰信号的效果。
由此说明为什么PN扩频系统在正弦干扰信号存在下优于常规的二进制通信系统。
二:
(1)学习扩频序列的含义与实现。
(2)一个简单的通信系统,即令信号通过一个有噪声的系统,对加上PN序列和不加PN序列后的差错率比较,说明扩频序列在抑制正弦干扰中的有效性。
三:
实验原理:
信号S(n)与PN扩频序列相乘(异或实现)后,经过叠加正弦噪声,然后再与序列相乘恢复出经过系统后的信号,与原输入信号相比较后得到差错率。
根据差错率可以证明PN扩频信号是否有利于通信系统中正弦噪声的抑制。
四:
(1)理解PN序列概念,编写PN序列产生子函数。
(2)编写输入信号及噪声子函数。
(3)通过对子函数的调用实现通信系统,比较输入前后信号的差错率。
(4)通过画图程序输出差错率-信噪比图像。
function []=a()
W=pi*0.3;
n=4;
while
(1)
k=input('
请选择序列长度M:
\n1.M=50 2.M=1003.M=500 4.M=10000.退出\n');
switch(k)
case 1
N=50;
A=N+10;
Z=50;
P=100;
kk(n,A,W,N,Z,P);
case2
N=100;
A=N+10;
Z=100;
kk(n,A,W,N,Z,P);
case 3
N=500;
A=N+10;
Z=500;
P=150;
kk(n,A,W,N,Z,P);
case4
N=1000;
A=N+100;
Z=1100;
P=250;
kk(n,A,W,N,Z,P);
case0
break;
otherwise
continue;
end
end
%计算信噪比与差错率
function[]=kk(n,A,W,N,Z,P)
p=random(N);
pq=pseudo_random(n,N);
fork=1:
19;
%加PN序列的情况
Z=Z+P;
g=xor(p,pq)*Z;
%用PN序列进行扩频
pp=sinout(A,W,N);
x=g+sinout(A,W,N);
pp1=50*noise(N);
i=1:
N;
sh(i)=x(i)+pp1(i);
q=sh>
Z/3;
%设置一个门限,滤除噪声
jtout=xor(q,pq);
%解扩频
i=1:
N;
p0=p(i)~=jtout(i);
%检测
p1=length(find(p0));
%计算错误个数
cc(k)=p1/N;
%计算差错率
i=1:
N;
me=0;
me=me+g(i).^2;
%信号功率
mp=me/N;
j=1:
se=0;
se=se+pp(j).^2+pp1(j).^2;
%噪声功率
sp=se/N;
sn(k)=mp/sp;
%计算信噪比
%不加PN序列
g1=p*Z;
x1=g1+sinout(A,W,N);
i=1:
sh1(i)=x1(i)+pp1(i);
q1=sh1>
Z/3;
%设置一个门限,滤除噪声
jtout1=q1;
%解调
p2=p(i)~=jtout1(i);
%检测
p3=length(find(p2));
%计算错误个数
tt(k)=p3/N;
%计算差错率
de=0;
de=de+g(i).^2;
%信号功率
dp=de/N;
j=1:
re=0;
re=re+pp(j).^2+pp1(j).^2;
%信噪比
rp=re/N;
rn(k)=dp/rp;
%信噪比
end
%画出信噪比与差错率曲线
closeall;
figure
plot(sn,cc);
holdon;
plot(rn,tt,'
r'
gridon;
legend('
加PN序列'
不加PN序列'
xlabel('
信噪比'
ylabel('
差错率'
title('
信噪比与差错率曲线');
%伪噪声序列子函数
function [ps_ra]=pseudo_random(n,N)
a=zeros(1,n);
a(n)=1;
fori=1:
1000
y(i)=a(n);
temp=mod(a(n-1)+a(n),2);
forj=n:
-1:
2;
a(j)=a(j-1);
end
a
(1)=temp;
ps_ra=y(1:
N);
%随机二进制序列子函数
function[x]=random(N)
n=[0:
N];
x=rand(1,N);
x(i)=x(i)<0.5;
%正弦噪声子函数
function [si]=sinout(A,W,N)
i=1:
si=A*sin(W*i);
%随机噪声子函数
function[ran]=noise(N)
ran=randn(1,N);
七:
程序结果及图表:
M=50:
M=100:
M=500:
M=1000:
八:
在相同信噪比与采样点数时,加上PN序列的差错率小于不加PN序列的差错率,由此可以说明PN扩频系统有利于抑制正弦干扰。
同时可以发现,M较小时,扩频的效果不容易观察到。
序列是随机产生,因此每次产生的曲线都不同。
有时加PN序列的差错率会更高,这是没有扩频成功导致的。
通过本实验我熟悉了对MATLAB函数的使用,了解了扩频通信以及伪噪声序列的相关知识。
通过自己查阅资料,逐渐找到解决问题的方法,进一步提高了我的自学能力,也从中体会到很多乐趣。
遇到问题时不仅应该主动思考,而且也要积极向老师、同学请教。
题目十二
实验题目:
(1)用双线性变换发设计一个巴特沃斯低通IIR数字滤波器。
设计指标参数为:
在通带内频率低于0.2*pi时,最大衰减西欧与1dB;
在阻带内[0.3*pi,pi]频率区间上,最小衰减大于15dB。
(2)以0.02*pi位采样间隔,打印出数字滤波器在频率区间[0,pi/2]上的幅频响应特性曲线。
(3)用所涉及的滤波器对实际心电图信号采样序列进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。
实验目的:
(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法。
(2)掌握数字滤波器的计算机仿真方法。
(3)通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。
双线性变换法设计数字滤波器,通过非线性频率压缩的方法,将整个频率轴上的频率范围压缩到-π/T和π/T之间,再用z=esT转换到z平面上。
设Ha(s),s=jΩ,经过非线性频率压缩后用Ha(s1),s1=jΩ1表示。
实验步骤简述:
(1)复习有关巴特沃斯模拟滤波器设计和用双线性变换法设计IIR数字滤波器的内容,用双线性变换法设计数字滤波器系统函数H(z);
(2)通过调用filter函数计算H(z)对心电图信号采样序列x(n)的响应序列y(n);
(3)调用通用绘图子程序,完成实验内容
(2)和(3)。
五:
程序框图:
x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,...
0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,...
4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];
k=1;
closeall;
figure
(1);
subplot(2,2,1);
stem(x,'
.r'
holdon;
n=0:
60;
m=zeros(61);
plot(n,m);
xlabel('
ylabel('x(n)');
心电图信号采样序列');
B=[0.090362*0.090360.09036];
A=[1.2686 -0.7051];
A1=[1.0106-0.3583];
A2=[0.9044-0.2155];
while(k<
=3)
y=filter(B,A,x);
x=y;
ifk==2
A=A1;
end
ifk==3
A=A2;
end
k=k+1;
subplot(2,2,2);
stem(y,'
.g'
axis([056-155]);
hold on;
n=0:
60;
m=zeros(61);
plot(n,m);
ylabel('y(n)'
title('三级滤波后的心电图信号');
A=[0.09036,0.1872,0.09036];
B1=[1,-1.2686,0.7051];
B2=[1,-1.0106,0.3583];
B3=[1,-0.9044,0.2155];
[H1,w]=freqz(A,B1,100);
[H2,w]=freqz(A,B2,100);
[H3,w]=freqz(A,B3,100);
H4=H1.*(H2);
H=H4.*(H3);
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
subplot(2,2,3)
plot(w/pi,db);
axis([0,0.5,-50,10]);
滤波器的幅频响应曲线');
(1)双线性变换法的特点:
频率坐标变换是非线性的,从而使从模拟滤波器的频率响应转换成数字滤波器的频率响应有失真;
优点是不会产生频率混叠现象。
(2)对比滤波前后的心电图信号波形,可以发现滤波前信号波动较大,高频干扰较多,滤波后信号波形比较平滑稳定;
(3)对双线性变换法,由于不存在频率混叠现象,因此变换公式中参数T可以任选。