DW1000模块的STM HAL库裸机工程移植及官方驱动使用详解

嵌入式 专栏收录该内容
¥59.90 ¥99.00
459篇文章

DW1000是一种基于超宽带技术(Ultra-Wideband, UWB)的无线通信模块,广泛应用于室内定位、物联网和无线传感器网络等领域。本篇文章将详细介绍如何将DW1000官方驱动移植到STM HAL库裸机工程中,并提供相应的源代码。

  1. 硬件准备
    首先,确保你已经准备好以下硬件:
  • 一块支持STM32系列的开发板,例如STM32F4 Discovery;
  • DW1000模块。
  1. DW1000官方驱动下载
    访问DW1000官方网站,下载最新的DW1000驱动库。解压下载的文件,你将获得包含驱动源代码的文件夹。

  2. 创建新的STM HAL库裸机工程
    使用你喜欢的集成开发环境(IDE),创建一个新的STM HAL库裸机工程。确保选择与你的开发板相匹配的STM32系列型号。

  3. 添加DW1000驱动源代码
    将下载的DW1000驱动源代码文件夹中的所有文件添加到你的新工程中。通常,你需要将这些文件复制到你的工程目录的一个子文件夹中,例如"DW1000_Driver"。

  4. 配置工程
    打开你的工程配置文件(通常是以".ioc"为后缀的文件),进行以下配置:

5.1 配置时钟
根据你的硬件需求,配置系统时钟和外设时钟。确保时钟设置正确,以便与DW1000模块的要求相匹配。

5.2 配置引脚
为了与DW1000模块进行通信,你需要配置一些引脚。根据DW1000官方驱动提供的引脚映射表,将相应的引脚配置为SPI和GP

嵌入式物流小车RTLS实战:UWB+IMU融合定位与导航代码详解 实时定位系统(RTLS)是物联网和机器人领域实现空间感知的关键技术,其核心原理是通过多种传感器获取目标的位置信息。在嵌入式系统中,高精度的UWB(超宽带)技术常与高频的IMU(惯性测量单元)进行数据融合,以兼顾绝对定位精度与动态响应能力,这一技术组合为智能仓储、服务机器人等场景提供了可靠的导航基础。本文聚焦于**嵌入式物流小车**这一典型应用,深入剖析了从UWB驱动解析、IMU数据预处理到互补滤波与松耦合融合算法的完整代码实现链路,并分享了分层软件架构设计、多任务数据流处理以及导航控制调参等工程实践要点,旨 阅读详情

相关推荐

DW1000开发笔记:基于STM32 HAL库的裸机工程移植DW1000官方驱动

DW1000是DecaWave公司推出的一款超宽带(UWB)无线通信模块,其具有高精度、高速率和可靠性的特点,被广泛应用于定位、测距、物体检测等领域。在嵌入式系统中使用DW1000模块进行开发时,合理地移植DW1000官方驱动到STM32单片机上是非常重要的一步。通过以上步骤,我们成功地将DW1000官方驱动移植到STM32 HAL库裸机工程中,并实现了基本的数据发送和接收功能。下面是一个简单的例子,演示了如何移植DW1000官方驱动并实现基本的数据发送和接收功能。三、DW1000官方驱动源代码解析。

CodeMaven的博客 868

DW1000使用轮询方式发送数据!嵌入式开发笔记

本文将介绍如何使用DW1000的轮询方式发送数据,并提供相应的源代码。在发送数据之前,我们首先通过轮询方式查询DW1000的状态,直到DW1000准备好发送数据。接下来,我们将重点介绍如何使用DW1000的轮询方式发送数据。轮询方式是指在发送数据之前,通过不断查询DW1000的状态来确定是否可以发送数据。综上所述,本文介绍了如何使用DW1000的轮询方式发送数据。请注意,在实际应用中,可能还需要处理发送成功或失败的回调函数,并对DW1000的状态进行进一步的处理。函数用于初始化DW1000的寄存器配置。

Orion_O的博客 265

DW1000开发笔记(三)基于STM32 HAL库裸机工程移植DW1000官方驱动

一、官方驱动 Decawave官方提供了DW1000的芯片驱动库,整体框架如下图: 二、移植官方驱动 作者在本文中编写移植的驱动开源地址:HAL_Driver_Lib。直接添加到STM32CubeMX生成的工程中即可,若好用,记得github点亮星星呀~ 1. 复制文件 在工程目录中新建 Hardware/DW1000,复制官方驱动中的两个文件夹到该文件夹中,如图: 2. 添加文件到MDK工程中 添加在 Hardware\DW1000\decadriver 中的驱动文件: 添加在 Hardware

李肖遥的专栏 5009

DW1000开发笔记:基于STM HAL库裸机工程移植DW1000官方驱动

根据DW1000的引脚连接,将相应的引脚设置为输入或输出,并配置为合适的模式和速度。根据DW1000的引脚连接,将相应的引脚设置为输入或输出,并配置为合适的模式和速度。本文将介绍如何在STM HAL库裸机工程中移植DW1000的官方驱动,并提供相应的源代码示例。接下来,确保你的开发板上已经配置了合适的时钟源和引脚复用。在DW1000的官方驱动中,通常会提供一个初始化函数,用于配置DW1000的寄存器和参数。在DW1000的官方驱动中,通常会提供一个初始化函数,用于配置DW1000的寄存器和参数。

CodeSageX的博客 266

DW1000开发笔记(六)DW1000发送数据并等待另一个DW1000回应

系列文章 DW1000开发笔记(一)DW1000芯片概览 DW1000开发笔记(二)使用STM32硬件SPI+STM32cubeMX+HAL库测试DW1000通信 DW1000开发笔记(三)基于STM32 HAL库裸机工程移植DW1000官方驱动 DW1000开发笔记(四)DW1000使用轮询方式发送数据 DW1000开发笔记(五)DW1000使用轮询方式接收数据 一、移植发送数据并等待响应的代码 本文中使用基于STM32F103ZET6开发板+DW1000评估板作为发送数据并等待回应端。 1. 复制官

Mculover666的博客(嵌入式) 4481

DW1000开发笔记(五)DW1000使用轮询方式接收数据

系列文章 DW1000开发笔记(一)DW1000芯片概览 DW1000开发笔记(二)使用STM32硬件SPI+STM32cubeMX+HAL库测试DW1000通信 DW1000开发笔记(三)基于STM32 HAL库裸机工程移植DW1000官方驱动 DW1000开发笔记(四)DW1000使用轮询方式发送数据 〇、准备工作 之前的STM32L4小熊派开发板用于发送数据,这里我们使用一个STM32G070RB的板子连接DW1000官方评估板,作为数据接收端,硬件连接方式和STM32CubeMX工程配置生成请参

Mculover666的博客(嵌入式) 3065

DW1000开发笔记(四)DW1000使用轮询方式发送数据

系列文章 DW1000开发笔记(一)DW1000芯片概览 DW1000开发笔记(二)使用STM32硬件SPI+STM32cubeMX+HAL库测试DW1000通信 DW1000开发笔记(三)基于STM32 HAL库裸机工程移植DW1000官方驱动 一、移植官方示例 1. 复制官方示例文件 将官方驱动库中example下的第一个示例移植过来: 复制到之前移植的STM32CubeMX生成的工程文件中,并重命名文件为simple_tx_example.c: 将其添加到MDK工程中: 2. 修改官方示例文

Mculover666的博客(嵌入式) 2800

DW1000通信模块的开发与应用

它支持2.4GHz频段,具有较低的功耗和较长的通信距离,适用于室内定位、传感器网络等应用场景。DW1000是一款常用于无线通信的芯片模块,广泛应用于嵌入式系统中。本文将介绍如何使用DW1000进行数据的发送和接收,并给出相应的源代码示例。函数获取接收到的数据,然后进行相应的处理。首先,我们需要对DW1000进行一些基本的配置。以上就是关于DW1000通信模块的开发与应用的介绍,希望能对你有所帮助。为了简化DW1000的控制,我们可以使用开源的DW1000库。设置目标地址,即另一个DW1000模块的地址。

DevCyberX的博客 605

DW1000通信测试:使用STM32硬件SPI和STM32CubeMX与HAL库

通过使用STM32的硬件SPI接口、STM32CubeMX和HAL库,我们可以方便地进行DW1000模块的通信测试。你可以根据自己的需求进行相应的修改和扩展,以满足更复杂的应用场景。在嵌入式系统开发中,DW1000是一种常用的无线通信模块,可以实现精确的定位和通信功能。本篇文章将介绍如何使用STM32的硬件SPI接口、STM32CubeMX和HAL库来进行DW1000的通信测试。接下来,我们将编写DW1000通信的代码。函数中进行了SPI接口的初始化和DW1000的初始化。在主函数中,我们通过调用。

CodeSageX的博客 490

STM32F1平台DW1000/DW3000 UWB定位工程:SPI驱动+低功耗休眠+完整编译结构

面向嵌入式工程师的即用型UWB定位开发套件,直接支持Decawave DW1000和DW3000芯片,在STM32F103系列MCU上实现稳定优于10cm的室内测距精度。内含已验证的SPI底层驱动(deca_spi.su)、硬件抽象层封装(port.su/port.d)、深度睡眠管理模块(deca_sleep.su/deca_sleep.d),以及标签端基础功能参考实现(dw1000TagTempBackUp.c)。工程采用标准HAL库架构,目录结构清晰:Src/Inc存放核心逻辑,Drivers集成STM

kafka6courier的博客 220

UWB定位系统STM32源码实战教程

本文还有配套的精品资源,点击获取 简介:本教程将带领你深入了解UWB定位技术,使用STM32微控制器和ESP8266 WiFi模块构建一个完整的UWB定位系统。通过实践任务,你将掌握UWB通信、STM32...

weixin_34885746的博客 2369

dw1000-用户手册中文版

辣鸡网站怎么把资源都涨价到35了,改回来 谷歌机翻+个人修正的user manul,感兴趣可以看看 目录 Initializing the driver 6 2 DW1000的概述 13 2.1简介 13 2.2连接到DW1000 13 2.2.1 SPI接口 13 .2.1.1 SPI工作模式 13 2.2.2中断 16 2.2.3通用I / O 17 2.2.4 SYNC引脚 17 2.3 DW1000操作状态 17 2.3.1状态图 17 2.3.2主要运行状态概述 17 2.4上电复位(POR) 19 2.5上电时的默认配置 21 2.5.3默认发射机配置T 22 2.5.4默认接收器配置 22 2.5.5应该修改的默认配置 23 3消息传输 26 3.1基本传输 26 3.2传输时间戳 27 3.3延迟传输 28 3.4扩展长度数据帧 29 3.5高速传输 30 3.5.1 TX缓冲区偏移索引 30 3.5.2发送或接收TX缓冲区时写入 31 4讯息接收 33 4.1基本接收 33 4.1.1前导码检测 33 4.1.2前导码累积 34 4.1.3 SFD检测 35 4.1.4 PHR解调 35 4.1.5数据解调 35 4.1.6 RX消息时间戳 36 4.2延迟接收 36 4.3双接收缓冲器 37 4.3.1启用双缓冲操作 37 4.3.2控制正在访问哪个缓冲区 37 4.3.3双缓冲的操作 38 4.3.4使用双缓冲时的TRXOFF 40 4.3.5超限 40 4.4低功耗侦听 41 4.4.1配置低功率监听 42 4.5低功耗SNIFF模式 42 4.5低功耗SNIFF模式 43 4.5.1 SNIFF模式 43 4.5.2低占空比SNIFF模式 44 4.7.1估算第一条路径的信号功率 45 4.7.2估算接收信号功率 46 5 Media Access Control (MAC) hardware features 47 5.1循环冗余校验 47 5.2帧过滤 47 5.2.1帧过滤规则 48 5.2.2帧过滤注意事项 49 5.3自动确认 49 5.3.2自动接收器重新启用 51 5.3.3自动ACK周转时间 51 5.3.4帧挂起位Frame Pending bit 51 5.3.5主机通知 51 5.4发送并自动等待响应 52 6 DW1000的其他功能 52 6.1外部同步 52 6.1.1一次性时基复位(OSTR)模式 52 6.1.2单发发送同步(OSTS)模式 53 6.1.3一次接收同步(OSRS)模式 53 6.2外部功率放大 55 6.3使用片上OTP存储器 55 6.3.1 OTP存储器映射 55 6.3.2将值编程到OTP存储器中 57 6.3.3从OTP内存中读取一个值 58 6.4测量IC温度和电压 58 10附录1:IEEE 802.15.4 UWB物理层 59 10.1框架结构概述 59 10.2数据调制方案 59 10.3同步头调制方案 60 10.4 PHY头 61 10.5 UWB信道和前导码 62 10.6标准的其他细节 62 11附录2:IEEE 802.15.4 MAC层 62 11.1一般MAC消息格式 63 11.2 MAC报头中的帧控制字段 63 11.2.1帧类型字段Frame type field 64 11.2.2启用安全性字段Security enabled Field 64 11.2.3帧未决字段Frame pending field 64 11.2.4确认请求字段Acknowledgement request field 65 11.2.5 PAN ID压缩字段PAN ID compression field 65 11.2.6目标寻址模式字段Destination addressing mode field 65 11.2.7帧版本字段Frame version field 66 11.2.8源寻址模式字段Source addressing mode field 66 11.3序号字段The Sequence Number field 66 11.4 DW1000中的MAC级处理 66

CocosCreator3.8.2实战:5分钟搞定多分辨率适配与横竖屏自动翻转(附完整Demo)

本文针对CocosCreator3.8.2开发者,提供了一套5分钟快速集成、开箱即用的多分辨率屏幕适配与横竖屏自动翻转解决方案。通过封装好的ScreenAdapter组件,开发者无需处理复杂计算,即可实现等比缩放或拉伸全屏两种主流适配模式,并自动响应设备旋转,有效解决移动端UI在不同屏幕比例和方向下的显示问题。文末附完整Demo。

z4a5b6的博客 723

基于STM32的工业I/O模块硬件电路实现

深入解析基于STM32的工业I/O模块硬件电路实现,涵盖关键电路设计与信号处理,突出硬件电路稳定性和工业级可靠性,适合嵌入式开发者参考。

weixin_35835018的博客 454

VS2022离线环境下的NuGet包管理:从本地源到依赖项全解析

本文详细解析了在VS2022离线环境下如何高效管理NuGet包,包括搭建本地NuGet源的两种方案(本地文件夹源和私有NuGet服务器)、获取离线包的三大渠道以及依赖项处理的实战技巧。通过自动化脚本和依赖树分析工具,帮助开发者解决离线环境中的依赖项黑洞问题,提升开发效率。

5f4d3s2a1q的博客 1060

手把手教你用.NET Reactor 7.3.0保护跨平台.NET应用(含macOS/Rider配置)

本文详细介绍了如何使用.NET Reactor 7.3.0为跨平台.NET应用提供代码保护。文章重点涵盖了在macOS环境下的GUI工具安装、与JetBrains Rider的深度集成配置,并针对Avalonia UI框架提供了专项保护策略和避坑指南,帮助开发者有效防止代码被反编译和破解。

coffee的博客 594

Halcon实战:5个工业质检案例教你玩转机器视觉(附完整代码)

本文通过5个工业质检实战案例,详细拆解了如何运用Halcon视觉软件库解决精密测量、包装检测、字符识别、透明物缺陷检测及深度学习质检等复杂问题。每个案例均提供完整代码与核心思路,旨在帮助工程师掌握从问题分析到方案落地的系统方法论,提升机器视觉项目的实战能力与鲁棒性。

nut55的博客 260

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2932

倍压整流电路设计

倍压整流电路利用二极管和电容的充放电特性实现电压提升,可分为二倍压、三倍压及多倍压结构。其工作原理是通过交流电正负半周交替对电容充电并叠加电压,具有结构简单、成本低的优点,但带载能力差且纹波较大。典型应用包括示波器、电蚊拍等小电流高压场景。设计时需重点考虑电容耐压、二极管选型和负载匹配,高频驱动可优化性能。该电路在低功耗高压电源中具有独特优势,但需注意安全防护与电压稳定性问题。

硬核科技 1711

HBV模型

据说mHM模型也是基于HBV模型原理。 网上不同版本的HBV模型稍有差别 def hbv_main(n_days, params, air_temp, prec, dpem): #n_days 模拟天数 #air_temp 每月温度 #prec 降水 #dpem 每月蒸发 Tsnow_thresh = 0.0 ca = 410. # Initialize arrays for the simiulation snow = np.zeros(air_temp.size

m0_46268055的博客 2329

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

上一篇: HITECH海泰克触摸屏串口程序下载、上传和离散量报警设定指南
下一篇: 嵌入式系统入门:从零开始的沉浸式刷题指南
普通网友
博客等级 码龄3年 190粉丝 459原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值