通信原理MATLAB相关函数的用途及部分实现
MATLAB自相关函数介绍
Matlab提供了计算互相关和自相关的函数xcorr函数
1.使用方法
c = xcorr(x,y)
c = xcorr(x)
c = xcorr(x,y,‘option’)
c = xcorr(x,‘option’)
c = xcorr(x,y,maxlags)
c = xcorr(x,maxlags)
c =
xcorr(x,y,maxlags,‘option’)
c =
xcorr(x,maxlags,‘option’)
[c,lags] = xcorr(…)
其中option为:
"biased"为有偏的互相关函数估计;
"unbiased"为无偏的互相关函数估计;
"coeff"为0延时的正规化序列的自相关计算;
"none"为原始的互相关计算
2.特别的:
c=
xcorr(x,‘option’)特指以上某个选项的自相关估计。
c = xcorr(x,y,maxlags)
返回一个延迟范围在[-maxlags,maxlags]的互相关函数序列,输出c的程度为2maxlags+1.
c = xcorr(x,maxlags)
返回一个延迟范围在[-maxlags,maxlags]的自相关函数序列,输出c的程度为2maxlags+1.
c = xcorr(x,y,maxlags,‘option’)
同时指定maxlags和option的互相关计算.
c = xcorr(x,maxlags,‘option’)
同时指定maxlags和option的自相关计算.
此部分转自
https://blog.csdn.net/lvsehaiyang1993/article/details/82913443?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.add_param_isCf
MATLAB功能代码实现
t=0:0.1:100;
noise=rand(1,1001);
input=sin(pit);
output=sin(pit)+oise;%添加大噪声
plot(output);
可以看到噪声信号已经淹没了输入信号
[x y]=xcorr(input,output,‘coeff’);%计算互相关性,存至数组
plot(y,x);%绘制互相关运算结果
这里得到了输出信号和输入信号的自相关函数,方便起见,假设此系统输入输出相等
[X Y]=xcorr(input,input,‘coeff’);%计算输入信号自相关函数
plot(Y,X);%绘制自相关运算结果
可以看到这个是标准的自相关函数求解结果
[a b]=xcorr(input,noise,‘coeff’);%计算输入与噪声互相关的结果
plot(b,a);%绘制互相关运算结果
可以看到经过一个互相关器运算,得到的增益是很小的,系统可以判断出两个信号相关性很差
试着继续加大噪声增益
output=sin(pit)+4noise;%添加大噪声
plot(output);
[x y]=xcorr(input,output,‘coeff’);%计算互相关性,存至数组
plot(y,x);%绘制互相关运算结果
可以看见随着噪声比例的增加,输出经过互相关器之后的运算结果有了明显的衰减
总结
通过相关运算可以很好的甄别有用信号,或者是延时信号,如果发现互相关结果出现明显衰减(本例均采用归一化手段了),就要注意对有用信号提供一定增益了,因为噪声以白噪声居多,频率含量丰富,有用信号也许就难以通过相关或者FFT手段提取了。
作者功力有限,字句、原理描述难免出现纰漏,若各位看官发现还请予以指正!