今天同学上课要对一段信号,添加噪声,然后对函数进行相关分析。我写了个如下代码
close all;
x = 0:2*pi/299:2*pi;
k = sin(x);
subplot(2,4,1),plot(x,k),title( ' 原函数 ' );
把原函数设置为sinx`
然后添加0·1之间的随机噪声,并显示均值
y=rand(1,300) ; %创建一个由随机数组成的 1×300 向量。
y=y+k;
e=sum(y)/300;
subplot(2,4,2),plot(x,y,[0,2*pi],[e,e]),title( '添加噪声后原函数 ' );
然后我们画出概率密度直方图,分成20等分,计算每一部分数量
ymin=min(y); %设置y的范围
ymax=max(y);
x=linspace(ymin,ymax,20); %将最大最小区间分成20个等分点(19等分),然后分别计算各个区间的个数
yy=hist(y,x); %计算各个区间的个数
yy=yy/length(y); %计算各个区间的概率
subplot(2,4,3),bar(x,yy) ,title( '概率密度直方图分布图 ' );
grid on;%画出概率密度直方图分布图
然后我们对原图像20等分后的图形进行积分,得到概率密度函数
s=0;
for i=2:length(x)
b=trapz(x([1:i]),yy([1:i])); %根据 X 指定的坐标或标量间距对 Y 进行积分。
s=[s,b]; %将s的值每次加b,以矩阵形式存储
end
subplot(2,4,4),plot(x,s,x,s,'*'),title( ' 概率密度函数' ) %x,s画出函数,x,s,'*'标出每一份特殊点,
然后使用相应得自相关,协方差,功率谱密度函数对函数进行分析,xcorr,xcov,pwelch用法见matlab doc
[c,n]=xcorr(y,10, 'coeff' ); %自相关函数
subplot(2,4,5),plot(n,c),title( ' 自相关函数 ' ),grid on
[b,m]=xcov(y,10, 'coeff' ); %协方差函数
subplot(2,4,6),plot(m,b),title( ' 协方差函数 ' ),grid on
subplot(2,4,7),pwelch(y,33,32,[],500),title( ' 功率谱密度函数 ' ),grid on
然后结果如下,学习观看~