MATLAB实验六2.docx
- 文档编号:25143510
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:22
- 大小:162.41KB
MATLAB实验六2.docx
《MATLAB实验六2.docx》由会员分享,可在线阅读,更多相关《MATLAB实验六2.docx(22页珍藏版)》请在冰豆网上搜索。
MATLAB实验六2
一:
实验题目6:
(提取淹没在噪声中的周期信号)提取淹没在噪声中的周期信号要求自相关(以判断周期)和互相关(以恢复信号自身)。
(a)生成信号x[n]=sin(0.1*n*pi),0
n
499.增加一些均匀分布的随机噪声(其噪声幅度为2,平均值为0)以得到噪声信号s[n]。
作出每个信号随参数n变化的图形。
是否能够从所画的x[n]中判断出任何的周期性?
如果可以,求周期N。
能否由所画得s[n]判断出任何周期性?
(b)求x[n]的周期自相关rpx[n]并作图。
能否由所作的rpx[n]判断出任何周期性?
如果可以,求周期N。
这个N是否与x[n]的周期相同?
(c)利用上面所求的N值(如果没有,则由x[n]判断)生成一个500样本的冲击串
0≤n≤499。
求出s[n]和i[n]的周期互相关。
二:
实验目的:
(1)熟悉一些常用函数的生成方法。
(2)练习用matlab绘制图形。
(3)用自相关和互相关提取淹没在噪声中的周期信号。
三:
实验原理:
周期信号和随机信号都是功率信号(功率信号是信号功率为有限正值而信号能量无限大)。
自相关函数反映了一个信号与延迟k后的同一信号的相关程度。
互相关函数反映了一个信号和延迟k后的另一信号的相关程度。
一个功率信号的功率谱密度与信号的自相关函数是一对傅立叶变换关系。
由周期函数的巴赛法尔定理,功率谱密度函数在离散的采样点上与信号的频谱有一定的关系。
如果能够在功率谱密度函数上离散采样,构造出频谱,然后再对其进行傅立叶逆变换,即可得到时域的函数曲线。
同理,两个相同周期的功率信号的互功率谱与他们的周期互相关是一对傅立叶变换。
四:
实验步骤简述:
(1)生成信号x[n]=sin(0.1*n*pi),0
n
499。
和增加一些均匀分布的随机噪声(其噪声幅度为2,平均值为0)以得到噪声信号s[n]。
(2)求x[n]的周期自相关(自相关函数xcorr())rpx[n]并作图。
并读出周期。
(3)生成一个500样本的冲击串
0≤n≤499。
计算是s(n)与i(n)的互相关xcorr(s,i)。
五:
程序框图:
六:
源程序:
closeall;clearall;clc;
%生成信号x[n]
n=0:
499;
x=sin(0.1*n*pi);
subplot(6,1,1);
plot(n,x,'k');
title('正弦信号x[n]');
%生成随机噪声r[n]
r=2*rand(1,500)-1;
subplot(6,1,2);
plot(n,r,'k');
title('随机噪声r[n]');
%生成噪声信号s[n]
s=x+r;
subplot(6,1,3);
plot(n,s,'k');
title('噪声信号s[n]');
%求x[n]的自相关函数rpx[n]
rx=xcorr(x,x);
subplot(6,1,4);
plot(rpx);
title('x[n]的自相关函数rpx[n]');
%生成500样本冲击串
i=ones(1,500);%产生500样本的冲击串I
form=1:
500
ifmod(m,20)==0
i(1,m)=1;
else
i(1,m)=0;
end
end
subplot(6,1,5);
stem(i,'.');
axis([0,500,-0.2,1.2]);
title('冲击串i[n]');
%求s和i的互相关rsi[n]
rsi=xcov(s,i);
subplot(6,1,6);
plot(rsi);
title('s[n]和i[n]的互相关函数rsi[n]');
七:
程序结果及图表:
八:
实验总结
(a)由图像可知,x[n]具有周期性,且周期N=20;不能从s[n]中判断出周期性。
(b)x[n]的自相关函数具有周期性,周期N=20,与x[n]周期相同。
(c)s[n]和i[n]的互相关函数具有周期性,且周期N=20,与x[n]的周期相同。
可以估计,冲击信号可以从噪声信号中提取出原始信号。
1、此实验考查周期函数和随机噪声的产生,常见二维平面图形的绘制方法,以及自相关函数和互相关函数的用法。
需要一定Matlab基础知识,以及它的操作,画出图形。
而且要对自相关函数和互相关函数了解,通过学习,进一步复习了周期信号的周期性的判断,知道了函数自相关和互相关的内涵,以及它们所实现的算法实质。
2、作为初次使用Matlab实现信号处理的题目,在实验过程中,我还是遇到了许多问题,例如对某些Matlab函数的功能不够清晰,对数字信号处理的一些相关知识也有些遗忘,所以在复习数字信号处理后,我积极的向同学和老师请教,在他们的帮助下,我顺利完成了题目要求。
一:
实验题目7:
该题目的目的是说明一个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)练习使用matlab软件。
(2)说明一个PN扩频信号在抑制正弦干扰中的有效性。
三、实验原理
PN是通过线性移位寄存器产生的为随机序列。
扩频通信理论基础是香农的信道容量公式。
他告诉我们,未达到给定的信道容量要求,可以用带宽换取信噪比,即在低信噪比条件下可以用增大带宽的方法无误的传送给定信息。
DN序列的扩频是指用一个序列去乘一个信息符号,序列码片的时间远小于信息符号的时间。
由信号的时间与频谱的关系,知道扩频后的频谱是展宽的。
同时,由于PN序列的相关性很低,只有在发送的PN序列和接收的PN序列相同,并且其码片同步时才能得到一个相关峰。
四、实验步骤简述
(1)产生一个二进制信源序列和一个PN序列。
(2)按每比特M个采样点进行采样将
(1)中两序列映射成-1+1序列。
(3)按照框图求出输出序列并设置门限将其转化为只含有-1+1的序列。
(4)与采样后的信源进行比较计算出信噪比和差错率。
绘制出信噪比差错率的图形。
(5)不加PN时按题中框图计算出输出序列设置门限将其转化为只含有-1+1的序列。
(6)与二进制信源进行比较计算出信噪比和差错率。
绘制出信噪比差错率的图形。
并与加PN序列的图形比较。
(7)取不同的采样点M重复上述操作。
比较不同M产生的信噪比差错率的图形。
五、程序框图
否
是
六、源程序
w0=0.2*pi;%0.2pi的亏损
n=4;
while
(1)
M=input('请输入样本数M=');
if(M>0)
A=input('请输入正弦信号的幅度A(A>=M)=');
Z=input('请输入原始信号的幅度因子Z=');
B=input('请输入噪声幅度B=');
p(n,A,M,Z,B,w0);
else
input('ERROR!
')
clc;break;
closeall;
end
end
function[]=p(n,A,M,Z,B,w0)
s=randout(M);
r=pn(n,M);
%加PN序列
fork=1:
20%循环增加Z(原始信号的幅度)
Z=Z+B;%使调制后的序列幅度Z大于噪声幅度B
g=xor(s,r)*Z;%调制(逻辑异或)差分调制
q=sinout(A,w0,M);
x=g+q;%调制后序列加正弦信号
re=B*wout(M);%生成噪声信号
x1=re+x;%加入噪声
r2=x1>Z/3;%设置一个门限,滤除噪声
r3=xor(r2,r);%解调
i=1:
M;
r4=s(i)~=r3(i);%检测(当不等时取1且计入r4当相等时取0不计入r4)
r5=length(find(r4));%计算错误的个数(计算r4中元素取1的个数)
cc(k)=r5/M;%错误的概率
me=0;se=0;
fori=1:
M
me=me+g(i).^2;%计算信号的总能量
se=se+q(i).^2+re(i).^2;%计算噪声的总能量
end
mp=me/M;%计算信号的平均功率
sp=se/M;%计算噪声的平均功率
sn(k)=mp/sp;%计算信噪比
%不加PN序列
h=s*Z;%原始信号乘幅度因子
x2=h+re+q;%信号序列加正弦信号和噪声信号(不加PN序列调制)
r6=x2>Z/3;%设置一个门限,滤除噪声
i=1:
M;
r7=s(i)~=r6(i);%检测(当不等时取1且计入r7当相等时取0不计入r7)
r8=length(find(r7));%计算错误的个数(计算r7中元素取1的个数)
cd(k)=r8/M;%错误的概率
ma=0;sa=0;
fori=1:
M
ma=ma+h(i).^2;%计算信号的总能量
sa=sa+q(i).^2+re(i).^2;%计算噪声的总能量
end
md=ma/M;%计算信号的平均功率
st=sa/M;%计算噪声的平均功率
sd(k)=md/st;%计算信噪比
end
%画信噪比与差错率曲线
figure;
stem(sn,cc,'ob');%输出有PN序列的图
holdon;
stem(sd,cd,'*r');%输出没有PN序列的图
xlabel('信噪比');
ylabel('差错率');
title('信噪比与差错率曲线("."--有PN序列,“*”--无PN序列)');
grid%打开网络线
%二进制数据的产生
function[s]=randout(M)
n=0:
M;
s=rand(1,M);%1*M的0--1的均匀分布的随机数矩阵
j=1:
M;
s(j)=s(j)>0.5;%使每个元素的值大于0.5
%PN序列的产生
function[p_s]=pn(n,M)
a=zeros(1,n);%1*n的零矩阵
a(n)=1;%令第n列数为1
fori=1:
M
y(i)=a(n);
temp=xor(a(n-1),a(n));%差分调制异或
forj=n:
-1:
2
a(j)=a(j-1);%改变a(n)序列
end
a
(1)=temp;%改变a(n)序列
end
p_s=y(1:
M);%取a(n)序列的最后一位元素生成pn序列
%正弦信号的产生
function[in]=sinout(A,w0,M)
j=1:
M;
in=A*sin(w0*j);
%随机噪声的产生
function[w]=wout(M)
w=rand(1,M);%1*M的0--1的均匀分布的随机数矩阵
七、程序结果及图表
M=50
M=100
M=500
M=1000
八、实验总结
由图像得到总结:
1、相同M值的条件下,信噪比越大,差错率越小,当信噪比大于15时,差错率几乎为零;并且,相同信噪比,PN扩频系统的信号差错率比常规的二进制通信系统低。
2、随着M值增大,相同信噪比条件下,两种系统的差错率区域相同。
3、DN序列的扩频是指用一个序列去乘一个信息符号,序列码片的时间远小于信息符号的时间。
由信号的时间与频谱的关系,知道扩频后的频谱是展宽的。
而正弦信号是窄频噪声,对其干扰较低。
因此PN扩频系统在正弦干扰信号存在下优于常规的二进制通信系统。
实验中遇到的问题:
PN序列的产生,以及对信道过程的描述。
通过该实验的学习,学会了二进制序列的产生,对matlab编程有了更多的了解。
本实验考察了如何给周期信号添加噪声和提取原信号。
噪声信号不能太大,否则难以恢复出原信号。
这个试验使我复习了信号的加噪和提取的知识,而且学会了如何分析试验图表,试验技能得到很大提升,同时对matlab更加熟悉,为后续试验打下坚实基础。
本题涉及到一个通信原理中常见的调制解调信道模型,但其中采用的PN扩频系统是平时没有研究过的,因此对于PN序列的作用,以及产生方法,我查阅了通原课本,并与同学进行了探讨。
对比PN序列的加入与去除对信道的影响,最终初步了解了其作用,并完成了题目中的要求。
一:
实验题目9:
设有一长序列x(n)
x(n)=
令x(n)通过一离散系统,其单位抽样响应h(n)=
试编程序分别用重叠保留法、重叠相加法、快速卷积法实现该系统对x(n)的滤波。
二、实验目的
(1)熟悉重叠保留法。
(2)熟悉重叠相加法。
(3)熟悉快速卷积法。
三、实验原理
(4)重叠保留法,重叠相加法,快速卷积法都是线性卷积的一种快速算法。
当遇到两个序列长度相差很大的情况,直接进行快速卷积要求对短序列补充很多零点,长序列必须全部输入后才能进行快速计算。
因此要求存储容量大,运算时间长,并使处理延时很大,很难实时处理。
解决方法是分段处理。
(5)重叠保留法:
(6)由于h(n)的长度为N1,当0≤n≤N1-2时,h((n-m))N将在xi(m)的尾部出现有非零值,如图n=1的情况就是如此,所以0≤n≤N1-2这部分yi(n)值中将混入xi(m)尾部与h((n-m))N的卷积值,从而使yi(n)不同于线性卷积结果,但当n=N1-1~N-1时,则有h((n-m))N=h(n-m),因此从n=N1-1点开始圆周圈卷积值完全与线性卷积值一样,yi(n)的后面N2点才是正确的卷积值,而每一段卷积运算结果的前N1-1点个值需去掉。
(7)为了不造成输出信号遗漏,对x(n)分段时,需使相邻两段有N1-1个点的重叠(对于第一段,x(n)由于没有前一段保留信号,在其前填补N1-1点个零点)。
(8)重叠相加法:
题目中X(n)共有100个元素,则把其平均分为10段,每段10个元素。
H(n)中有三个元素。
由于X(n)每段有10个点,所以做FFT是要进行10+3-1=12点的运算。
则分段后的X(n)与H(n)卷积时就有12个点产生,建立一个102个元数的序列,把分段后的X(n)与H(n)卷积,第一段的结果直接保留在新建的102序列中,第二个序列的前两个元数与第一段的后两个元数相加,其他数值保持不变,依次类推,完成重叠相加法。
(9)快速卷积法:
利用蝶形运算减少运算量。
四、实验步骤简述
(10)利用定义产生X(n),H(n)序列。
(11)利用重叠保留法的原理产生序列
(12)利用重叠相加法的原理产生序列
(13)利用快速卷积原理产生序列
五、程序框图
六、源程序
%产生源代码x(n)
x=ones(1,100);
forn=0:
99
ifn>=0&n<=50
x(n+1)=n/5;
else
x(n+1)=20-n/5;
end
end
n=0:
99;
subplot(5,1,1);
stem(n,x,'.');
title('源序列x(n)');
%产生抽样响应h
h=ones(1,3);
forn=0:
2
ifn>=0&n<=2
h(n+1)=0.5^n;
else
h(n+1)=0;
end
end
n=0:
2;
subplot(5,1,2);
stem(n,h,'.');
title('单位抽样响应h(n)');
%重叠相加法,结果为jia
%重叠相加法:
从原始序列x(n)中,每长度为10截取后,将每一段与h线性卷积
%卷积后长度为12,设计起点为1,11,21……91,则叠加后两位数据有重叠
jia=zeros(1,102);
forn=1:
100
d=mod(n,10);
ifd==0
%分段截取10个单位
c=zeros(1,100);
form=n-10:
n
c(1,m)=1;
end
duan=c.*x;%从x(n)中依次提取长为10的数据段
y=conv(duan,h);%h和duan卷积
jia=jia+y;%jia初值为全零,jia的起始点分别是1,11,21,31……91
end
end
subplot(5,1,3);
stem(jia,'.');
title('重叠相加法结果y1(n)');
%重叠保留法,结果为bao
%重叠保留法:
假设从x(n)中截取N长的数据段,N与单位抽样相应h(n)按L=N循
%环卷积,则有(3-1)个点非线性,且是循环卷积后序列的第1,第2点。
%本题取值N=4
%则每次循环卷积后,第1,2点为非线性,第3,4点为线性点
kep=zeros(1,102);
forn=0:
48
mid=x(1,2*n+1:
2*n+4);%以长度4为单位从x(n)中提取数据段
cir=conv(mid,h);%线性卷积
bao(1,2*n+3)=cir(1,3);%提取每次线性卷积后的第3点
bao(1,2*n+4)=cir(1,4);%提取每次线性卷积后的第4点
end
%提取第一次线性卷积的开头(4-3+1)点
mid=x(1,1:
4);
cir=conv(mid,h);
kep(1,1)=cir(1,1);
kep(1,2)=cir(1,2);
subplot(5,1,4);
stem(kep,'.');
title('重叠保留法结果y2(n)');
%用快速卷积法实现线性卷积
%原理:
将两个序列分别求傅立叶变换,然后将傅立叶变换后的序列相乘
rap=fft(x,128);
son=fft(h,128);
ad=rap.*son;
out=ifft(ad);
subplot(5,1,5);
stem(out,'.');
axis([0120020]);
title('快速卷积法结果y3(n)');
七、程序结果及图表
八、实验总结
通过这个实验,对快速卷积法的定义有了更深的了解,同时也对重叠保留法、重叠相加法有了初步的认识和理解。
学习了使用matlab对这三种方法的实现。
本题实现了用重叠保留法`重叠相加法和快速卷积法,通过计算循环卷积,而计算出线性卷积的过程。
通过运行结果的图形可以知道,用快速卷积,重叠保留法和重叠相加法计算后,输出的波形相同,即尽管运算方法不同,但是线性卷积的结果是相同的,“殊途同归”。
重叠保留法与重叠相加法的计算量差不多,但省去了重叠相加法最后的相加运算。
一般来说,用FFT作信号滤波,只用于FIR滤波器阶数h(n)大于32的情况下,且取N2=(5~10)N1,这样可接近于最高效的运算。
当遇到两个序列长度相差很大的情况,直接进行快速卷积要求对短序列补充很多零点,长序列必须全部输入后才能进行快速计算。
因此要求存储容量大,运算时间长,并使处理延时很大,很难实时处理。
解决方法是分段处理,从而减少运算量。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 实验