【MATLAB例程分享】互补滤波,融合磁力计与陀螺仪数据,估计航向。给出融合前后的角度估计误差、误差曲线

IMU性能指标深度解析与选型指南:从噪声零偏到应用场景 惯性测量单元(IMU)作为感知角速度和加速度的核心传感器,其性能直接决定了姿态估计、导航等下游算法的精度与可靠性。理解IMU的工作原理,关键在于剖析其核心性能指标:噪声密度与角度随机游走(ARW)决定了数据的瞬时质量与短期积分误差,而零偏不稳定性则是限制系统长时间独立运行精度的根本瓶颈。这些指标的技术价值在于,它们共同定义了IMU在动态环境下的可信度,是进行传感器融合(如与GPS、视觉、激光雷达融合)时,评估信息源质量的基础。在工程实践中,根据应用场景(如消费电子姿态检测、无人机飞控、自动驾驶导航)对精度、 阅读详情

在这里插入图片描述

基于MATLAB的传感器数据融合系统,通过互补滤波器算法融合磁力计和陀螺仪数据,实现高精度的航向角估计。该系统模拟了IMU(惯性测量单元)在实际应用中的姿态解算过程。

程序简介

基于MATLAB的传感器数据融合系统,通过互补滤波器算法融合磁力计和陀螺仪数据,实现高精度的航向角(偏航角/Yaw角)估计。该系统模拟了IMU(惯性测量单元)在实际应用中的姿态解算过程。

核心功能

  • 多传感器数据模拟:生成带有真实噪声特性的陀螺仪和磁力计数据
  • 互补滤波融合:结合陀螺仪高频响应和磁力计绝对参考优势
  • 性能对比分析:对比单传感器与融合算法的估计精度
  • 可视化分析:包含时域误差、CDF分布和频率响应分析

算法原理

传感器特性

传感器优势劣势
陀螺仪高频响应快,短期精度高存在零偏,长期积分漂移
磁力计提供绝对方向参考噪声大,易受干扰,响应慢

互补滤波器公式

航向角(k) = α × [航向角(k-1) + 陀螺仪角速度 × Δt] + (1-α) × 磁力计航向角
  • α = 0.98:滤波系数,控制信任度分配
    • 高频信息来自陀螺仪(高通滤波)
    • 低频信息来自磁力计(低通滤波)

参数设置

采样频率:100 Hz
仿真时长:20 秒
陀螺仪零偏:0.5°/s
陀螺仪噪声:2°/s (标准差)
磁力计噪声:5° (标准差)
互补滤波系数:α = 0.98

输出结果

系统生成三类可视化图表:

  1. 航向角估计对比图

    • 真实值 vs 磁力计 vs 陀螺仪积分 vs 融合结果
  2. 误差分析图

    • 各方法的实时误差对比
    • RMSE统计指标
  3. 误差CDF图

    • 累积分布函数,评估误差概率特性
  4. 频率响应图

    • 展示互补滤波器的高通/低通特性

运行结果

角度估计曲线、误差曲线:
在这里插入图片描述
误差绝对值的CDF图像:
在这里插入图片描述
命令行截图:
在这里插入图片描述
滤波器频率相应截图:
在这里插入图片描述

MATLAB源代码

部分代码如下:

% 磁力计与陀螺仪数据融合-互补滤波器,用于姿态估计(偏航角/航向角计算)
% 作者: matlabfilter
% 2025-10-30/Ver1

clear; clc; close all;
rng(0);
%% 参数设置
fs = 100;                % 采样频率 (Hz)
dt = 1/fs;               % 采样时间间隔
T = 20;                  % 总仿真时间 (秒)
t = 0:dt:T;              % 时间向量
N = length(t);           % 采样点数

% 互补滤波器参数
alpha = 0.98;            % 互补滤波系数 (0.95-0.99)
                         % alpha越大,越信任陀螺仪;越小,越信任磁力计

完整源代码:

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

【MATLAB代码,多无人机路径规划6】基于RRT与动态窗口法(RRT+DWA)的多无人机二维动态路径规划与避障。订阅专栏后可查看完整代码 本文基于MATLAB实现四架无人机在二维动态障碍环境中的协同路径规划,采用RRT+DWA算法,支持参数自定义。通过对比RRT+APF与RRT+DWA的避障效果,可视化轨迹、净间隙、速度加速度及航程等,输出任务完成率与碰撞统计。代码可直接运行,订阅专栏后获取完整源码,支持定制与讲解。 阅读详情

相关推荐

【MATLAB代码】基于RRT与人工势场法(RRT+APF)的多无人机二维动态路径规划与避障。订阅专栏后可查看完整代码

本文基于RRT+APF算法实现多无人机动态路径规划与避障仿真,通过MATLAB完整代码可直接运行。对比传统APF方法,该方案在轨迹平滑性、安全净间隙及到达效率上表现更优。支持参数自定义,订阅专栏后可获取源码与定制服务,适用于科研与工程实践。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 146

基于卡尔曼滤波的九轴姿态估计:Matlab实现与嵌入式移植

多传感器融合是无人机飞控与机器人姿态估计的核心技术,通过融合陀螺仪、加速度计和磁力计数据,利用卡尔曼滤波实现高精度姿态解算。其原理在于以陀螺仪短期积分预测姿态,以加速度计和磁力计长期观测修正漂移,从而输出稳定的横滚、俯仰和偏航角。该技术显著提升了系统在振动与磁干扰环境下的鲁棒性,广泛应用于无人机悬停、导航与控制。本文以Matlab为验证平台,详细阐述九轴姿态估计的卡尔曼滤波建模、参数调优及嵌入式移植中的工程实践,为飞控开发提供从算法到产品的完整参考。

weixin_34302798的博客 1801

【MATLAB代码,无人机避障7】基于RRT*与人工势场法(RRT*+APF)的多无人机二维动态路径规划与避障。订阅专栏后可查看完整代码

本文基于RRT与人工势场法(APF)实现四架无人机在二维动态障碍环境中的协同路径规划与避障。通过RRT优化全局路径,结合APF进行局部避碰,支持参数自定义,提供完整MATLAB代码,可直接运行并生成轨迹、安全净间隙、速度加速度及航程等可视化结果,对比RRT+APF与RRT*+APF性能,适用于科研与教学。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 182

磁力计三轴校准与倾斜补偿实战指南

磁力计是姿态感知系统中关键的磁场矢量传感器,其原始输出受地球磁场、硬铁误差、软铁畸变及传感器固有缺陷四重叠加影响。校准的本质是解耦平移(硬铁偏移)与线性变换(软铁矩阵),而倾斜补偿则需将设备坐标系下的磁场向量精准映射至水平参考系,依赖鲁棒的姿态估计而非单纯加速度计倾角。该技术直接决定无人机航向精度、机器人定位稳定性与可穿戴设备指南针可靠性。本文聚焦嵌入式场景下的工业级落地实践,涵盖广义椭球拟合、互补滤波驱动的实时倾斜补偿、MCU资源优化及产线标定闭环验证,特别适用于IMU集成、自主导航与高精度电子罗盘开发。

weixin_33994429的博客 510

【MATLAB代码】基于改进人工势场法(Improved APF)的多无人机动态路径规划与避障|切向绕障、局部极小值改善及协同避碰仿真(含公式)

本文提出一种改进型人工势场法(APF),通过引入切向引导与目标距离权重,提升4架无人机在动态障碍环境中的路径规划效率与安全性。相比基础APF,改进方法在相同约束下实现更快收敛(27.6s vs 36.6s)、更优航程(364.26m vs 366.56m),且保持0碰撞、0违规。所有结果可复现,代码已封装为独立MATLAB脚本,订阅专栏后即可直接运行。如需定制或深入讲解,欢迎联系作者。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 208

51单片机实现卡尔曼滤波的工程实践与资源优化

卡尔曼滤波是嵌入式姿态解算的核心算法,其本质是在动态系统中融合多源传感器数据以估计最优状态。在资源极度受限的8位MCU(如STC89C52)上部署该算法,需突破浮点运算缺失、RAM仅128字节、无硬件乘除单元等硬约束。关键技术包括一维状态简化、定点数替代浮点、协方差矩阵手工降维、MPU6050原子读取与噪声建模,以及Q/R参数的物理意义调优。这些实践不仅支撑平衡车等实时控制场景,更构成从教科书公式到工业级AHRS系统演进的底层基石。本文聚焦51平台真实工程落地,覆盖寄存器配置、内存布局、中断安全与调试验证全

weixin_30706691的博客 363

9轴IMU姿态解算:误差状态卡尔曼滤波(ESKF)实现与调参实战

多传感器融合是机器人、无人机和便携设备姿态感知的核心技术。IMU中加速度计与磁力计提供绝对参考,陀螺仪提供高频动态信息,但各自噪声、漂移和磁干扰使简单加权难以获得稳定姿态。卡尔曼滤波通过统计建模动态权衡预测与观测,误差状态卡尔曼滤波(ESKF)进一步将姿态误差线性化,更易工程实现。在9轴IMU融合场景中,ESKF能在线估计陀螺仪零偏,并利用加速度计与磁力计向量观测抑制漂移。结合Matlab平台,可快速完成建模、调参与验证。围绕传感器融合和姿态解算的实际需求,这套方案兼顾精度与可实施性,是飞控、机器人和导航应

aofan9566的博客 231

【PMSM例程11】永磁同步电机(PMSM)基于UKF的转速与转子位置估计。附下载链接

本程序基于MATLAB构建永磁同步电机(PMSM)仿真模型,采用无迹卡尔曼滤波(UKF)实现电流、转速与电角度的联合估计。通过缩放无迹变换生成Sigma点,避免非线性线性化误差,并针对电角度周期性边界进行特殊处理。仿真验证了在转速变化工况下,UKF对状态变量的高精度估计能力,结果表明其在转速与角度跟踪、电流滤波及新息诊断方面表现优异,具备良好的鲁棒性与实用性,适用于非线性状态估计与电机控制研究。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 245

9轴IMU卡尔曼滤波姿态解算:从原理到Matlab实践

传感器融合是惯性导航、机器人控制、AR设备等领域的核心技术,而IMU姿态解算常因陀螺仪、加速度计、磁力计三种器件的频率特性和噪声差异成为工程难点。陀螺仪短期精度高但积分漂移无法避免,加速度计与磁力计则提供长期绝对参考,卡尔曼滤波恰好通过状态预测与量测更新,将四元数姿态与陀螺零偏纳入统一状态空间,实现最优估计。相比互补滤波,扩展卡尔曼滤波显式建模噪声统计特性,在线估计零偏,更适合高精度跟踪与定位场景。针对9轴IMU,详细的卡尔曼滤波模型、Matlab实现骨架、Q/R调参策略及故障排查方法,能帮助开发者快速构建

weixin_33797791的博客 390

使用基于物质点法(MPM)的Anura3D模拟沙柱坍塌

本博客使用开源软件Anura3D软件模拟了一个沙柱坍塌的过程,这个软件是基于基于物质点法(MPM)设计的

weixin_59902634的博客 4041

保姆级教程:Windows下用GDC-Client下载TCGA数据,从环境变量配置到成功下载

本文提供Windows平台下使用GDC-Client下载TCGA数据的完整教程,从环境变量配置到成功下载。详细介绍了GDC-Client工具的安装、系统环境变量设置、配置文件优化以及数据下载实战技巧,帮助生物信息学研究者高效获取TCGA数据库中的癌症基因组数据。

weixin_42520025的博客 400

MATLAB 不等间隔一阶低通:按真实时间更新,并把长缺口重置说清楚

不等间隔数据若直接套固定平滑系数,会改变实际时间常数。本文从左端零阶保持模型推导一阶低通更新,分别计算衰减与输入系数,显式标记长缺口重置,并给出解析解对照、时序负例、边界测试和完整 MATLAB 代码。

hxy_programmer的博客 299

Halcon实战:5分钟搞定线序颜色检测(附完整代码解析)

本文详细介绍了如何使用Halcon在5分钟内实现工业级线序颜色检测的高效方案。通过机器视觉技术,结合实战项目经验,提供完整的代码解析和优化技巧,帮助开发者快速构建鲁棒性强、准确率高的检测系统,适用于电子制造和汽车线束等行业。

weixin_29098367的博客 440

MATLAB 优秀开源项目与工具箱推荐:涵盖通信、图像处理、脑机接口等九大领域

本文梳理了无线通信、图像处理、脑机接口等九个领域的代表性MATLAB开源项目,涵盖信道建模(QuaDRiGa)、智能表面仿真(SimRIS)、视觉特征提取(VLFeat)、三维网格生成(Iso2Mesh)及脑电信号分析(EEGLAB、BCILAB)等关键技术。通过解析其数学模型与源码实现,揭示科研工具如何将理论算法转化为可复现的工程计算流程,为科研人员提供高效、可扩展的开发参考。

weixin_47502228的博客 337

SAP PP后台配置实战:从BOM到工艺路线的全流程解析

本文详细解析了SAP PP模块后台配置的全流程,从BOM到工艺路线的关键步骤与实战技巧。通过分享生产计划、工作中心能力计划等核心配置经验,帮助企业优化生产管理流程,提升SAP系统实施效率。特别针对BOM配置、工艺路线设置等常见问题提供解决方案。

weixin_29300931的博客 1006

多标签分类怎么做?(Python)

首先简单介绍下,多标签分类与多分类、多任务学习的关系: 多分类学习(Multi-class):分类器去划分的类别是多个的,但对于每一个样本只能有一个类别,类别间是互斥的。例如:分类器判断这只动物是猫、狗、猪,每个样本只能有一种类别,就是一个三分类任务。常用的做法是OVR、softmax多分类

y1282037271的博客 1358

【PMSM例程分享】(10)永磁同步电机(PMSM)基于EKF的转速与转子位置观测与控制

本文基于MATLAB实现永磁同步电机(PMSM)的EKF状态观测与无传感器控制仿真,构建四维扩展卡尔曼滤波器在线估计转速与电角度,并在0.3秒切换至EKF反馈实现闭环控制。对比编码器反馈与EKF观测反馈的转速响应、跟踪误差及接管过程动态性能,验证了EKF在无位置传感器控制中的有效性。程序包含完整模型、控制器、滤波器与可视化功能,参数可调,适用于算法研究与教学实践。订阅专栏可获取源代码及定制支持。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 195

【OpenVINO】OpenVINO C# API 常用 API 详解与演示

在本文中我们基于模型推理流程,演示了OpenVINO C# API使用方法,并和OpenVINO C++API进行了对比,展示了OpenVINO C# API与C++API在使用的区别,这也对使用过C++ API的开发者十分友好,上手会十分容易。在本文中我们只展示了基础的模型推理流程代码,也对各个API进行了测试,针对其他比较高级的API方法,我们后续会继续进行测试其他API方法,向各位开发者展示其用法。

grape_yan的博客 1539

【MATLAB源码】基于颜色加权与连通域分析的高抬腿频率测量系统

本文提出一种基于图像处理的高抬腿动作频率自动化测量系统,通过高清摄像机采集视频,结合颜色加权、形态学操作与连通域分析,精准提取反光标志区域并统计动作次数。实验表明,该方法相比人工计数更高效、准确,误差小,可为运动训练提供量化数据支持。

2302_78339041的博客 224

基于RK3588的YOLOv11目标检测NPU加速系统设计与实现——模型转换(RKNN)、量化与板端部署全流程(含环境搭建与疑难解析)

而RK3588芯片则是一款性能强劲的边缘计算芯片,将YOLOv11部署在RK3588上,可实现本地化的智能检测应用,比如工业质检中的产品缺陷识别、安防领域的异常行为监测等。比如,优化模型的推理速度,可通过调整模型的输入尺寸、使用更高效的推理框架等方式实现;可以使用RK提供的量化工具来完成这一过程,按照工具的使用说明,对ONNX模型进行量化,生成适用于RK3588的模型文件。现在,你已经掌握了从环境搭建到模型部署的全流程,赶快动手实践,让YOLOv11在RK3588上绽放智能光彩,打造属于你的AI应用吧!

m0_71589036的博客 44

信奥赛C++提高组csp-s之数论基础专题课:从同余到分数模运算1(知识地图:同余、裴蜀定理、扩展欧几里得、乘法逆元、分数模运算)

信奥赛C++提高组csp-s之数论基础专题课:从同余到分数模运算1(知识地图:同余、裴蜀定理、扩展欧几里得、乘法逆元、分数模运算)

王老师青少年编程 790

buck-boost电路MATLAB仿真

该脚本构建了MATLAB R2021b中的反激式Buck-Boost变换器开环模型,输入电压24V,开关频率100kHz,占空比0.4,理论输出电压为-16V。通过仿真与验证,结果显示输出电压平均值接近理想值,效率达70%以上,电感电流连续,输出纹波小于5%,验证通过。

2501_92729044的博客 190

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【MATLAB例程12】永磁同步电机基于增广无迹卡尔曼滤波的未知负载转矩在线观测

本文基于MATLAB搭建永磁同步电机(PMSM)仿真模型,采用增广无迹卡尔曼滤波(UKF)实现电流、转速、电角度及未知负载转矩的联合估计。通过将负载转矩作为增广状态,结合电压与带噪电流测量,有效跟踪负载阶跃变化。仿真结果表明,该方法在不同负载工况下具备良好估计精度与稳定性,状态估计误差小,新息诊断正常,适用于电机状态观测、抗扰控制等研究。代码结构清晰,参数可调,具有教学与应用价值。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 265

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

MATLAB 数值计算中的精度与误差问题:浮点运算、误差传播与数值稳定性

MATLAB数值计算中的精度问题源于浮点数的有限表示。双精度浮点数(64位)虽具约16位十进制有效数字,但无法精确表示如0.1等十进制小数,导致0.1+0.2≠0.3。浮点运算存在舍入误差,其大小受机器精度(eps(1)≈2.22e-16)和数的量级影响,大数掩盖小数现象常见。误差包括舍入误差、截断误差及输入误差,且在复杂算法中可能累积放大。数值稳定性取决于算法对扰动的敏感性,同一数学问题不同算法可能表现迥异。因此,理解浮点机制、误差传播与算法稳定性,是确保计算结果可信的关键。

weixin_47502228的博客 289

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MATLAB 中分号 (;)的作用

场景代码示例效果抑制输出x = 5;计算 x=5,但不显示在屏幕显示输出x = 5计算 x=5,并在屏幕显示 x = 5矩阵换行[1;2]创建列向量 [12]矩阵同行[1, 2] 或 [1 2]创建行向量 [12]

weixin_54978309的博客 92

PINN-LSTM物理信息神经网络的CO2羽流分布预测方法,四模型对比MATLAB代码

PINN-LSTM物理信息神经网络的CO2羽流分布预测方法,四模型对比MATLAB代码

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 399
上一篇: 【MATLAB代码】二维平面,三个雷达跟踪一个目标的程序,直接观测和EKF滤波后的轨迹对比
下一篇: 【MATLAB代码】2雷达二维目标跟踪滤波系统-UKF(无迹卡尔曼滤波)实现,目标匀速运动模型(带扰动)。订阅专栏后可查看完整代码
MATLAB卡尔曼
MATLAB卡尔曼 毕昇杯全国一等奖获得者 毕昇杯全国一等奖获得者 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄14年 7622粉丝 1415原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB卡尔曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值