文件交换
86下载
更新10月12日
没有许可
编者按:该文件被选为MATLAB中央本周精选受欢迎的文件20082009201020112012
当我第一次学习卡尔曼滤波时,我在这里的MATLAB中央文件交换中看到了许多高级信号处理提交,但我没有看到一个被大量评论的,基本的卡尔曼滤波出现,允许卡尔曼滤波器的新手学习如何创建它们。所以,一年后,我写了一个非常简单的,大量注释的离散过滤器。
迈克尔·克莱德(2021年)。学习卡尔曼滤波(//www.tianjin-qmedu.com/matlabcentral/fileexchange/5377-learning-the-kalman-filter), MATLAB中央文件交换。检索2021年4月1日.
8月30日2020
2020年4月16日
2019年11月6日
2019年10月8日
未定义的。该怎么办?
2019年10月3日
2019年8月9日
8月8日
2018年12月22日
2018年12月15日
2018年4月27日
2018年3月23日
非常感谢!
2018年2月23日
2017年11月14日
2017年6月23日
2017年6月8日
我不能在开始时运行文件,错误显示:脚本中的所有函数必须以“结束”关闭。在函数中,我很难理解if…其他的……为什么会有结局?有人能帮我吗?
4月15日2017
2017年1月28日
恕我直言,这个kalmanf(s)是错误的。应该如下所示。这产生了很好的结果。
函数s = kalmanf(s)%步骤1:计算卡尔曼增益因子:K = s.P*s.H'*inv(s.H*s.P*s.H'+s.R);%第二步:根据观察进行修正:s.x = s.x + K'*(s.z-s.H*s.x);%step3:更新错误s.P = s.P - K*s.H*s.P;返回
10月26日
我已经开始研究卡尔曼滤波在参数估计中的应用。我的问题有点奇怪:我们有一个简单的系统,有两种状态(x, y)和两种速率(K1, K2)。我们的方程是:
dx/dt = - K1*x + K2*ydy/dt = K1*x - K2*yZ (x) = * xZ (y) = b * y
我在寻找参数(a, b, K1, K2)还有Z(x)和Z(y)的实际数据点如何用卡尔曼滤波解决这个问题?
2016年8月16日
谢谢楼主分享!
2016年5月27日
你好,
我放入一个带有噪声的观察向量,我得到了一个错误信息:
未定义函数或变量z。
kalmanf错误(第150行)如果~ isfield(年代,“x”);s.x =南* z;结束
有人能帮帮我吗
2016年5月18日
2016年1月11日
这是试图在M-script中定义m -函数的常见错误。在这里看看解释:
http://uk.mathworks.com/matlabcentral/answers/18401-please-help-error-function-definitions-are-not-permitted-in-this-context
我猜您尝试做的只是取消注释示例代码并运行该文件。相反,在新脚本中复制/剪切并粘贴括号内的代码,并尝试运行该脚本。希望这能有所帮助!
2015年12月3
你好,我得到以下错误,谁能告诉我是什么问题?
错误:文件:kalmanf。m行:147列:1在此上下文中不允许函数定义。
11月17日
9月30日
拜托!给我一个卡尔曼夫函数的例子。
2015年4月23日
嘿,伙计们,我新matlab,我试图实现卡尔曼滤波器与正弦波是可能的?
2015年4月17日
第173行,文件kalmanf.m
s.P = s.A * s.P * s.A' + s.Q;
这是错误的,它应该是:
s.P = s.A * s.P * s.A' + s.B * s.Q * s.B';
这个例子也有误导性,参见Yi Cao(2008年1月25日)的评论,因为be不应该是= 0,而B应该是= 1。
2015年1月19日
2014年11月28日
谢谢,我喜欢
11月17日2014
非常有帮助
8月6日
2014年5月6日
Simulink中线性卡尔曼滤波的一个很好的补充:万博1manbetx//www.tianjin-qmedu.com/matlabcentral/fileexchange/46407-linear-kalman-filter-in-万博1manbetxsimulink
2014年4月23日
2014年1月31日
非常有用! !非常感谢。
2013年12月22日
如何查看文档
2013年11月21日
对于我们这些刚接触卡尔曼滤波的人来说,这是很好的资源。谢谢你!如果系统的状态是由向量而不是标量给出的呢?卡尔曼滤波在n维情况下是否有效?如果我想在一组数据上训练过滤器,然后把它应用到另一组数据上,我该怎么做呢?如果我的观察结果是两个或两个以上的信号加上噪声的总和呢?我如何“告诉”卡尔曼滤波器我想让它估计哪些信号?
8月26日2013
文档很好,易于理解。
2013年7月16日
非常好的实现。但是卡尔曼滤波块有一个小错误。在传播方程中,1/Z必须放在其他地方。我们有P(k+1) = ap (k)A' + q在这部分后面我们需要加上1/z得到P(k)
2013年4月9日
换句话说,如果它们存储在我的data.mat中,如何绘制它们的值?“情节”是否相同,而我必须使用循环“for”?直接问关于代码示例,它在这里我处理了几个小时。
我的情况:
>>清楚ss.x = 12;s.A = 1;>> s.Q = 2^2;s.H = 1;>> s.R = 2^2;s.B = 0;> s.u = 0;>> s.x = nan;>> s.P = nan;
>> s.z = [1 2 3 4 5 6 7 8 9 22 3 4 5 6 7 8 88];> > kalmanf(年代);
> >图等一下>>网格上> >赫兹=情节(s.z,“r”。)> >香港=情节(年代,b -)
使用绘图错误不可能从struct转换为double类型。
问题在哪里?
谢谢你
2013年2月12日
2013年2月7日
我是K滤波的新手,我不理解以下内容:协方差矩阵P似乎只是以下输入的函数:a(由系统定义),P(本身),Q(已知的P .噪声cov.)和H(典型的身份),而且卡尔曼增益K。K本身只是P, H和R(已知的m.噪声cov.)的函数。
除了P,在迭代过程中这些都没有被重新定义。那么协方差矩阵P的估计是如何与观测z联系起来的呢?这样做的结果似乎是卡尔曼增益在第三次或第四次迭代时激增,使输出反映了有噪声的输入。我认为这似乎也是Enver Bahar所注意到的。
2013年1月22日
实际上,我得到的错误s没有定义,我能做什么,这个例子给了我一个想法。
2012年7月9日
谢谢你Shamir Alavi。
【整改到上面的帖子】:sry, 's'不是测量数据。你的数据在这里输入“s.z”。
有一个错误
>> s = [1 2 3 4 5 6 7 8 9 22 3 4 5 6 7 8 88];
> > kalmanf(年代);未定义函数或变量z。
有人能解释一下为什么吗?
6月22日2012
你太棒了
2012年6月18日
2012年3月13日
有用且清晰的评论
2012年2月25日
谢谢,但是在运行这个演示时出现了一个错误。输入参数“s”未定义请帮帮我
2月17日2012
2012年2月11日
很好的解释. .真的很有帮助。
2011年8月5日
很好地记录。作为一个实践工程师,我永远不会使用所示的实现。这是卡尔曼滤波的标准协方差形式。在操作中,语句s.P = s.P - K*s.H*s.P;导致重大问题。s.P需要始终是正定的,但是四舍五入往往会违反这一假设,使卡尔曼滤波“爆炸”的时间或条件差的数据。
另一种方法是在平方根域中处理,其中P矩阵表示为P=Psr'*Psr。因此得到的矩阵必须总是正定的,没有这个问题。一个额外的优点是精度是在该领域的两倍处理,可以类似于输入数据分辨率,而不是提供相当精度的2倍位数。
有关更多信息,请参见'线性估计' Kailath, Sayed, Hassibi或“自适应滤波理论”海金
我认为应该总是在SR域进行过滤。如果下位数据复杂,处理分离的真实/图像数据也有优势。
2011年7月22日
漂亮的医生
2011年7月16日
好!
2011年6月27日
优秀的! !谢谢你! !
2011年6月2日
2011年5月25日
2011年4月10日
这和控制系统工具箱中的卡尔曼实现有什么区别?
2011年4月1日
2011年3月28日
2月22日2011
2011年1月15日
亲爱的Michael Kleder,谢谢你!
2010年11月24日
好
2010年11月22日
太爱你了,你的样本比那些专业人士写的书更有帮助。简单,直接。尤其是对初学者。
11月12日2010
10月25日2010
非常感谢你的解释。
但是,我有一个简单的问题,为什么当我们给出很高的测量噪声时,结果不会改变?在你的例子中,你给出的标准差是2,但当我把它设为1000时,它的估计是完美的。不应该改变吗?
有人能给我解释一下吗?非常感谢恩
9月24日2010
很好的注释,byt不幸的是,代码有几个地方是错误的。它绝对不会处理向量输入,如果没有提供一些定义为可选的输入,则会导致程序崩溃。对于一个在文件交换中排名靠前的文件,我的期望要高得多。
9月23日2010
太棒了!现在说得通多了。谢谢。
8月19日2010
非常清晰的KF的例子,但对于处理状态向量来说还不够普遍。例如,s.x = inv(s.H)*s.z;和s.P = inv(s.H)*s.R*inv(s.H’)在状态数和测量数不相同的情况下不能工作。
8月17日2010
8月11日2010
2010年7月21日
2010年7月12日
6月10日2010
非常好!
2010年6月9日
[续自上文]
不出所料,我的矩阵错了!
谢谢你举的例子!
我已经解决了这个问题,修改行为;
>> s.x = s.x + K' * (s.z-s.H*s.x);%加上K的转置
这是必要的,因为我的观察向量(z)是一个2X1矩阵(K也是,因此它们不能相乘)。虽然计算现在工作,我仍然想知道为什么它不工作与原始代码。
2010年6月8日
我在修正步骤中得到一个错误。>> s.x = s.x + K*(s.z-s.H*s.x);
错误使用= = > mtimes矩阵内部维度必须一致
考虑到矩阵的大小,误差是有意义的,但我看不出它们怎么会出错。这段代码是否不能用于一个有两个观察者输入(位置和速度)的系统?
谢谢你的帮助!Ps:如果你需要更多的信息,请让我知道-尽量保持简短。
2010年6月
非常感谢。
2010年5月21日
谢谢你的辛勤工作http://learnbyexamples.org/category/matlab
2010年4月1日
感谢你的
2010年3月29日
2010年3月18日
干得好!
3月3日2010
非常有帮助,尽管我想看一个控制向量u的例子。
2010年1月13日
有没有人在学习卡尔曼滤波时得到了正确的解。你可以用电子邮件发送文件吗?M对我来说,rmzaidi8@gmail.com我已经运行文件,但有很多错误。请帮帮我。谢谢。
2009年7月23日
很好
24 Jun 2009
我见过的最优秀的KF实现!
四月六日2009
谢谢
一月二十六日2009
11月10日2008
非常感谢
9月26日2008
2008年7月21日
不错的评论。可怕的数字。为什么要考虑乘以逆矩阵呢?这是非常不准确和缓慢的。取代
x = inv(H)*zP = inv(H)*R*inv(H’)
至少是这样
x = H\zP = (h \ r)/ h '
同样的
K = P * H' * inv(很多东西)
应该是
K = P * H' /(很多东西)
此外,如果H不变,则只分解一次,保留因子(LU或CHOL)。
7月13日2008
谢谢分享。:)
7月3日
确实非常有用
6月19日2008
这对于像我这样的初学者来说非常有用。一个伟大的帖子!
6月3日2008
对于那些第一次想知道什么是卡尔曼滤波的人来说很好。它可以工作,在m文件中有一个简单的例子。
四月二十七日
我一直得到这个错误,有人能解释我做错了什么吗?
kalmanf ? ?输入参数“s”未定义。==> kalmanf在150 if ~isfield(s,'x')错误;s.x =南* z;结束
四月二十二日
伟大的
三月三日2008
好吧
1月25日2008
这是文件交换中非常流行的一个文件。这个函数本身很好。然而,我刚刚注意到该文件提供的示例是不正确的。不知何故,它会误导初学者。
在第131行中,流程定义为:True (end+1) = randn*2 + 12;也就是说,状态是一个常数加上一个噪声。如果是这样,标准状态空间形式中的流程应该是:X (k+1) = 0 * X (k) + 12 + w(k)即s.A = 0;s.B = 1;S.u = 12;然而,在文件中它被错误地定义为:s.A = 1;s.B = 0;S.u = 0;不同的是在前一种定义中过程噪声不是动态累积的,而在后一种定义中过程噪声是动态累积的。
1月4日2008
12月31日
12月26日
我可以从这个文档中理解卡尔曼滤波,我打赌任何人都可以。
11月28日
11月27日
11月6日
小心些而已。我们也在查看你的下载记录。
10月19日
我想要一个卡尔曼滤波器
10月5日
10月3日
2007年7月10日
干式气体过滤器如何计算天然气呢?请
6月13日2007
6月10日2007
这很好
六月七日2007
我想要这个参考
五月二十九日
实际上,我在卡尔曼滤波问题上不是初学者。但是,我认为这是一个非常有用的工具,我希望当我第一次开始与卡尔曼工作时,我得到了这个m文件。因为,对于初学者来说,掌握问题的最简单形式并通过模拟程序看到它的解决方案是非常重要的。
五月二十三日
这是一个非常友好的用户,推荐
5月15日
非常容易使用,推荐使用。
五月九日
四月二十九日
良好的演示。您可能应该将示例分离到另一个名为RunMeDemoKalman的m文件中。对于真正的初学者。
四月二十六日
对我来说是一个很好的演示!
四月二十五日
非常好的工具非常感谢
三月二十九日
3月27日
离散卡尔曼滤波器
3月13日
1月8日
12月11日
最好是将注释从m.file中分离出来,并以pdf格式将它们添加为“帮助”。
十一月二十九日
11月14日
同样的错误!!
二零零六年十一月一日
十月二十九日
我得到了同样的错误:
kalmanf???输入参数“s”未定义。
错误在==> kalmanf在150如果~ isfield(年代,“x”);s.x =南* z;结束
十月二十六日
我喜欢的解释,但我不能运行文件弹出以下错误。帮助!!
10月17日
我需要卡尔曼滤波程序。
八月二十七日
八月十五日
谢谢你!很好的卡尔曼滤波的介绍,即使你不用Matlab。
二零零六年六月十四日
你必须先设置matlab,然后使用工作区运行
2006年4月26日
尝试用A\B替换inv(A)*B来加速,尽管当矩阵大小很小的时候这并不显著
2006年4月22日
我尝试在matlab中运行“学习卡尔曼滤波器”,但我不能运行它。我可以知道如何运行这个文件吗?呢?
二零零六年四月十三日
二零零六年四月六日
这是我找到的开始使用卡尔曼滤波器的最佳来源。你有非线性版本的吗?
三月二十八日
2月22日
2月14日
代码中的有用注释。
二六年二月九日
二零零六年一月二十日
它的伟大。
二零零六年一月十三日
对理解卡尔曼滤波非常有用
1月12日
二零零六年一月七日
非常好的总结,比Matlab帮助函数提供的更有意义。
12月24日
第一次吃挺好的。完全没有
11月20日
简单,漂亮,优秀:-))非常感谢!!
11月15日
10月28日
毫无疑问,它很好。
10月20日
优秀的apporach但是我不能经营这个项目请帮帮我
八月三日
解释某事的好方法。再接再厉!但是,(在自动初始化步骤)有一些错误。不管怎样,我还是不太理解卡尔曼滤波的用法。给出的例子很好,但是我仍然不知道如何将这个过滤器应用到我的数据中。
二零零五年七月十日
二零零五年七月八日
不错的工作。如果有一个向量状态的例子就更好了。如果有人能把卡尔曼滤波算法放到simulink中,这样我们就能动态地看到状态的估计,那就太棒了。万博1manbetx当然,非线性系统的扩展卡尔曼滤波器也很有用。
六月三十日
你能给我样品的价值吗?我还是没有完全理解。
六月二十八日
非常有趣。非常整洁。
六月十六日2005
五月十八日
很好,我喜欢这个主意
很好谢谢丹尼尔Aalborg大学
三月二十三日
这是一个非常好的例子,展示了应用卡尔曼滤波是多么容易。然而,它确实需要一些背景知识。如果有一个更复杂的例子u不为零H和a不等于1就更好了。谢谢迈克尔!
你是一个伟大的导师!我真的很感激。非常感谢。
一月二十四日
一月二十一日
一月十四日2005
很有帮助。谢谢! !
一月十一日
优秀的! !谢谢你!
十月五日
紧凑,文档完善,非常好的初始化和结构的使用。
九月二十三日
太棒了!
启发:卡尔曼滤波教程,学习扩展卡尔曼滤波,学习无气味卡尔曼滤波,在Simulink v2.1中学习卡尔曼滤波万博1manbetx
在MATLAB中央找到宝藏,并发现社区可以如何帮助你!
在单个可执行文档中创建带有代码、输出和格式化文本的脚本。
了解实时编辑器
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您的地理位置,我们建议您选择:.
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。
联系当地办事处
未定义的。该怎么办?
非常感谢!
我不能在开始时运行文件,错误显示:脚本中的所有函数必须以“结束”关闭。
在函数中,我很难理解if…其他的……为什么会有结局?
有人能帮我吗?
恕我直言,这个kalmanf(s)是错误的。
应该如下所示。这产生了很好的结果。
函数s = kalmanf(s)
%步骤1:计算卡尔曼增益因子:
K = s.P*s.H'*inv(s.H*s.P*s.H'+s.R);
%第二步:根据观察进行修正:
s.x = s.x + K'*(s.z-s.H*s.x);
%step3:更新错误
s.P = s.P - K*s.H*s.P;
返回
我已经开始研究卡尔曼滤波在参数估计中的应用。我的问题有点奇怪:
我们有一个简单的系统,有两种状态(x, y)和两种速率(K1, K2)。
我们的方程是:
dx/dt = - K1*x + K2*y
dy/dt = K1*x - K2*y
Z (x) = * x
Z (y) = b * y
我在寻找参数(a, b, K1, K2)
还有Z(x)和Z(y)的实际数据点
如何用卡尔曼滤波解决这个问题?
谢谢楼主分享!
你好,
我放入一个带有噪声的观察向量,我得到了一个错误信息:
未定义函数或变量z。
kalmanf错误(第150行)
如果~ isfield(年代,“x”);s.x =南* z;结束
有人能帮帮我吗
非常感谢!
这是试图在M-script中定义m -函数的常见错误。在这里看看解释:
http://uk.mathworks.com/matlabcentral/answers/18401-please-help-error-function-definitions-are-not-permitted-in-this-context
我猜您尝试做的只是取消注释示例代码并运行该文件。相反,在新脚本中复制/剪切并粘贴括号内的代码,并尝试运行该脚本。希望这能有所帮助!
你好,我得到以下错误,谁能告诉我是什么问题?
错误:文件:kalmanf。m行:147列:1
在此上下文中不允许函数定义。
拜托!给我一个卡尔曼夫函数的例子。
嘿,伙计们,
我新matlab,我试图实现卡尔曼滤波器与正弦波是可能的?
第173行,文件kalmanf.m
s.P = s.A * s.P * s.A' + s.Q;
这是错误的,它应该是:
s.P = s.A * s.P * s.A' + s.B * s.Q * s.B';
这个例子也有误导性,参见Yi Cao(2008年1月25日)的评论,因为be不应该是= 0,而B应该是= 1。
谢谢,我喜欢
非常有帮助
Simulink中线性卡尔曼滤波的一个很好的补充:万博1manbetx//www.tianjin-qmedu.com/matlabcentral/fileexchange/46407-linear-kalman-filter-in-万博1manbetxsimulink
非常有用! !非常感谢。
如何查看文档
对于我们这些刚接触卡尔曼滤波的人来说,这是很好的资源。谢谢你!如果系统的状态是由向量而不是标量给出的呢?卡尔曼滤波在n维情况下是否有效?如果我想在一组数据上训练过滤器,然后把它应用到另一组数据上,我该怎么做呢?如果我的观察结果是两个或两个以上的信号加上噪声的总和呢?我如何“告诉”卡尔曼滤波器我想让它估计哪些信号?
文档很好,易于理解。
非常好的实现。但是卡尔曼滤波块有一个小错误。在传播方程中,1/Z必须放在其他地方。我们有P(k+1) = ap (k)A' + q在这部分后面我们需要加上1/z得到P(k)
换句话说,如果它们存储在我的data.mat中,如何绘制它们的值?
“情节”是否相同,而我必须使用循环“for”?
直接问关于代码示例,它在这里我处理了几个小时。
我的情况:
>>清楚s
s.x = 12;
s.A = 1;
>> s.Q = 2^2;
s.H = 1;
>> s.R = 2^2;
s.B = 0;
> s.u = 0;
>> s.x = nan;
>> s.P = nan;
>> s.z = [1 2 3 4 5 6 7 8 9 22 3 4 5 6 7 8 88];
> > kalmanf(年代);
> >图
等一下
>>网格上
> >赫兹=情节(s.z,“r”。)
> >香港=情节(年代,b -)
使用绘图错误
不可能从struct转换为double类型。
问题在哪里?
谢谢你
我是K滤波的新手,我不理解以下内容:协方差矩阵P似乎只是以下输入的函数:a(由系统定义),P(本身),Q(已知的P .噪声cov.)和H(典型的身份),而且卡尔曼增益K。K本身只是P, H和R(已知的m.噪声cov.)的函数。
除了P,在迭代过程中这些都没有被重新定义。那么协方差矩阵P的估计是如何与观测z联系起来的呢?这样做的结果似乎是卡尔曼增益在第三次或第四次迭代时激增,使输出反映了有噪声的输入。我认为这似乎也是Enver Bahar所注意到的。
实际上,我得到的错误s没有定义,我能做什么,这个例子给了我一个想法。
谢谢你Shamir Alavi。
【整改到上面的帖子】:sry, 's'不是测量数据。你的数据在这里输入“s.z”。
有一个错误
>> s = [1 2 3 4 5 6 7 8 9 22 3 4 5 6 7 8 88];
> > kalmanf(年代);
未定义函数或变量z。
kalmanf错误(第150行)
如果~ isfield(年代,“x”);s.x =南* z;结束
有人能解释一下为什么吗?
你太棒了
有用且清晰的评论
谢谢,但是在运行这个演示时出现了一个错误。
输入参数“s”未定义
请帮帮我
很好的解释. .
真的很有帮助。
很好地记录。
作为一个实践工程师,我永远不会使用所示的实现。这是卡尔曼滤波的标准协方差形式。在操作中,语句
s.P = s.P - K*s.H*s.P;
导致重大问题。s.P需要始终是正定的,但是四舍五入往往会违反这一假设,使卡尔曼滤波“爆炸”的时间或条件差的数据。
另一种方法是在平方根域中处理,其中P矩阵表示为P=Psr'*Psr。因此得到的矩阵必须总是正定的,没有这个问题。一个额外的优点是精度是在该领域的两倍处理,可以类似于输入数据分辨率,而不是提供相当精度的2倍位数。
有关更多信息,请参见
'线性估计' Kailath, Sayed, Hassibi或
“自适应滤波理论”海金
我认为应该总是在SR域进行过滤。如果下位数据复杂,处理分离的真实/图像数据也有优势。
漂亮的医生
好!
优秀的! !谢谢你! !
非常感谢!
这和控制系统工具箱中的卡尔曼实现有什么区别?
亲爱的Michael Kleder,谢谢你!
好
太爱你了,你的样本比那些专业人士写的书更有帮助。简单,直接。尤其是对初学者。
非常感谢你的解释。
但是,我有一个简单的问题,为什么当我们给出很高的测量噪声时,结果不会改变?
在你的例子中,你给出的标准差是2,但当我把它设为1000时,它的估计是完美的。不应该改变吗?
有人能给我解释一下吗?
非常感谢
恩
很好的注释,byt不幸的是,代码有几个地方是错误的。它绝对不会处理向量输入,如果没有提供一些定义为可选的输入,则会导致程序崩溃。对于一个在文件交换中排名靠前的文件,我的期望要高得多。
太棒了!现在说得通多了。谢谢。
非常清晰的KF的例子,但对于处理状态向量来说还不够普遍。例如,s.x = inv(s.H)*s.z;和s.P = inv(s.H)*s.R*inv(s.H’)在状态数和测量数不相同的情况下不能工作。
谢谢楼主分享!
非常好!
[续自上文]
不出所料,我的矩阵错了!
谢谢你举的例子!
[续自上文]
我已经解决了这个问题,修改行为;
>> s.x = s.x + K' * (s.z-s.H*s.x);%加上K的转置
这是必要的,因为我的观察向量(z)是一个2X1矩阵(K也是,因此它们不能相乘)。虽然计算现在工作,我仍然想知道为什么它不工作与原始代码。
我在修正步骤中得到一个错误。
>> s.x = s.x + K*(s.z-s.H*s.x);
错误使用= = > mtimes
矩阵内部维度必须一致
考虑到矩阵的大小,误差是有意义的,但我看不出它们怎么会出错。这段代码是否不能用于一个有两个观察者输入(位置和速度)的系统?
谢谢你的帮助!
Ps:如果你需要更多的信息,请让我知道-尽量保持简短。
非常感谢。
谢谢你的辛勤工作
http://learnbyexamples.org/category/matlab
感谢你的
好
干得好!
非常有帮助,尽管我想看一个控制向量u的例子。
你好,
有没有人在学习卡尔曼滤波时得到了正确的解。
你可以用电子邮件发送文件吗?M对我来说,rmzaidi8@gmail.com
我已经运行文件,但有很多错误。
请帮帮我。
谢谢。
很好
我见过的最优秀的KF实现!
谢谢
非常感谢
谢谢
不错的评论。可怕的数字。为什么要考虑乘以逆矩阵呢?这是非常不准确和缓慢的。取代
x = inv(H)*z
P = inv(H)*R*inv(H’)
至少是这样
x = H\z
P = (h \ r)/ h '
同样的
K = P * H' * inv(很多东西)
应该是
K = P * H' /(很多东西)
此外,如果H不变,则只分解一次,保留因子(LU或CHOL)。
谢谢分享。:)
确实非常有用
这对于像我这样的初学者来说非常有用。一个伟大的帖子!
对于那些第一次想知道什么是卡尔曼滤波的人来说很好。
它可以工作,在m文件中有一个简单的例子。
我一直得到这个错误,有人能解释我做错了什么吗?
kalmanf ? ?输入参数“s”未定义。==> kalmanf在150 if ~isfield(s,'x')错误;s.x =南* z;结束
伟大的
好吧
这是文件交换中非常流行的一个文件。这个函数本身很好。然而,我刚刚注意到该文件提供的示例是不正确的。不知何故,它会误导初学者。
在第131行中,流程定义为:
True (end+1) = randn*2 + 12;
也就是说,状态是一个常数加上一个噪声。如果是这样,标准状态空间形式中的流程应该是:
X (k+1) = 0 * X (k) + 12 + w(k)
即s.A = 0;s.B = 1;S.u = 12;
然而,在文件中它被错误地定义为:
s.A = 1;s.B = 0;S.u = 0;
不同的是在前一种定义中过程噪声不是动态累积的,而在后一种定义中过程噪声是动态累积的。
我可以从这个文档中理解卡尔曼滤波,我打赌任何人都可以。
很好
小心些而已。我们也在查看你的下载记录。
我想要一个卡尔曼滤波器
干式气体过滤器如何计算
天然气呢?请
这很好
我想要这个参考
实际上,我在卡尔曼滤波问题上不是初学者。但是,我认为这是一个非常有用的工具,我希望当我第一次开始与卡尔曼工作时,我得到了这个m文件。因为,对于初学者来说,掌握问题的最简单形式并通过模拟程序看到它的解决方案是非常重要的。
这是一个非常友好的用户,推荐
非常容易使用,推荐使用。
很好
良好的演示。
您可能应该将示例分离到另一个名为RunMeDemoKalman的m文件中。
对于真正的初学者。
对我来说是一个很好的演示!
非常好的工具
非常感谢
离散卡尔曼滤波器
最好是将注释从m.file中分离出来,并以pdf格式将它们添加为“帮助”。
同样的错误!!
我得到了同样的错误:
kalmanf
???输入参数“s”未定义。
错误在==> kalmanf在150
如果~ isfield(年代,“x”);s.x =南* z;结束
我喜欢的解释,但我不能运行文件弹出以下错误。帮助!!
kalmanf
???输入参数“s”未定义。
错误在==> kalmanf在150
如果~ isfield(年代,“x”);s.x =南* z;结束
我需要卡尔曼滤波程序。
好
谢谢你!很好的卡尔曼滤波的介绍,即使你不用Matlab。
你必须先设置matlab,然后使用工作区运行
尝试用A\B替换inv(A)*B来加速,尽管当矩阵大小很小的时候这并不显著
我尝试在matlab中运行“学习卡尔曼滤波器”,但我不能运行它。
我可以知道如何运行这个文件吗?呢?
这是我找到的开始使用卡尔曼滤波器的最佳来源。你有非线性版本的吗?
代码中的有用注释。
它的伟大。
对理解卡尔曼滤波非常有用
非常好的总结,比Matlab帮助函数提供的更有意义。
很好
第一次吃挺好的。完全没有
简单,漂亮,优秀:-))非常感谢!!
好吧
毫无疑问,它很好。
优秀的apporach
但是我不能经营这个项目
请帮帮我
解释某事的好方法。再接再厉!但是,(在自动初始化步骤)有一些错误。不管怎样,我还是不太理解卡尔曼滤波的用法。给出的例子很好,但是我仍然不知道如何将这个过滤器应用到我的数据中。
不错的工作。如果有一个向量状态的例子就更好了。如果有人能把卡尔曼滤波算法放到simulink中,这样我们就能动态地看到状态的估计,那就太棒了。万博1manbetx当然,非线性系统的扩展卡尔曼滤波器也很有用。
你能给我样品的价值吗?
我还是没有完全理解。
非常有趣。非常整洁。
很好,我喜欢这个主意
很好
谢谢丹尼尔
Aalborg大学
这是一个非常好的例子,展示了应用卡尔曼滤波是多么容易。然而,它确实需要一些背景知识。如果有一个更复杂的例子u不为零H和a不等于1就更好了。谢谢迈克尔!
你是一个伟大的导师!
我真的很感激。
非常感谢。
很有帮助。谢谢! !
优秀的! !谢谢你!
紧凑,文档完善,非常好的初始化和结构的使用。
太棒了!