#信号的相关运算及在单片机程序运用中算法分析
### 相关函数是鉴别信号的有力工具,被广泛应用于雷达回波的识别,通信同步信号的识别等领域。相关是一种与卷积类似的运算。与卷积不同的是没有一个函数的反转。
**目录 (Table of Contents)**
[TOCM]
# 互相关运算
#### 互相关函数给出了在频域内两个信号是否相关的一个判断指标,把两测点之间信号的互谱与各自的自谱联系了起来。它能用来确定输出信号有多大程度来自输入信号,对修正测量中接入噪声源而产生的误差非常有效。
#### 互相关是表示两个不同函数的相似性参数。可证明,R12(τ)=R21(–τ)。
#### 相关与卷积的关系如下:
#### R12(t)= f1(t)* f2(–t)
#### R21(t) = f1(–t)* f2(t)
#### 若f1(t)和 f2(t)均为实偶函数,则卷积与相关完全相同。
#### 在单片机中处理的信号为数字信号,所以从离散的角度来讲就涉及到卷积和。已知定义在区间( – ∞,∞)上的两个函数f1(k)和f2(k),则定义和
#### 为f1(k)与f2(k)的卷积和。下面借助MATLAB工具来定性感受一下。 matlab中的参数都是以数组的形式存储的,标量可以看作是一维数组。
```
x1=[1 1.5 2]; %离散数据一
x2=[1 1 1]; % 离散数据二
[a,b] = xcorr(x1,x2);% 两个数据求互相关
a
a =
1.0000 2.5000 4.5000 3.5000 2.0000
b
b =
-2 -1 0 1 2
```
#### a、b的结果大家应该不会困惑吧,结果就是卷积求得的结果,在此处a、b可以看成数组,我给大家举个例子:
#### 其他的结果大家可以依次类推。
# 自相关运算
#### 自相关函数是描述随机信号X(t)在任意两个不同时刻t1,t2的取值之间的相关程度;若互相关函数中f1(t)= f2(t) = f(t),则得自相关函数。
####显然,R(-τ)= R(τ)偶函数。
```
%%%%%互相关运算%%%%%%
>> x = [1 3 5];
>> [a,b] = xcorr(x)
a =
5 18 35 18 5
b =
-2 -1 0 1 2
```
```
t=0:100;% 时间
x=cos(t);% 信号
[a,b]=xcorr(x,'unbiased');
plot(b,a)
```
#### 生成图像如下所示:
#### 参数'unbiased'的作用在于基于缺省参数时的计算结果,每个组的计算再除上该组的序号组数,比如b(1)时组数为1,记为N=1,则a(1)=1*5/N=5;b(2)时就是a(2)=18/N=18/2=9;类似等等;
```
t=0:100;% 时间
x=cos(t);% 信号
[a,b]=xcorr(x,'biased');
plot(b,a)
```
#### 参数'biased'的作用在于缺省参数的基础上除以序列x的长度,即a(1)=5/3;
```
t=0:100;% 时间
x=cos(t);% 信号
[a,b]=xcorr(x,'coeff');
plot(b,a)
```
#### 此时用于求序列x的自相关序列,其结果是针对'biased'的情况进行归一化,使得b=0时即中间的值a(3)=1,因此a(1)=5/11.6667,所有的分组数据在'biased'基础上都通过11.6667归一运算。
# 不进位乘法求卷积和
#### 实际在单片机中要处理的为2048个长度的Chirp信号,对有限长序列,卷积和的计算用:不进位乘法。不进位乘法的算法思想是这样的,对于两个序列,将两序列样值以各自k的最高值按右端对齐,然后把逐个样值对应相乘,但不进位,最后把同一列上的乘积值按对位求和。例如:
# 总结