算法
文章平均质量分 92
大强强小强强
这个作者很懒,什么都没留下…
展开
-
四阶龙格库塔法的计算例子
一、矩形法1.1 原理设微分方程y˙=f(y)(1.1)\dot y=f(y)\tag{1.1}y˙=f(y)(1.1)求yyy。使用数值方法,离散化得每一步的增量Δy=f(y)Δt(1.2)\Delta y = f(y)\Delta t \tag{1.2}Δy=f(y)Δt(1.2)易得yn+1=yn+f(yn)Δt(1.3)y_{n+1} =y_n + f(y_{n}) \Delta t\tag{1.3}yn+1=yn+f(yn)Δt(1.3)实际上,这就是矩形法计.原创 2021-01-26 14:51:34 · 15096 阅读 · 0 评论 -
PID神经网络原理与MATLAB实现(SISO)
序最近想实现一下PID神经网络,但是书籍和博客都令人头疼,主要是卡在误差反向传播的计算过程中。找一篇通俗易懂的文章实在不易,最终,只能自己静下心,仔细琢磨。只要每一步在逻辑上都是合理的,我们有理由相信能够得到正确的结果。抱着这样的心态,由浅入深,来实现一下。一、网络结构定义简单起见,假设一个受控系统单输入 uuu 单输出 xxx ,使用一个PID神经网络来作为控制器,使得系统输出达到目标值 zzz。其中,W3×2W_{3\times 2}W3×2和V1×3V_{1\times 3}V1×3.原创 2021-01-19 22:09:37 · 9911 阅读 · 19 评论 -
牛顿法直观理解
序在老师讲到这些优化算法的时候,我往往不经意地关心一个问题:这个算法怎样最容易直观地理解,有几何意义吗,这个算法是如何发现的?说实话,我并不喜欢老师一上来就给出算法,然后一系列推理证明,最后是算法流程。我喜欢的是:这个算法的直观 + 算法流程编程实现。或许这与我主要做工程方面的东西有关,我的数学功底不足,但是我也坚信由浅入深循序渐进才是常规的学习规律。因此,博客中,我想把书上证明的内容尽量换成更直观的解释。一、一维牛顿法一维牛顿法的更新公式为:x(k+1)=x(k)−f′(x(k))f′′(x.原创 2020-10-24 00:06:29 · 844 阅读 · 0 评论 -
GPS类型转换、测量距离及方向算法(MATLAB实现 C++实现)
1. GPS两种格式及转换常见的GPS数据有两种格式,一种为度(DDD)格式,一种为度分秒(DMS)格式:度分秒(DMS): 118°48′54.152″E 32°04′10.461″N 度(DDD): 118.815042°E 32.069572°两种格式的转换:从DMS 到 DDD,保留...原创 2020-05-01 13:50:55 · 2940 阅读 · 2 评论 -
IMU和GPS数据融合估计位置与速度(MATLAB实现)
简介假设小车在一个方向上以 2cm/s2 的加速度运动了 100s,使用加速度计和GPS测量小车位置。GPS定位误差为高斯分布,方差为4m;加速度计的误差也为高斯分布,方差为0.01m/s2,并且由于加速度计放置不是完全水平的,有 0.03m/s2 的偏移。采用卡尔曼滤波,融合加速度计和GPS数据,估计小车的位置与速度。1. 问题如果只使用GPS数据估计,卡尔曼滤波器MATLAB实现(从...原创 2020-04-27 22:08:23 · 19720 阅读 · 27 评论 -
卡尔曼滤波器MATLAB实现(从一维到三维)
一、场景设置与效果图假设一架无人机携带了一个气压计和GPS,定位精度都为1m,数据采样频率都为5Hz,100s时间螺旋上升40m,螺旋半径为20m。在无人机飞行过程中,1m的精度是不能很好满足要求的,现对采样得到的数据使用卡尔曼滤波,使得达到更高的精度。最终效果如下:二、卡尔曼滤波卡尔曼滤波器假设一个系统当前时刻的状态是由上一时刻的状态和输入转化过来的,当然,这个过程中包...原创 2020-03-12 13:10:42 · 35849 阅读 · 18 评论 -
BP神经网络Matlab实现(工具箱实现、自主编程实现)
序BP神经网络是最常见、也是最基础的一种神经网络。网上教程颇多,但是对初学者可能会不太友好。本文打算由浅入深,先使用神经网络工具箱快速实现,然后再自己编写代码加深理解。本文使用 MATLAB 2018B。一、快速实现1.1 背景介绍我们将拟合一个非线性的函数,为简单起见而不失一般性,这个函数有两个自变量,函数为:那么,现在神经网络的结构如下:输入为 x1, x2,输出为...原创 2020-02-19 11:54:58 · 20888 阅读 · 36 评论 -
从Gauss-Newton算法到 LM算法 (详细推导及MATLAB实现、多自变量问题)
Gauss-Newton算法 MATLAB实现结果回顾算法实现总结结果回顾Gauss-Newton算法对Gauss-newton算法做了详细的解释,并且使用C++做了实例程序。但是程序其实有微小错误,实际的坐标并不是年代1815—1885,而是1—8,否则 p=A∗exp(B∗t)p = A*exp(B*t)p=A∗exp(B∗t)拟合时将会迅速增大,也得不到 A=0.7A=0.7A=0.7...原创 2019-12-18 22:47:35 · 12615 阅读 · 25 评论