matlab中自相关函数xcorr
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab中自相关函数xcorr
1、介绍一下MATLAB函数xcorr的使用
2、自相关是什么意思
3、两个数相关为什么是两个数的乘积
xcorr(2,2)=4 %???
给几个简单例子讲解一下
自相关函数是描述随机信号X(t)在任意两个不同时刻t1,t2的取值之间的相关程度.设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积.
给个例子:
dt=.1;
t=[0:dt:100];
x=cos(t);
[a,b]=xcorr(x,'unbiased');
plot(b*dt,a)
上面代码是求自相关函数并作图,
matlab中查看帮助时,
help xcorr 解释其意思是:
C(m) = E[A(n+m)*conj(B(n))] = E[A(n)*conj(B(n-m))];
但是,在调用xcorr函数求自相关时,有scaleopt参数
r=xcorr(s,SCALEOPT)
SCALEOPT有
'biased' - scales the raw cross-correlation by 1/M.
'unbiased' - scales the raw correlation by 1/(M-abs(lags)).
'coeff' - normalizes the sequence so that the auto-correlations
at zero lag are identically 1.0.
'none' - no scaling (this is the default).
注意观察下面的测试:
s = [1 2 3]
r = xcorr(s);
r =
3.0000 8.0000 1
4.0000 8.0000 3.0000
当用r=xcorr(s,'unbiased')时就能得到
r =3.0000 4.0000 4.6667 4.0000 3.0000
Fft
历程主要内容(signal_analyzer.rar)如下:
test1.txt 第一列为时间t,0.001s为步长;第二列为系统的输入信号;第三列为系统的输出信号。
signal_analyzer.m首先将test1.txt 的数据读入workspace,然后进行FFT,分析出两信号的频率,输出对于输入的幅值衰减(db),输出对输入的相位差。
1clc
2clear
3close all
4data=load('test1.txt');
5figure(1)
6plot(data(:,1),data(:,2),'r',data(:,1),data(:,3),'b');
7legend('信号1','信号2');
8grid
9
10%求付利叶变换
11frequency=1000*(0:512)/1024; % 实际频率点
12fftdata=fft(data); %付利叶变换
13sinfft=fftdata(1:513,2);
14cosfft=fftdata(1:513,3);
15
16%求能量最大点
17[fz1,f1]=max(abs(sinfft));
18[fz2,f2]=max(abs(cosfft));
19
20% 求两信号能量最大点的频率
21sin_frequency = frequency(f1); %得到实际频率
22cos_frequency = frequency(f2);
23
24% 求两信号能量最大点的相位
25phase1=phase(sinfft(f1))*57.3;
26phase2=phase(cosfft(f1))*57.3;
27
28fprintf('信号1频率=%fHz\n信号2频率=%fHz\n',sin_frequency,cos_frequency);
29fprintf('信号2比信号1幅值衰减=%f db\n',20*log10(fz2/fz1));
30fprintf('信号2比信号1相位差=%f度\n',phase1-phase2);
复制代码
运行结果如下
31信号1频率=2.929688Hz
32信号2频率=2.929688Hz
33信号2比信号1幅值衰减=0.186946 db
34信号2比信号1相位差=-89.435683度
复制代码。