HMC5883L三轴磁力计驱动开发与FreeRTOS集成实战

HMC5883L磁力计驱动开发与嵌入式校准实践 数字磁力计是惯性导航与姿态感知系统的核心传感单元,其原理基于各向异性磁阻(AMR)效应,通过测量空间磁场分量解算航向角。HMC5883L作为经典三轴I²C磁传感器,具备12位ADC、可编程增益与温度补偿能力,技术价值体现在高信噪比(0.15 mG/√Hz)、宽量程(±0.88~±8.1 Ga)及寄存器设计规范性,广泛应用于无人机电子罗盘、智能终端定向与工业IMU融合系统。实际部署需应对硬铁偏移、软铁失真及I²C通信鲁棒性等工程挑战,依赖坐标系映射、旋转校准与面向对象驱动封装等关键技术。本文聚焦HMC5883 阅读详情

1. 从零上手HMC5883L:这颗三轴磁力计到底能干什么

HMC5883L这颗芯片在电子罗盘、航向检测、姿态解算这些场景里出现频率非常高。它本质上是一个三轴磁阻传感器,能同时测量X、Y、Z三个方向的磁场强度,输出的是带符号的16位数据。你拿到的原始数据经过校准和倾斜补偿之后,就能算出设备相对于磁北的航向角。常见的应用包括无人机航向参考、手持云台姿态稳定、机器人导航、甚至一些户外手持设备的方向指示。

这颗芯片的通信接口是I²C,7位从机地址固定为0x1E(8位写地址就是0x3C)。注意,这个地址是出厂写死的,不像某些传感器可以通过引脚配置来改。它的供电范围是2.4V到3.6V,典型工作电压3.3V,和绝大多数Cortex-M3/M4主控的IO电平直接兼容,不需要额外的电平转换。量程方面,HMC5883L提供±0.88Ga到±8.1Ga共8档可选增益,默认配置下灵敏度是1090 LSB/Gauss(对应增益配置为1.3Ga量程档),这个参数在数据手册里有明确的对应表。

为什么选它而不是别的磁力计?我个人的经验是,HMC5883L的驱动逻辑足够简单,寄存器数量少,I²C时序要求也不苛刻,非常适合作为嵌入式驱动开发的入门练手项目。同时它又足够典型,校准流程、数据融合、RTOS集成这些环节一个不少,做完一遍之后你对传感器驱动的理解会上一个台阶。市面上虽然已经有QMC5883L、LIS3MDL这些替代品,但HMC5883L的资料积累最厚,踩坑成本最低。

这个项目适合谁?如果你已经能点亮LED、能跑通串口打印,想进一步学习I²C外设驱动、传感器校准算法、以及如何在FreeRTOS下组织周期任务,那这个项目就是为你准备的。整个流程我会从硬件连接讲到寄存器操作,再到校准算法和RTOS任务设计,每一步都给出可复现的代码思路和参数计算过程。

2. 硬件连接与I²C通信基础

2.1 引脚接线与上拉电阻的取舍

HMC5883L的封装通常是16引脚LCC,实际用到的只有VCC、GND、SCL、SDA这四个,外加两个可选的DRDY(数据就绪)和INT引脚。DRDY引脚在连续测量模式下会输出电平跳变,可以用来触发中断读取,但在FreeRTOS环境下我一般不用它,因为I²C读取本身很快,用周期任务轮询就够了,省一根线少一个中断源。

接线的时候有一个细节容易被忽略:I²C总线的上拉电阻。HMC5883L的SCL和SDA是开漏输出,必须外接上拉电阻才能拉高。很多开发板已经在I²C总线上焊了4.7kΩ的上拉,这时候你直接接上去就行。但如果你是自己画的板子,或者用的模块上没有上拉,那就得自己加。上拉电阻的取值有个经验公式:R_min = (VDD - VOL_max) / IOL_max,R_max = tr / (0.8473 × Cb)。对于3.3V供电、总线电容100pF左右的场景,4.7kΩ到10kΩ都是合理范围。我实测下来4.7kΩ在400kHz速率下波形最干净,10kΩ在100kHz下也够用。

注意:如果你把HMC5883L和别的I²C设备挂在同一条总线上,上拉电阻只需要一组,不要每个设备都加,否则等效阻值变小,总线电容增大,高速通信时波形会变差。

2.2 I²C时序参数与速率选择

HMC5883L支持标准模式(100kHz)和快速模式(400kHz)。数据手册里写的最大速率是400kHz,但实际用的时候我建议先跑100kHz把驱动调通,再往上提。原因很简单:100kHz下时序余量大,即使你的上拉电阻偏大或者走线稍长,波形也不会太难看。等驱动逻辑验证无误了,再切到400kHz提升读取频率。

I²C的起始条件、停止条件、ACK/NACK这些基础概念我就不展开讲了,重点说一下HMC5883L的一个特殊之处:它的寄存器地址是自动递增的。什么意思?你设置好起始寄存器地址之后,连续读取多个字节时,芯片会自动把地址加1,不需要你每次重新发送寄存器地址。这个特性在读取X、Y、Z三个轴的6个数据字节时非常方便,一次I²C传输就能把6个字节全部读回来。

具体操作流程是这样的:先发送起始条件,发送从机地址+写标志(0x3C),等待ACK;然后发送数据寄存器起始地址(0x03),等待ACK;再发送重复起始条件,发送从机地址+读标志(0x3D),等待ACK;接着连续读取6个字节,每读一个字节主机发送ACK,最后一个字节发送NACK;最后发送停止条件。这6个字节的顺序是X_MSB、X_LSB、Z_MSB、Z_LSB、Y_MSB、Y_LSB。注意,Z轴在Y轴前面,这个顺序和很多人的直觉不一样,我第一次读的时候就把Y和Z搞反了,结果航向角一直不对。

2.3 寄存器映射与配置流程

HMC5883L的寄存器不多,常用的就以下几个:

寄存器地址 名称 功能 典型配置值
0x00 Configuration Register A 采样平均数、输出速率、测量模式 0x70
0x01 Configuration Register B 增益配置 0x20
HMC5883L磁力计驱动开发:I²C通信、校准与FreeRTOS集成 磁力计是惯性导航与电子罗盘系统的核心传感器,其输出原始磁场数据需经精确采集、单位换算与误差补偿才能用于姿态解算。基于各向异性磁阻(AMR)原理的三轴磁力计,如HMC5883L,依赖稳定I²C通信获取12位有符号磁场采样值,并通过增益配置、硬软铁校准及温度补偿提升物理量精度。在嵌入式实时系统中,驱动层须保障数据的时间一致性与抗干扰鲁棒性,避免总线挂死、字节错位或量程误配等典型问题。本文围绕HMC5883L这一广泛使用的停产但仍在产线服役的磁传感器,详解寄存器配置、定点单位转换、八方位校准算法及FreeRTOS 阅读详情

相关推荐

QMC5883L/HMC5883L跨芯片磁力计驱动库设计与工程实践

磁力计是惯性导航与电子指南针系统的核心传感器,其底层驱动需应对多型号芯片寄存器差异、I²C地址冲突及磁场干扰等共性挑战。本文围绕QMC5883L、HMC5883L等主流三轴磁力计,解析硬件抽象层如何通过芯片自动识别、量程/采样率映射、DRDY中断响应等机制,实现即插即用兼容性。技术价值在于降低多传感器平台集成复杂度,支撑姿态解算、地磁航向计算等关键功能;典型应用于Arduino/ESP32等嵌入式平台的10DOF IMU模块(如SEN0140),尤其适合需兼顾低功耗、抗噪性与快速部署的智能硬件开发场景。

weixin_42433737的博客 220

HMC5883L磁力计驱动开发与航向解算实战

磁力计是嵌入式系统中实现电子罗盘与姿态感知的核心传感器,其原理基于地磁场三轴分量测量,通过ADC量化输出原始磁场强度数据。技术价值在于低成本、高可靠性地获取航向基准,但需主控完成软硬铁校准、坐标系补偿及多源融合等关键后处理。典型应用场景涵盖无人机导航、智能船舶(如拖船自主靠泊)、机器人定位及工业AGV等对方向稳定性要求严苛的系统。本文聚焦HMC5883L这一广泛部署的I²C接口三轴磁力计,深入解析寄存器配置、中断同步读取、椭球拟合校准及俯仰/横滚补偿下的航向角解算方法,覆盖从硬件初始化到FreeRTOS工程

weixin_29138345的博客 102

Adafruit HMC5883L统一驱动库:SI单位直出与硬件抽象实践

磁力计是电子罗盘、姿态解算和磁场检测的核心传感器,其开发难点在于原始数据换算复杂、单位不统一、硬件耦合度高。基于Adafruit Unified Sensor抽象层的HMC5883L驱动,通过标准化sensors_event_t事件接口,将磁场输出直接映射为国际单位制(μT),彻底屏蔽LSB换算、寄存器配置与量程标定等底层细节。该方案显著提升代码复用性与跨平台兼容性,支持Arduino、STM32 HAL+FreeRTOS等主流嵌入式环境,并为QMC5883L、AK09916等替代芯片提供无缝迁移路径。本文

weixin_35748962的博客 383

HMC5843磁力计驱动开发:三轴磁场数据读取与校准实战

磁力计是嵌入式姿态感知与电子罗盘系统的核心传感器,其原理基于各向异性磁阻(AMR)效应,通过测量空间三维磁场分量实现航向解算。HMC5843作为经典AMR数字磁力计,提供12位分辨率、多量程配置及I²C/SPI接口,但需严格处理状态轮询、符号扩展与6字节原子读取等底层约束。其技术价值在于低功耗、高稳定性与成熟生态,广泛应用于STM32裸机及FreeRTOS导航项目。典型应用场景包括无人机磁罗盘、智能穿戴姿态检测与工业磁场监测。本文聚焦HMC5843的寄存器操作、get_Mx/get_My/get_Mz函数工

weixin_35294091的博客 560

HMC5843磁力计嵌入式驱动开发与9DoF-Stick平台适配

数字磁力计是惯性导航与电子罗盘系统的核心传感器,基于各向异性磁阻(AMR)原理实现高灵敏度磁场测量。其通过I²C接口与主控通信,需严格满足时序约束、寄存器原子读写及多设备总线协同等底层要求。技术价值体现在低功耗、高精度姿态解算能力,广泛应用于无人机航向校正、工业设备磁场监测及教育套件开发。本文聚焦HMC5843这一经典停产芯片的工程复用实践,深入解析其在9DoF-Stick硬件平台上的驱动实现,涵盖I²C时序调优、FreeRTOS任务集成、磁场硬/软铁校准及电源噪声抑制等关键环节,为存量设备维护与兼容性迁移

weixin_35696112的博客 228

HMC58X3磁力计I²C驱动设计与工程实践

磁力计是嵌入式系统中实现电子罗盘、姿态解算和地磁导航的核心传感器,其数据可靠性依赖于精确的I²C通信时序与寄存器状态管理。HMC58X3系列采用标准I²C协议,但需严格遵循DRDY轮询机制与寄存器配置状态机逻辑,避免因固定延时或错误模式设置导致数据陈旧或饱和。该器件支持多量程与采样率配置,工程价值体现在低功耗(100μA待机)、高分辨率(0.9 mG/LSB)及内置温度补偿能力。典型应用场景涵盖无人机航向校准、可穿戴设备电子罗盘及工业磁场监测。本文围绕HMC58X3在ARM Cortex-M平台的mbed

weixin_42186387的博客 230

ESP32无人机飞控实战:ESP-Drone开源项目详解与PID整定指南

这次我们来看一个基于ESP32的FPV无人机飞控项目。这个项目展示了如何用低成本硬件实现专业的无人机飞行控制,核心是ESP-Drone开源飞控系统,它基于Crazyflie项目并针对ESP32平台进行了优化。 ESP-Drone最值得关注的特点是它完整实现了从传感器驱动到飞行控制的整个软件栈,支持多种控制算法,特别是对PID控制器进行了深度优化和测试。硬件门槛很低,只需要ESP32开发板和常见的MPU6050、HMC5883L、MS5611等传感器模块,就能搭建一个功能完整的飞控系统。 本文将详细介绍ESP

weixin_34406086的博客 600

STM32F103驱动HMC5883L:裸机到稳定磁航向计算实战

在嵌入式导航与航向测量领域,电子罗盘是低成本获取方位信息的核心方案。通过STM32F103微控制器读取HMC5883L三轴磁力计数据,结合I2C通信协议和磁场校准算法,即可实现0°~360°的稳定磁航向输出。本文从磁阻传感器工作原理出发,解析磁场数据采集、零偏校准、atan2方位角运算及滑动平均滤波等关键技术,并针对STM32F103的I2C接口实现、寄存器配置与抗干扰调试给出实践经验。该方案可广泛应用于无人机定航、机器人导航、手持罗盘等场景,同时为后续融合加速度计或GPS提供可扩展的工程基础。

weixin_33884611的博客 268

STM32F103+HMC5883L电子罗盘实战:从I2C读取到校准与航向角计算

地磁场是天然的绝对方向参考,磁力计通过感知磁场分量即可确定航向。STM32F103与HMC5883L作为经典的MCU与磁传感器组合,广泛应用于电子罗盘、小车导航、手持设备等场景。然而,要获得稳定可靠的角度输出,并不是简单调用I2C读取原始数据、套用atan2公式就能实现。传感器布局、I2C时序、噪声滤波、硬铁与软铁校准、磁偏角修正、倾斜补偿等环节,都直接影响航向精度。本文从磁力计工作原理出发,结合工程实践,系统讲解基于STM32F103读取HMC5883L的完整链路:如何通过软件I2C稳读取数,如何用平面转

weixin_33845881的博客 389

STM32F103与HMC5883L实现电子罗盘:I2C通信、校准与航向解算

电子罗盘是导航、定位和姿态解算中不可或缺的传感器模块。磁力计通过感知地磁场方向输出原始数据,而MCU通过I2C总线与传感器通信,完成数据读取。在嵌入式领域,STM32F103凭借丰富的外设和成熟的生态,常被用于驱动HMC5883L这类三轴磁力计。然而,直接读取的磁场数据往往存在硬磁干扰,必须通过校准算法消除偏移,才能准确计算航向角。本文从I2C通信协议入手,讲解寄存器配置与数据读取方法,并基于STM32F103的工程实践,分析校准流程、方位角计算、低功耗设计以及掉电保存等关键环节。掌握这些技术,不仅能实现一

weixin_33787529的博客 384

微信取证不求人:最新免费DAT解码工具使用指南(含闪退解决方案)

本文提供了一份详细的微信DAT文件免费解码工具使用指南。针对用户常见的图片无法查看问题,手把手教学如何安全获取并操作开源图形化工具,将加密的DAT文件一键还原为JPG/PNG图片。文章重点剖析了DAT文件的加密原理,并给出了详细的步骤解决工具运行中最常见的“程序闪退”等疑难杂症,帮助普通用户轻松完成微信取证。

m0n1o2p的博客 471

SOC Boot学习(二)——JTAG Debug介绍

JTAG(Joint Test Action Group ,联合测试行动小组 ) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP ( Test Access Port ,测试访问口),通过专用的 JTAG 测试工具对内部节点进行测试。如今大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、 DSP 、 FPGA 器件等。

yttt的博客 1596

IAR调试CC1310的错误:Fatal error:Failed to connect to the XDS emlulator (Error -241 @ 0x0:)

从simplelink_cc13x0_sdk_2_10_00_36导入collector工程后,rebuild后进行debug,出现了如图错误:Fatal error:Failed to connect to the XDS emlulator (connect ICEPick)...(Error -241 @ 0x0)A router subpath could not be accessed....

qq_40417648的博客 6221

2018南京大学计算机夏令营机试

1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...

climber16的博客 1万+

从入门到精通:用友BIP旗舰版全模块实施与运维实战指南

本文详细介绍了用友BIP旗舰版的全模块实施与运维实战指南,涵盖财务云、供应链云、生产制造等核心模块的配置与优化技巧。通过渐进式学习法和实战案例,帮助用户从入门到精通,提升系统实施效率和运维能力,特别适合企业IT人员和实施顾问参考。

weixin_29207533的博客 885

详解AUTOSAR:AUTOSAR架构中的配置文件(拓展篇—7)

查看AUTOSAR代码包时会发现一些这样格式的文件:xxx_PBcfg.c、xxx_Lcfg.c和xxx_Cfg.h,本篇博文讲一讲这几个配置文件的作用和特点。

不脱发的程序猿 2129

使用 ABAP 代码动态创建新的 Function Module

通过内表。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6896

vue3:最新实现腾讯人脸核身+增强版人脸核身使用方法及示例源码,Vue3如何使用腾讯云慧眼人脸核身,提供人脸核身案例、身份信息核验、活体检测与核身比对等示例代码(后端spring与thinkphp)

vue3接入腾讯人脸核身,腾讯云人脸核身Vue3+后端代码,H5人脸核身,vue3 H5如何使用腾讯人脸核身sdk,vue3+thinkphp腾讯人脸核身,Spring Boot接入腾讯云人脸核身教程,hinkphp腾讯人脸核身,vue3人脸核身插件接入流程,vue+spring boot实现腾讯人脸核身,vue3接入腾讯云【增强版人脸核身接入】,vue3 h5微信公众号网页腾讯云慧眼人脸核身,tvue3接入人脸核身SDK,vue3+typescrip+vite接入慧眼实名认证,vue3腾讯云活体人脸核身(

✅ 精选推荐文章 4116

深度学习工具包 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")

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 开源自托管部署平台 Openship:把 Vercel 般体验搬回自己服务器
下一篇: Amesim与Simulink联合仿真全流程:S-Function接口配置与避坑指南
weixin_34226182
博客等级 码龄11年 3058粉丝 1147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值