数字信号处理课程设计两个序列之间的相关系数Word文档格式.docx
《数字信号处理课程设计两个序列之间的相关系数Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计两个序列之间的相关系数Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
第22组
姓名:
叶尚元史俊杰
学号:
2010013533
2010013516
摘要:
相关系数是表征两个随机变量之间统计关系强弱的统计量,在几乎所有科学与技术领域都获得了广泛应用.相关系数主要用与5个方面,.具体结论如下:
(1)当样本满足二元高斯分布时,皮尔逊积距相关系数是最佳选择;
(2)当样本中存在轻微的单调非线性畸变时,序统计量相关系数比较适用;
(3)当样本中存在严重的单调非线性畸变时,斯皮尔曼秩次相关系数或肯德尔秩次相关系数是合适的选择;
(4)当只有一路信号中存在单调非线性畸变时,基尼相关是最佳选择;
(5)当样本中存在脉冲干扰时,斯皮尔曼秩次相关系数或肯德尔秩次相关系数是合适的选择.
本文主要探讨的两个序列之间的相关系数,他们之间的相关程度以及怎样来求加入白噪声的两个序列的相关序数。
第1章背景…………………………………………………………1
第2章设计目的……………………………………………………2
第3章设计原理……………………………………………………2
第4章设计过程……………………………………………………5
第5章实验代码及结果……………………………………………5
5.1MATLAB源程序………………………………………………5
5.2程序运行结果………………………………………………6
5.3DFT与FFT比较……………………………………………7
5.4比较结果总结………………………………………………8
第6章收获与体会…………………………………………………9
参考文献……………………………………………………………9
两个序列之间的相关系数
一、设计目的
MATLAB是一种以数值计算和数据图示为主的计算机软件,并包含适应多个学科的专业软件包,以及完善程序开发功能。
在MATLAB中设计并实现两个序列之间的相关序数,就是MATLAB软件在信号处理中的应用。
通过这次课程设计,以期我们能更加熟悉MATLAB的功能,掌握MATLAB程序设计,为以后的毕业设计奠定一定的基础。
二、设计任务
设序列x(k)={3,11,7,0,-1,4,2},n=【-3,-2,-1,0,1,2,3】,将x进行移位再加上一个白噪声信号,即y(k)=x(k-2)+w(k),其中k属于n,需要计算x序列和y序列之间的相关序数,可以使用卷积来计算。
三、设计原理
1.自相关和互相关的概念。
●互相关函数是描述随机信号x(t),y(t)在任意两个不同时刻t1,t2间的相关程度。
●自相关函数是描述随机信号x(t)在任意两个不同时刻t1,t2间的相关程度。
互相关函数是在频域内两个信号是否相关的一个判断指标,把两测点之间信号的互谱与各自的自谱联系了起来。
它能用来确定输出信号有多大程度来自输入信号,对修正测量中接入噪声源而产生的误差非常有效。
事实上,在图象处理中,自相关和互相关函数的定义如下:
设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积;
设两个函数分别是f(t)和g(t),则互相关函数定义为R(u)=f(t)*g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。
2.利用matlab中实现这两个相关并用图像显示:
自相关函数:
dt=.1;
t=[0:
dt:
100];
x=cos(t);
[a,b]=xcorr(x,'
unbiased'
);
plot(b*dt,a)
互相关函数:
把[a,b]=xcorr(x,'
改为[a,b]=xcorr(x,y,'
便可。
3.实现过程:
在Matalb中,求解xcorr的过程事实上是利用Fourier变换中的卷积定理进行的,即R(u)=ifft(fft(f)×
fft(g)),其中×
表示乘法,注:
此公式仅表示形式计算,并非实际计算所用的公式。
当然也可以直接采用卷积进行计算,但是结果会与xcorr的不同。
事实上,两者既然有定理保证,那么结果一定是相同的,只是没有用对公式而已。
下面是检验两者结果相同的代码:
x=3*sin(t);
y=cos(3*t);
subplot(3,1,1);
plot(t,x);
subplot(3,1,2);
plot(t,y);
[a,b]=xcorr(x,y);
subplot(3,1,3);
plot(b*dt,a);
yy=cos(3*fliplr(t));
%oruse:
yy=fliplr(y);
z=conv(x,yy);
pause;
plot(b*dt,z,'
r'
即在xcorr中不使用scaling。
4.求相个相关序列之间的相关系数可以用sum(x.*y)/(sum(x.*x)*sum(y.*y))
四、设计过程
首先出入x序列[3,11,7,0,-1,4,2]接着利用size函数求x序列行列数,然后设shift=2,这是为了后面的行以为,再用circshift函数进行移位,加入白噪声得到y序列。
circshift是矩阵作环形位移,N(ii)为延迟值,sum(x.*circshift(y,[1,N(ii)]),2);
是计算x与y的卷积。
其中:
size():
获取矩阵的行数和列数
(1)s=size(A),
当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。
(2)[r,c]=size(A),
当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。
Circshift是矩阵循环平移
Circshift[a,b]
a是列向移动
b是行向移动
zeros(m,n)或zeros(n)
zeros(m,n)产生m×
n的全0矩阵,zeros(n)产生n×
n的全0方阵
相关序数公式:
sum(x.*y)/(sum(x.*x)*sum(y.*y))
五、实验代码及结果
5.1、MATLAB源程序为:
N=-3:
1:
3;
x=[3,11,7,0,-1,4,2];
[m,n]=size(x);
shift=-2;
y=circshift(x,[1,shift])+rand(1,n)*0.1;
corelation=zeros(1,n);
forii=1:
n
corelation(ii)=sum(x.*circshift(y,[1,N(ii)]),2);
end
figure;
plot(N,corelation,'
-*r'
title('
两个序列之间的相关序数'
)
5.2、程序运行结果如下图:
5.3、结论:
通过这次课程设计,我们知道了怎样去求两个序列的相关序数,和一些函数的用法;
如size、zeros、circshift、sum函数,同时我们还了解怎么去处理加入白噪声;
对相关系数是表征两个随机变量之间统计关系强弱的统计量有了更加深刻的了解,对自相关和互相关的概念用法和作图更加熟悉了。
六、收获与体会
因为这次课程设计,我重新温习了信号系统中有关相关系数的这一部分,以前遗留下的很多疑问再通过这次作业,有一部分已得到解决。
用MATLAB设计求两个序列之间的相关系数,使我对MATLAB这个软件有了更深层次的了解,相信如果以后还要用MATLAB这个软件的话,尤其是有关数字信号处理方面的程序,应该不是问题。
这是我第一次写课程设计报告,不知道程序是不是完全正确。
但我确实认真的去做了,这几天忙着找资料,尝试怎么通过了解到的资料,因为找到类似的程序也没学过,只能自己去编写,这一过程虽然不是很快乐的,但却是异常充实的,通过这次设计我我觉得最大的收获就是熟悉了课本上的知识外还了解了不少其他相关的知识。
参考文献
[1]陈怀琛,吴大正,高西全.MATLAB及在电子信息课程中的应用(第2
版)[M].北京:
电子工业出版社,2004
[2]高西全,丁玉美.数字信号处理(第三版)[M].西安:
西安电子科技大学出
版社,2008
[3]刘顺兰,吴杰.数字信号处理(第二版)[M].西安:
西安电子科技大学出
[4]吴湘淇.信号、系统与信号处理(上、下)[M].北京:
电子工业出版社,2000
[5]张志勇.精通MATLAB6.5[M].北京:
北京航空航天大学出版社,2003
[6]门爱东,杨波,全子一.数字信号处理[M].北京:
人民邮电出版社,
2003
[7]吴湘淇.信号与系统(第3版)[M].北京:
电子工业出版社,2009