原文:http://blog.chinaunix.net/uid-26275986-id-4342906.html
最近因为工作的关系需要使用matlab作为数据统计的工具,其中一个关键是使用其自相关函数获得数据的估计。自己只在本科时候马马虎虎地学习了一点matlab,这次仗着有C/C++的基础迅速地过了一遍自己需要的matlab的语法,原来这门语言很像脚本啊,同Python一样都是弱类型的,语法也不严格。了解了语法大概后,立刻在Help?文档中查找xcorr函数,其介绍如下:
看上去语法也不难,直接运算不就好了么?可是运算出来的结果自己却搞不懂,因为自己没有多少统计的知识,于是又去巴拉数学的材料,想去搞明白xcorr函数的原理或公式。最后还是去matlab论坛找到了自己想找的答案,这里就来分析下matlab的互相关函数xcorr。
matlab中的参数都是以数组的形式存储的,标量可以看作是一维数组。我们采用序列x = [1, 3, 5]作为实验对象,经过xcorr()函数运算,分析结果:
1. xcorr()
点击(
此处
)折叠或打开
-
>
>
x
=
[
1 3 5
]
-
-
x
=
-
-
1 3 5
-
-
>
>
[
a
,
b
]
=
xcorr
(
x
)
-
-
a
=
-
-
5 18 35 18 5
-
-
-
b
=
-
-
-
2
-
1 0 1 2
-
-
>
>
也许你对这个结果感到困惑,不急,待我慢慢道来。计算时先进行b的计算,用序列x中的元素的序号互相做减法,可以得到的所有值的可能集合,按照从小到大顺序排列后就得到了b;然后分别根据序号的“差”的情况计算序列a:
当b(1)=-2时,只有数据(1, 5)作差可以得到,即序号1和序号3的差,因此计算a(1)=1*5=5;
当b(2)=-1时,涉及到了序号对应的(3, 1)和序号(5, 3),所以计算a(2)=3*1+5*3=18;
当b(3)=0时,涉及到了序号对应的(1, 1), (3, 3)和(5, 5),因此计算a(3)=1*1+3*3+5*5=35;
当b(4)=1时,涉及到了序号对应的(3, 1)和(5, 3),计算a(4)=3*1+5*3=18;
当b(5)=2时,涉及到了序号对应的(5, 1)(后面的数据的序号减去前面数据的序号正好为2),计算a(5)=5*1=5
2. xcorr(x, 'unbiased')
参数'unbiased'的作用在于基于缺省参数时的计算结果,每个组的计算再除上该组的序号组数,比如b(1)时组数为1,记为N=1,则a(1)=1*5/N=5;b(2)时就是a(2)=18/N=18/2=9;类似等等;
-
>
>
[
a
,
b
]
=
xcorr
(
x
,
'
unbiased
'
)
-
-
a
=
-
-
5
.
0000 9
.
0000 11
.
6667 9
.
0000 5
.
0000
-
-
-
b
=
-
-
-
2
-
1 0 1 2
-
-
>
>
3. xcorr(x, 'biased')
参数'biased'的作用在于缺省参数的基础上除以序列x的长度,即a(1)=5/3;比如:
-
>
>
[
a
,
b
]
=
xcorr
(
x
,
'
biased
'
)
-
-
a
=
-
-
1
.
6667 6
.
0000 11
.
6667 6
.
0000 1
.
6667
-
-
-
b
=
-
-
-
2
-
1 0 1 2
-
-
>
>
4. xcorr(x, 'coeff')
此时用于求序列x的自相关序列,其结果是针对'biased'的情况进行归一化,使得b=0时即中间的值a(3)=1,因此a(1)=5/11.6667,所有的分组数据在'biased'基础上都通过11.6667归一运算:
-
>
>
[
a
,
b
]
=
xcorr
(
x
,
'
coeff
'
)
-
-
a
=
-
-
0
.
1429 0
.
5143 1
.
0000 0
.
5143 0
.
1429
-
-
-
b
=
-
-
-
2
-
1 0 1 2
-
-
>
>
由于xcorr多用于工程上针对时间信号采样,但是计算时将采集到的数据一起送给matlab,因此matlab本身并不知道时间间隔,我们可以使用dt=0.1, t=b*dt,plot(t, a)进行作图,前半部分是超前,后半部分是滞后,如:
今天看了一下时间序列模型ARIMA模型,在对数据处理的时候,需要对其进行平稳性
检验
。
对序列的平稳性的
检验
有两种
检验
方法:一种是根据时序图和
自相关
图的特征作出判断的图
检验
,该方法操作简单,应用广泛,缺点是带有主观性;另一种是构造
检验
统计量进行的方法,目前最常用的方法是单位根
检验
,这个本文不作介绍。
对于时序图
检验
,根据平稳时间序列的均值和方差都为常数的性质,平稳序列的时序图显示该序列值始终在一个
本文首先研究了一种基于广义典型相关分析(CCA)的故障
检测
(FD)方法,旨在在可接受的误报率下最大限度地提高故障
检测
能力。更具体地说,生成两个残差信号,分别用于
检测
输入和输出子空间中的故障。两个残差信号的最小协方差是通过考虑输入和输出之间的相关性来实现的。考虑到广义CCA由于过程噪声的高斯假设而应用范围有限,提出了一种广义CCA与基于随机算法的阈值设置相结合的FD技术,并将其应用于高速列车的模拟牵引驱动控制系统。结果表明,与标准的广义CCAFD方法相比,所提方法能够显著提高
检测
性能。
对于微弱的周期信号,我们可以使用
自相关
检测
的方法来
检测
是否含有输入信号,因为是微弱信号,所以信噪比要比1小,这也噪声比信号来的大,噪声我是使用的是高斯白噪声来模拟,然后使用
matlab
仿真实现。
matlab
程序如下:
dt=0.01;
N=20;
SNR=0.001;%设置信噪比,因为是微弱信号,所以信噪比要设置为低于1
t=0:dt:N;
xt=cos(t);%这是周期的输入信号
yt=a...
前言略过介绍性的知识,直接怼重难点。1. 平稳性 Stationarity直观上看当数据没有明显的模式特征的话(趋势性、季节性),我们认为它是平稳的。定义上“平稳”指固定时间和位置的概率分布与所有时间和位置的概率分布相同的随机过程。其数学期望和方差这些参数也不随时间和位置变化。在时间序列预测的过程中,我们首先要判断数据是否具有平稳性。如果非平稳,除去趋势性和季节性的特征,使其达到平稳状态对于准确地...
有时候编程会为了一点小问题纠结半天。而这时就会发现网上寻找也是很艰难的,所以我写下来,希望帮助和我一样无助的人。
自相关函数
用于描绘信号和自己相关的程度,它是信号间隔的函数。比如间隔为0的时候,就是检查自己和自己相关的程度,由于自己和自己最相似,所以
自相关函数
最大。如果是周期信号,当时间间隔为周期的整数倍的时候,也达到峰值。
Matlab
中用于计算自
1. \(x(t)=sinc(10t),y(t)=rect(10t)\),利用
Matlab
求\(x(t),y(t)\)的
自相关函数
及互相关函数rect=@(x)(abs(s)<=0.5);//定义rect()矩形脉冲T=10;dt=0.001;t=[-T/2:dt:T/2];x=sinc(10*t);y=rect(10*t);//把信号写出来for itau=1:length(t)//$\t...
Matlab
中用于计算
自相关函数
的指令是
xco
rr
.比如矩阵A=[1 2 3];
xco
rr
(A)=3.0000 8.0000 14.0000 8.0000 3.0000
自相关函数
是信号间隔的函数,间隔有正负间隔,所以n个长度的信号,有2n-1个
自相关函数
值,分别描述的是不同信号间隔的相似程度。
比如,上面的矩阵,最后得到5个结果,其中第三个是自己和自己相乘,
写论文,用到了
自相关
(autoco
rr
elation)函数。在网上查了很多资料,对
自相关
有了一定的了解,但是都解释的不清楚,甚至有些混乱。既然实验采用的是
matlab
的autoco
rr
函数,那就深入研究一下它是怎么实现的。help autoco
rr
的描述是英文的,自己硬着头皮翻译了一遍,希望对用到
自相关
的同学有帮助。(只把需要用到的翻译了,其它的没用到,我也不懂)
AUTOCO
RR
MATLAB
学习笔记——
自相关
/互相关函数
xco
rr
使用介绍
原文链接:https://blog.csdn.net/lvsehaiyang1993/article/details/82913443
转载请附上原文出处链接
Matlab
提供了计算互相关和
自相关
的函数
xco
rr
函数
1.使用方法
c =
xco
rr
(x,y)
c =
xco
rr
(x)
c =
xco
rr
(x,y,‘op...
信号x(t)x(t)x(t)的
自相关函数
定义为
其中,T为信号x(t)x(t)x(t)的观测时间,Rx(τ)R_{x}(\tau)Rx(τ)描述了x(t)x(t)x(t)与x(t+τ)x(t+\tau)x(t+τ)或x(t−τ)x(t-\tau)x(t−τ)之间的相关性。
自相关函数
可以从被干扰的信号中找出周期成分。
xco
rr
的应用
MATLAB
中自带
自相关
变换的函数
xco
rr
(),其调用格式如下:
其中的’option’参数可选:
“biased”