实验报告姓名:实验名称:离散时间随机过程学号:课程名称:统计信号处理基础班级:实验室名称:组号:实验日期:一、实验目的、要求实验目的本实验的目的是在了解了Matlab编程语言的编程和调试的基础上,利用Matlab本身自带的函数来生成随机数,并根据随机数编程来计算随机过程的一些基本特征。本实验主要是为了锻炼学生基本的Matlab编程,并利用信号处理工具箱的函数来完成基本的数据分析功能。实验要求要求包括以下几个部分:1.要求独立完成实验的内容所要求的各项功能,编制完整的Matlab程序,并在程序中注释说明各段程序的功能。2.要填写完整的实验报告,报告应包含程序、图形和结论。要求记录在实验过程中碰到的问题,以及解决的方法和途径。3.实验报告是现场用Word填写并打印完成。个人或组必须在报告上署名。二、实验原理1、信号大致可以分为两类——确定信号和随机信号。随机信号是实际中存在最多的信号。确定信号可通过重复观测准确复制,而随机信号只能通过其统计特性进行描述。2、随机过程可以看成是白噪声通过一个系统的输出。3、理想高斯白噪声的自相关函数为n()。三、实验环境实验所要求的设备:每组包含完整的计算机1台;可共用的打印机1台,A4纸张若干;计算机上安装的软件包括:Matlab6.5以上(应包含SignalProcessingToolbox,FilterDesignToolbox);Word2000以上;四、实验过程、数据记录、处理及结论实验1.本实验主要是分析高斯白噪声的样本自相关序列的估计精度。a.生成1000个零均值、单位方差的高斯白噪声,并用hist函数来画出直方图,与理想的高斯分布函数相比较;可以看出随机信号概率密度函数和标准正态分布曲线比较接近,只是由于实际样本数有限使得其曲线上有许多毛刺。b.采用xcorr函数的有偏估计来估计前100个自相关序列,用Plot函数画出该自相关序列,与理想的高斯白噪声的自相关序列相比。c.把这组数据分成互不重叠的10段,每段有100个样本。分别对每段数据采用b中的方法来估计前100个样本自相关序列,然后对10段的自相关序列进行平均。获得的结果与b中的结果相比,并与真实的自相关序列相比。d.把b中的样本数扩大到10000个,重复实验b中的要求,所得的结果与b相比,并与理论的结果相比。b、c、d所对应的图如下图figure2e.根据上面的实验,你能得出什么结论?从上面的实验a可以看出,当样本值比较大时,实际的高斯白噪声分布函数和理想的高斯白噪声分布函数比较接近。从上面的实验b、c、d可以看出,相比较只采用1000个样本值的前100个而言采用10段自相关序列进行平均时,理想的自相关序列函数和实际的自相关序列函数更为接近;而当样本值变成10000时,理想的自相关序列函数和实际的自相关序列函数更接近了,这说明理想的自相关序列函数可以通过使样本值足够大来获得。实验2.本实验是观测随机过程通过滤波器后,输出和输入过程的统计特性所发生的变化。假定一个2阶的AR过程()(1)(1)(2)(2)(0)()xnaxnaxnbvn其中()vn零均值、单位方差的白噪声。可用filter函数实现。a.令(1)0,(2)0.81,(0)1aab,生成()xn的24个样本值。为了得到一个更为合适的结果,此次实验用滤波器函数filter产生了xn的128个样本值,其图形如下图figure1中所示。b.在理论上计算真实的自相关序列,并与xcorr计算的样本自相关序列相比;理论上计算的样本自相关序列是一个冲击响应函数,xcorr计算的样本自相关序列是一个接近冲击响应函数的函数,如下图figure1中第二个图所示。c.对估计的自相关序列采用fft来计算功率谱,画出功率谱;该图如下图figure1中第三个图所示,此处用到fftshift,通过查找其用法掌握用法。d.用估计的自相关序列和Yule-Walker方程来计算模型参数,并与理论结果相比。该图如下图figure1中第四个图所示,此处要调用armahat.m和convm.m,可以看出理想的功率谱和实际的功率谱比较接近。e.直接用估计的模型参数代入AR模型的功率谱中,画出该功率谱;f.用真实的模型参数来画出理论上的功率谱,并与c和e中功率谱的估计结果相比,有什么结论。用真实的模型参数画理论的功率谱比c和e中功率谱的估计相比更为接近理想的功率谱。ap=1.00000.04560.8477可以看出a(1)=0.0456,基本接近0,a(2)=0.8477,基本接近0.8五、讨论实验1中,在使用hist、xcorr函数时,对其中参数不太清楚,通过查找其用法基本掌握了其用法;b中自相关序列与理想的高斯白噪声的自相关序列相比,实际是随机信号概率密度与标准正态分布曲线的对比;而实现理想高斯分布就是把样本值取得足够大的一种近似;c中取平均时使用for函数。实验2中,a中取了128个样本值,b中在理论上计算真实的自相关序列时同实验1思路一样,取了足够大的样本得到一种近似理论意义的真实自相关序列;c中画功率谱时移位横坐标要用到fftshift函数,还是通过查找其用法基本掌握了其用法;d中用估计的自相关序列和Yule-Walker方程来计算模型参数要调用文件armahat.m和convm.m,当然这两个文件是直接调用的,只要将他们放在同一个根目录下即可。附:源程序实验1clc;clearall;closeall;%***************************************************%生成1000个零均值、单位方差的高斯白噪声,%并用hist函数来画出直方图,与理想的高斯分布函数相比较%***************************************************N=1000;%样本数Y=randn(N,1);x=1:1:1000;figure(1)subplot(2,1,1)hist(Y,-5:0.1:5);title('直方图');%用hist函数画出1000个零均值单位方差高斯白噪声的直方图rand_signal=randn(N,1);xh=-5:0.1:5;nh=hist(rand_signal,xh)/N/0.1;subplot(2,1,2)plot(xh,nh,'b');x=-5:0.01:5;y_goss=(2*pi)^(-0.5)*exp(-0.5*x.*x);holdon;plot(x,y_goss,'r--');title('');%text(1,y_goss(600),'标准正态分布曲线');legend('随机信号概率密度','标准正态分布曲线',1);%***************************************************%采用xcorr函数的有偏估计来估计Y中数据的前100个自相关序列,%用Plot函数画出该自相关序列,与理想的高斯白噪声的自相关序列相比。%***************************************************[R_signal,lag_s]=xcorr(Y,100,'coeff');idea=randn(1000000,1);%理想高斯白噪声,[R_gaus,lag_g]=xcorr(idea,100,'coeff');%R_gaus=[zeros(1,N/2),1,zeros(1,N/2)];n=1:100;figure(2)subplot(2,2,1)plot(lag_s,R_signal,'r--',lag_g,R_gaus,'b');title('N=1000自相关函数对比');legend('实际','理想',1);%***************************************************%把这组数据分成互不重叠的10段,每段有100个样本,%分别对每段数据采用b中的方法来估计前100个样本自相关序列,然后对10段的自相关序列进行平均%***************************************************R10_signal=zeros(199,1);fori=0:9;%用循环实现10段自相关序列的平均[R10_temp,lag_s10]=xcorr(Y(1+i*100:100+i*100),99,'coeff');R10_signal=R10_signal+R10_temp;endR10_signal=R10_signal/10;%归一化subplot(2,2,2)plot(lag_s10,R10_signal,'r--',lag_g,R_gaus,'b');title('N=1000样本10段平均自相关函数对比');legend('实际','理想',1);%***************************************************%把b中的样本数扩大到10000个,重复实验b中的要求%***************************************************N=10000;%扩大样本数Y=randn(N,1);[R_signal,lag_s]=xcorr(Y,100,'coeff');%idea=randn(1000*N,1);%理想高斯白噪声,%[R_gaus,lag_g]=xcorr(idea,100,'coeff');n=1:100;subplot(2,2,3)plot(lag_s,R_signal,'r--',lag_g,R_gaus,'b');title('N=10000自相关函数对比');legend('实际','理想',1);实验2clc;clearall;closeall;%***************************************************%令a(1)=0,a(2)=-0.81,b(0)=1,生成x(n)的128个样本值%***************************************************A=[100.81];B=[1];N=128;%样本数vn=randn(N,1);xn=filter(B,A,vn);%用滤波器函数生成xn的128个样本值figure;subplot(2,2,1)plot(xn);title('用滤波器函数生成xn的128个样本值');%***************************************************%在理论上计算真实的自相关序列,并与xcorr计算的样本自相关序列相比%***************************************************[rx_corr,lags]=xcorr(xn,'coeff');%用xcorr函数计算样本自相关序列subplot(2,2,2)stem(lags,rx_corr.^2);holdon;vn=randn(N*10000,1);yn=filter(B,A,vn);[R_signal,lag_s]=xcorr(yn,'coeff');%同理用xcorr函数计算理论上真实的自相关序列plot(lag_s,R_signal.^2,'r--');title('理论自相关与样本自相关');%***************************************************%对估计的自相关序列采用fft来计算功率谱,画出功率谱%***************************************************X=fft(rx_corr);%对估计的自相关序列采用fft计算其功率谱并画出功率谱w=((1:N)-N/2)/N;subplot(2,2,3)plot(w,(abs(fftshift(fft(xn,N)))).^2);title('估计自相关的功率