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 14.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),输出对输入的相位差。
? ? ? ? ? ? ? ? ?
clc clear close all
data=load('test1.txt'); figure(1)
plot(data(:,1),data(:,2),'r',data(:,1),data(:,3),'b'); legend('信号1','信号2'); grid
?? %求付利叶变换
?? frequency=1000*(0:512)/1024; % 实际频率点 ?? fftdata=fft(data); %付利叶变换 ?? sinfft=fftdata(1:513,2); ?? cosfft=fftdata(1:513,3); ??
?? %求能量最大点
?? [fz1,f1]=max(abs(sinfft)); ?? [fz2,f2]=max(abs(cosfft)); ??
?? % 求两信号能量最大点的频率
?? sin_frequency = frequency(f1); %得到实际频率 ?? cos_frequency = frequency(f2); ??
?? % 求两信号能量最大点的相位 ?? phase1=phase(sinfft(f1))*57.3; ?? phase2=phase(cosfft(f1))*57.3; ??
?? fprintf('信号1频率=%fHz\\n信号2频率=%fHz\\n',sin_frequency,cos_frequency); ?? fprintf('信号2比信号1幅值衰减=%f db\\n',20*log10(fz2/fz1)); ?? fprintf('信号2比信号1相位差=%f度\\n',phase1-phase2); 复制代码
运行结果如下
?? 信号1频率=2.929688Hz ?? 信号2频率=2.929688Hz
?? 信号2比信号1幅值衰减=0.186946 db ?? 信号2比信号1相位差=-89.435683度 复制代码
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库matlab中自相关函数xcorr在线全文阅读。
相关推荐: