kalman滤波和数字低通滤波

合集下载

卡尔曼滤波器分类及基本公式

卡尔曼滤波器分类及基本公式

以 时刻的最优估计 为准,预测 时刻的状态变量 ,同时又对该状态进行观测,得到观测变量 ,再在预测与观测之间进行分析,或者说是以观测量对预测量进行修正,从而得到 时刻的最优状态估计 。
卡尔曼滤波思想
卡尔曼滤波的由来
卡尔曼滤波的由来
卡尔曼滤波理论作为最优估计的一种,它的创立是科学技术和社会需要发展到一定程度的必然结果。在1795年,高斯为测定行星运动轨道而提出最小二乘估计法。为了解决火力控制系统精度跟踪问题,维纳于1942年提出了维纳滤波理论,利用有用信号和干扰信号的功率谱确定线性滤波器的频率特性,首次将数理统计理论与线性理论有机的联系在一起,形成了对随机信号做平滑、估计或者预测的最优估计新理论。但是采用频域设计法是造成维纳滤波器设计困难的根本原因。于是,人们逐渐转向寻求在时域内直接设计最优滤波器的方法,而卡尔曼研究的卡尔曼滤波理论很好的解决了这个问题
卡尔曼滤波的基本方程
例子
卡尔曼滤波的基本方程
现在,我们用于估算K时刻房间的实际温度有两个温度值:估计值23度和测量值25度。究竟实际温度是多少呢?是相信自己还是相信温度计?究竟相信谁多一点?我们需要用他们的均方误差来判断。因为, (*公式三),所以我们可以估算出K时刻的最优温度值为: 度(*公式四)。 得到了K时刻的最优温度,下一步就是对K+1时刻的温度值进行最优估算,需要得到K时刻的最优温度(24.56)的偏差,算法如下: (*公式五) 就这样,卡尔曼滤波器就不断的把均方误差递归,从而估算出最优的温度值,运行速度快,且只保留上一时刻的协方差。
卡尔曼滤波的由来
卡尔曼,全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们在现代控制理论中要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。

卡尔曼滤波

卡尔曼滤波

受噪声干扰的状态量是个随机量, 受噪声干扰的状态量是个随机量,不可 能测得精确值,但可对它进行一系列观测, 能测得精确值,但可对它进行一系列观测, 并依据一组观测值, 并依据一组观测值,按某种统计观点对它进 行估计。使估计值尽可能准确地接近真实值, 行估计。使估计值尽可能准确地接近真实值, 这就是最优估计。 这就是最优估计。真实值与估计值之差称为 估计误差。 估计误差。若估计值的数学期望与真实值相 等,这种估计称为无偏估计。 这种估计称为无偏估计。
卡尔曼滤波是以最小均方误差为估计的 最佳准则,来寻求一套递推估计的算法, 最佳准则,来寻求一套递推估计的算法,其 基本思想是: 基本思想是:采用信号与噪声的状态空间模 型,利用前一时刻的估计值和现时刻的观测 值来更新对状态变量的估计, 值来更新对状态变量的估计,求出现在时刻 的估计值。它适合于实时处理和计算机运算。 的估计值。它适合于实时处理和计算机运算。
2.为什么要用状态估计理论
在许多实际问题中,由于随机过程的存在, 在许多实际问题中,由于随机过程的存在,常 常不能直接获得系统的状态参数, 常不能直接获得系统的状态参数,需要从夹杂着随 机干扰的观测信号中分离出系统的状态参数。例如, 机干扰的观测信号中分离出系统的状态参数。例如, 飞机在飞行过程中所处的位置、速度等状态参数需 飞机在飞行过程中所处的位置、 要通过雷达或其它测量装置进行观测, 要通过雷达或其它测量装置进行观测,而雷达等测 量装置也存在随机干扰,因此在观测到飞机的位置、 量装置也存在随机干扰,因此在观测到飞机的位置、 速度等信号中就夹杂着随机干扰, 速度等信号中就夹杂着随机干扰,要想正确地得到 飞机的状态参数是不可能的, 飞机的状态参数是不可能的,只能根据观测到的信 号来估计和预测飞机的状态,这就是估计问题。 号来估计和预测飞机的状态,这就是估计问题。

卡尔曼滤波器介绍

卡尔曼滤波器介绍

卡尔曼滤波器介绍摘要在1960年,发表了关于递归解决线性离散数据滤波器的闻名论文,从那时刻起,由于在数字计算的大部份提高,Kalman滤波器已成为普遍研究和应用的学科,尤其是自动或辅助导航系统。

Kalman滤波器是一套数学等式,它提供了一种有效的以最小均方误差来估量系统状态的计算(递归的)方式。

它在以下几方面是超级壮大的:它支持过去、此刻、乃至以后估量,乃至在系统准确模型也未知的情形下。

本文的目的是提供一种对离散的Kalman滤波器的有效介绍。

这些介绍包括对大体离散kalman滤波器、起源和与之相关的简单(有形)的带有真实数字和结果的描述和讨论。

1、离散的kalman滤波器在1960年,发表了关于递归解决线性离散数据滤波器的闻名论文,从那时刻起,由于在数字计算的大部份提高,Kalman滤波器已成为普遍研究和应用的学科,尤其是自动或辅助导航系统。

关于kalman滤波器一样方式的友好介绍能够在〔maybeck79〕的中找到,可是更完整部份的讨论能在〔Sorenson70〕中发觉,它还包括许多有趣的历史说明。

在〔Gel b74;Grewal93;Maybeck79;Lewis86;Brown92;jacobs93〕中有更多参考。

估值进程Kalman滤波器解决估量离散时刻操纵进程的状态X∈R n的一样性问题,概念线性随机差分方程其中,测量值Z∈R m,概念为随机变量W K和V K各自表示系统噪声和测量噪声,咱们假定它们为彼此独立的、白噪声且为正常概率散布在实际中,系统噪声协方差矩阵Q和测量噪声协方差矩阵R可能随进程和测量时刻而改变,不管如何,咱们在那个地址假定它们是常量。

在差分方程()中,n×n阶矩阵A与前一时刻(K-1)和当前时刻K相关,那个地址缺少传递函数或系统噪声。

注意的是,在实际中,A可能随各自时刻改变,但那个地址咱们假定其为常量,n×l阶矩阵R与非强制性输入U∈R l和状态x有关,在测量公式()中,m×n阶矩阵H与状态及测量值Z K有关,在实际中,H可能随各自进程或测量时刻而改变,那个地址假定它们是常数。

第三章卡尔曼(Kalman)滤波

第三章卡尔曼(Kalman)滤波

引入
在讨论维纳滤波时,提出一个基本概念: 任何具有有理功率谱密度的随机信号都可看作 是白色噪声通过一个线性网络所形成。 由此得到维纳滤波器的信号模型
w(n)
s(n)
A(z)
v(n)
w(n)
s(n)
x(n)
A(z)
w(n)
B(z)
x(n)
为了得到卡尔曼过滤的信号模型,必须 首先讨论状态方程和量测方程。
当已知初始状态x(0)、激励e j以及A与B矩阵,
即可求得x(k )。。
如果用k0表示起始点的k值从x(k )开始递推,从而有
k 1
x(k) k,k0x(k0 ) k, j1Be( j) j k0
k0 0:表示从初始状态x(0)开始递推。
k ,k 0:代表从k0状态到k 状态的转移矩阵。
在卡尔曼滤波中: 希望得到xk的估计值xˆk与xk间 最小均方误差。有了xˆk也就得到了sˆk。
提问:sk 和xk的关系?
来估计信号的当前值 以均方误差最小条件下求解 系统的传递函数H(z)或单位冲激响应h(
只根据前一个估计值 xˆk -1 和最近一个观察数据 yk 来估计信号的当前值 它是用状态空间法描述系统, 即由状态方程和量测方程组成。
解是以估计值(是状态变量的估计值)的形式给出的
第三章 卡尔曼(Kalman)滤波
第一节 引言
卡尔曼生平
卡尔曼全名Rudolf Emil Kalman,匈 牙利数学家,1930年出生于匈牙利 首都布达佩斯。1953,1954年于麻 省理工学院分别获得电机工程学士 及硕士学位。1957年于哥伦比亚大 学获得博士学位。我们在现代控制 理论中要学习的卡尔曼滤波器,正 是源于他的博士论文和1960年发表 的论文《A New Approach to Linear Filtering and Prediction Problems》 (线性滤波与预测问题的新方法)。

十大滤波算法

十大滤波算法

十大滤波算法滤波算法是信号处理中一种重要的算法,它可以有效地去除信号中的噪声,提高信号的质量。

在现在的技术发展中,滤波算法的应用越来越广泛,它可以用于多媒体信号处理、数据通信、图像处理等领域。

目前,最常用的滤波算法有十种。

首先,最基本的滤波算法就是低通滤波(Low Pass Filter,LPF),它的主要作用是抑制高频信号,使低频信号得以保留。

低通滤波是最常用的滤波算法之一,用于去除信号中的高频噪声。

其次,高通滤波(High Pass Filter,HPF)是低通滤波的反向过程,它的主要作用是抑制低频信号,使高频信号得以保留。

高通滤波也是常用的滤波算法之一,用于去除信号中的低频噪声。

再次,带通滤波(Band Pass Filter,BPF)是低通滤波和高通滤波的结合,它的主要作用是筛选出特定的频率段,使特定频率段的信号得以保留。

带通滤波可以用于信号提取,电路增强或其他应用。

第四,带阻滤波(Band Stop Filter,BSF)是带通滤波的反向过程,它的主要作用是抑制特定的频率段,使特定频率段的信号得以抑制。

它可以用于信号抑制,抑制特定频率段的噪声。

第五,振荡器滤波(Oscillator Filter,OF)是一种由振荡器组成的滤波算法,它的主要作用是产生稳定的低频信号,用于抑制高频噪声。

振荡器滤波器是在电路中比较常用的滤波算法,它用于去除信号中的高频噪声。

第六,改正型滤波(Adaptive Filter,AF)是一种根据输入信号的变化而调整滤波系数的滤波算法,它的主要作用是根据实时输入信号的变化而调整滤波系数,实现鲁棒性滤波。

改正型滤波是一种比较高级的滤波算法,它可以有效地抑制噪声,提高信号的质量。

第七,采样滤波(Sampling Filter,SF)是一种用于数字信号处理的滤波算法,它的主要作用是抑制采样频率之外的频率,使采样频率内的信号得以保留。

采样滤波是在数字信号处理中常用的滤波算法,它可以有效地抑制采样频率外的噪声,提高信号的质量。

Kalman滤波原理及算法

Kalman滤波原理及算法

Kalman滤波原理及算法kalman滤波器一(什么是卡尔曼滤波器卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯, 我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。

二.卡尔曼滤波器算法的介绍以下是卡尔曼滤波器核心的5个式子。

X(k|k-1)=A X(k-1|k-1)+B U(k) (1)P(k|k-1)=A P(k-1|k-1) A’+Q (2)X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) (3)Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) (4)P(k|k)=(I-Kg(k) H)P(k|k-1) (5)下面我们详细介绍卡尔曼滤波的过程。

首先,我们要引入一个离散控制过程的系统。

该系统可用一个线性随机微分方程来描述:X(k)=A X(k-1)+B U(k)+W(k)再加上系统的测量值:Z(k)=H X(k)+V(k)上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。

A和B是系统参数,对于多模型系统,他们为矩阵。

Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。

W(k)和V(k)分别表示过程和测量的噪声。

他们被假设成高斯白噪声(White Gaussian Noise),他们的covariance分别是Q,R(这里我们假设他们不随系统状态变化而变化)。

对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。

下面我们来用他们结合他们的covariances来估算系统的最优化输出。

首先我们要利用系统的过程模型,来预测下一状态的系统。

kalman滤波和数字低通滤波

kalman滤波和数字低通滤波

Kalman滤波和数字滤波一、kalman滤波卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。

采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。

它适合于实时处理和计算机运算。

其他的就不介绍了。

公式简介卡尔曼滤波主要是由5个经典公式组成:X(k|k-1)=A X(k-1|k-1)+B U(k) (1)式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。

到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的协方差还没更新。

我们用P表示协方差:P(k|k-1)=A P(k-1|k-1) A’+Q (2)式(2)中,P(k|k-1)是X(k|k-1)对应的协方差,P(k-1|k-1)是X(k-1|k-1)对应的协方差,A’表示A的转置矩阵,Q是系统过程的协方差。

式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。

现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。

结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) (3)其中Kg为卡尔曼增益(Kalman Gain):Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) (4)到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。

但是为了要令卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的协方差:P(k|k)=(I-Kg(k) H)P(k|k-1) (5)其中I 为1的矩阵,对于单模型单测量,I=1。

当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。

第三章卡尔曼(Kalman)滤波

第三章卡尔曼(Kalman)滤波
k , k 0 : 代 表 从 k 0 状 态 到 k 状 态 的 转 移 矩 阵 。
如 果 k 0 k 1 , 就 得 到 一 步 递 推 公 式 : x ( k ) k , k 1 x ( k 1 ) ( 0 ) B e ( k 1 ) 由 于 ( 0 ) A 0 I , 代 入 上 式 , 得 :
总结
状态方程的核心是:设置状态变量, 状态变量是网络内部(最少的)节点变量, 一般设在延迟支路的输出端,状态方程刻 画了状态变量下一时刻的取值与当前时刻的 状态变量和输入之间的关系。
x ( k 1 ) A x ( k ) B e ( k ) 一步递推状态方程: x(k)A(k)x(k1)w(k-1)
上 式 中 Ak、 Ck已 知 , yk是 观 测 到 的 数 据 , 也 已 知 , 假 设 信 号 的 上 一 个 估 计 值 x ˆk1已 知 , 求 当 前 时 刻 的 估 计 值 x ˆk。
解:(1)假设上式中忽略wk-1、k,可立即求得xk。
用xˆk' 和yˆk' 分别表示: xˆk' Ak xˆk1, yˆk'=Ck xˆk' =Ck Ak xˆk1 显然:观测值yk和估计值yˆk' 之间有误差, 它们之间的误差是由于
x ( k ) k ,k 1 x ( k 1 ) B e ( k 1 )
假 设 激 励 源 为 白 噪 声 , 即 B e(k 1 )= w (k-1 ) 称 为 系 统 动 态 噪 声 , 而 系 统 是 时 变 的 , 即 k,k1= A(k) 其 中 A(k)为 状 态 变 量 之 间 的 增 益 矩 阵 , 可 以 随 时 间 发 生 变 化 ;
sk ckxk
信 号 s k 表 示 为 状 态 变 量 x k 的 线 性 组 合 。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Kalman滤波和数字滤波一、kalman滤波卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。

采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。

它适合于实时处理和计算机运算。

其他的就不介绍了。

公式简介卡尔曼滤波主要是由5个经典公式组成:X(k|k-1)=A X(k-1|k-1)+B U(k) (1)式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。

到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的协方差还没更新。

我们用P表示协方差:P(k|k-1)=A P(k-1|k-1) A’+Q (2)式(2)中,P(k|k-1)是X(k|k-1)对应的协方差,P(k-1|k-1)是X(k-1|k-1)对应的协方差,A’表示A的转置矩阵,Q是系统过程的协方差。

式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。

现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。

结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) (3)其中Kg为卡尔曼增益(Kalman Gain):Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) (4)到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。

但是为了要令卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的协方差:P(k|k)=(I-Kg(k) H)P(k|k-1) (5)其中I 为1的矩阵,对于单模型单测量,I=1。

当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。

这样,算法就可以自回归的运算下去。

参数整定卡尔曼滤波参数的调整:其参数有三个,P0是初始化最优角度估计的协方差(初始化最优角度估计可设为零),它是一个初值。

Q是预测值的协方差,R是测量值的协方差。

对Q 和R的设定只需记住,Q/(Q+R)的值就是卡尔曼增益的收敛值,比如其值为0.2,那么卡尔曼增益会向0.2收敛(对于0.2的含义解释一下,比如预测角度值是5度,角度测量值是10度,那么最优化角度为:5+0.2*(10-5)=6。

从这里可以看出,卡尔曼增益越小,说明预测值越可靠,最优化角度越接近预测值;相反的,卡尔曼增益越大,说明测量值越可靠,最优化角度越接近测量值)。

P/(Q+R)反映收敛的快慢程度,该值设定越小,收敛越快,该值越大,收敛越慢(这里的P是指初始最优角度值的协方差),因为卡尔曼增益收敛总的来说是很快的,所以该值设定大一点或小一点都没什么关系,并且卡尔曼滤波器对于预测系统的要求并不实现框图卡尔曼滤波参数的调整:其参数有三个,P0是初始化最优角度估计的协方差(初始化最优角度估计可设为零),它是一个初值。

Q是预测值的协方差,R是测量值的协方差。

对Q 和R的设定只需记住,Q/(Q+R)的值就是卡尔曼增益的收敛值,比如其值为0.2,那么卡尔曼增益会向0.2收敛(对于0.2的含义解释一下,比如预测角度值是5度,角度测量值是10度,那么最优化角度为:5+0.2*(10-5)=6。

从这里可以看出,卡尔曼增益越小,说明预测值越可靠,最优化角度越接近预测值;相反的,卡尔曼增益越大,说明测量值越可靠,最优化角度越接近测量值)。

P/(Q+R)反映收敛的快慢程度,该值设定越小,收敛越快,该值越大,收敛越慢(这里的P是指初始最优角度值的协方差),因为卡尔曼增益收敛总的来说是很快的,所以该值设定大一点或小一点都没什么关系,并且卡尔曼滤波器对于预测系统的要求并不高。

Q,R的确定测量噪声的协方差 R ,此为猜测值,因测量系统而定。

系统噪声 Q ,也是猜测值,预测模型越不准,Q 值应越大,预测模型越精确,Q值也越小。

在系统中为简便,Q、R常取定值。

在系统归一化单位之后,可以确知测量模型和预测模型的取值范围,进而也就可以大致知道Q、R的取值,然后在试验中反复调试,观测系统输出,寻求最佳值。

二、数字滤波数字滤波器和Matab数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。

离散傅里叶变换可以将抽样数字信号从时域转到频域,包括低通、高通、带通、带阻和全通等类型。

Matlab的信号处理工具箱的基本组成就是滤波器的设计与实现以及谱分析。

工具箱提供了丰富而简便的设计、实现FIR和IIR的方法,使原来繁琐的程序设计简化成函数调用,特别是滤波器的表达方式和形式之间的相互转换显得十分简便,为滤波器的设计和实现开辟了一片广阔的天地。

matlab常用函数(1)[N,wc]=buttord(wp,ws,wp,ws)用于计算巴特沃斯数字滤波器的阶数N和3dB截止频率wc。

调用参数wp,ws分别为数字滤波器的通带、阻带截止频率的归一化值,要求:0≤wp≤1,0≤ws≤1。

1表示数字频率pi。

wp,ws分别为通带最大衰减和组带最小衰减(dB)。

当ws≤wp时,为高通滤波器;当wp和ws为二元矢量时,为带通或带阻滤波器,这时wc也是二元向量。

N,wc作为butter函数的调用参数。

(2)[b,a]=butter(N,wc,‘ftype’)计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。

调用参数N和wc分别为巴特沃斯数字滤波器的阶数和3dB截止频率的归一化值(关于pi归一化),一般是调用buttord(1)格式计算N和wc。

(3)FFT 功能:一维快速傅立叶变换(FFT)。

格式:y=fft(x);y=fft(x,n)。

说明:fft函数用于计算矢量或矩阵的离散傅立叶变换。

y=fft(x)利用肿算法计算矢量x的离散傅立叶变换,当x为矩阵时,y为矩阵x每一列的FFT。

当x长度为2的整数次幂时,fft采用基2FFT算法,否则采用稍慢的混合基算法。

y=fft(x,n)采用n点FFT。

当x长度小于n时,fft函数自动在x尾部补零,以构成n点数列;当x长度大于n时,fft截取x 的前面n点数据进行FFT。

(4)IFFT 功能:一维逆快速傅立叶变换(IFFT)格式:y=ifft(x);y=ifft(x,n)。

(5) filter 一维数字滤波器Y = filter(B,A,X) ,输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B 为分子, A为分母。

整个滤波过程是通过下面差分方程实现的: a(1)*y(n) = b(1)*x(n) +b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1) - ... - a(na+1)*y(n-na) [Y,Zf] = filter(B,A,X,Zi),输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母。

(6)fir1是用窗函数法设计线性相位RIRDF的工具箱函数,以实现线性相位FIRDF的标准窗函数法设计。

hn=fir1(M,wc,window),可以指定窗函数向量window。

默认为哈明窗。

例如,hn=fir1(M,wc,bartlett(M+1)),使用Bartlett窗设计。

hn=fir1(M,wc,blackman(M+1)),使用blackman窗设计。

hn=fir1(M,wc,'ftype',window),通过选择wc,ftype和window参数(含义同上),可以设计各种加窗滤波器。

(7 )AWGN:在某一信号中加入高斯白噪声 Y= awgn(x,SNR) 在信号x中加入高斯白噪声。

信噪比SNR以dB为单位。

x的强度假定为0dBW。

如果x是复数,就加入复噪声。

附录matlab代码clearclc% signal generate /realValuefs=500; %sampling frequencyN=256 ; % signal array numbern=0:N-1;t=n/fs ; % timer shaftf1=30; % signal frequencyrealValue = sin(2*f1*pi*t);H1=figure;subplot(2,2,1);plot(t,realValue,'k');ylabel('幅度');xlabel('时间/秒');title('真实信号');noise=randn(1,length(t));% measure value with noisemesr_value = awgn(realValue,4);% awgn(x,y) x为信号y为信噪比/dbsubplot(2,2,2);plot(t,realValue,'k',t,mesr_value,'r');ylabel('幅度');xlabel('时间/秒');title('测量信号');%-----------------------------------------% kalman filterR_error = mesr_value - realValue;q1 = 2*std(R_error);R_cov = q1.^2; % measure covarianceq2 = std(noise);Q_cov = q2.^2; % system covarianceklm_out(1)=0;predict_err(1)=0;value_err(1)=0;klm_gain(1)=0;for k=2:N;predict_err(k) = value_err(k-1) + Q_cov;klm_gain(k)= predict_err(k) / (predict_err(k) + R_cov);klm_out(k) = klm_out(k-1) + klm_gain(k) * (mesr_value(k) - klm_out(k-1));value_err(k) = predict_err(k) - predict_err(k) * klm_gain(k);endsubplot(2,2,3);plot(t,realValue,'k',t,klm_out,'b');ylabel('幅度');xlabel('时间/秒');title('卡尔曼滤出信号');% FourierRs=0.05; % 各带纹波系数fcuts=[0 10 70 100]; % 带通滤波器上下截止频率/Hza=[0 1 0];dev=Rs*ones(1,length(a));% 选用凯泽窗[M,wc,beta,ftype]=kaiserord(fcuts,a,dev,fs);M=mod(M,2)+M; % 滤波器阶数window = Kaiser(M+1,beta);% 创建滤波器filter_coefficient = fir1(M,wc,ftype,window);% filtersigfilter = filter(filter_coefficient,1,mesr_value);subplot(2,2,4);plot(t,realValue,'k',t,sigfilter,'g');ylabel('幅度');xlabel('时间/秒');title('带通滤出信号');[amplt,sf]=freqz(filter_coefficient,1,N); %滤波器的幅频特性%[H,W]=freqz(B,A,N)当N是一个整数时函数返回N点的频率向量和幅频响应向量fft_sig = fft(mesr_value,N);fft_signal = abs(fft_sig);H2=figure;subplot(1,2,1);f=fs/N*(1:N/2);plot(f,fft_signal(1:N/2));ylabel('幅度');xlabel('频率/赫兹');title('信号频谱');subplot(1,2,2);plot(sf*fs/(2*pi),20*log10(abs(amplt))); ylabel('增益/分贝');xlabel('频率/赫兹'); title('带通滤波器增益响应');。

相关文档
最新文档