92、嵌入式软件开发文档指南

嵌入式软件开发文档指南

在嵌入式软件开发过程中,文档的创建至关重要。它能帮助开发者更好地理解项目、跟踪进度、解决问题,还能为后续的维护和升级提供有力支持。本文将详细介绍嵌入式软件开发中需要创建的文档类型、如何确定文档的数量以及可能遇到的陷阱等内容。

1. 软件开发文档的基本类型

在软件开发过程中,每个开发步骤都应产生相应的文档。以下是一些基本的文档类型:
- 设计文档 :阐述每个组件的功能。
- 实现文档 :说明代码的工作原理,通常以代码注释的形式呈现。
- 测试计划 :规划如何验证系统是否真正工作。
- 测试结果 :展示系统是否正常工作的证据。
- 缺陷列表 :记录软件存在的问题以及是否已修复。
- 用户指南 :提供用户使用和维护产品所需的信息。
- 营销材料 :用于帮助销售产品的相关文档。
- 进度和人员计划 :明确各项任务的完成时间和责任人。
- 软件开发计划 :确定要遵循的开发流程以及需要生成的文档类型和数量。

如果在上述每个方面都没有至少一份文档、图纸、电子邮件文件夹或类似的资料,那么很可能文档生成不足,迟早会因此遇到问题。

2. 确定文档的数量

有些人认为紧密的团队合作可以替代文档的创建,在一定程度上

相关推荐

92、嵌入式软件开发文档的生成与管理

本文探讨了嵌入式软件开发过程中文档生成与管理的重要性,分析了团队协作与文档编写的替代关系,并提供了确定文档生成量的方法和建议。文章还列出了嵌入式软件开发所需的核心文档类型及其详细程度的判断标准,同时强调了避免形式主义和保持文档更新的重要性。最后,推荐了相关的参考资料和文档编写标准,以帮助开发团队提高文档质量并提升项目可维护性。

mqtt6iot的博客 74

嵌入式软件开发文档模板.rar

嵌入式软件开发文档模板.rar

嵌入式资料

专业资料,需要一定基础才能理解,慎重下载,仅仅提供参考

嵌入式系统硬件设计

《Embedded Hardware:Know IT All》一书堪称嵌入式硬件设计领域的巨著,是多位畅销书专家倾心打造的全新力作。 本书内容之丰富,实例之经典,可谓嵌入式硬件设计大全。 本书覆盖面广,结构清晰。无论是嵌入式硬件设计者还是软件开发者,都能从中受益。本书详细解析了经典的电路原理设计图,这都是硬件设计在工程应用中的经验总结。即使初学者也能通过学习这些电路原理图完成更为复杂的硬件设计。通过本书的学习,嵌入式程序员会逐步领悟到软件设计思想,通过软件设计满足硬件兼容性的需求。从某种意义上讲,本书为软件开发者与硬件设计者之间的有效沟通奠定了对话基础。

嵌入式系统详细文档

一个关于嵌入式系统很详细的文档 第1章 概 述 1.1 研发背景 随着电子技术的发展,微型计算机应用迅速渗透到各个领域。工业控制领域中计算机应用从编程器、单板机、微机系统到工业网络,由简单到复杂,对软件的要求越来越高。近年来网络技术的飞速发展,又为工业自动化开辟了广阔的发展空间,用户可以方便快捷地组建优质高效的监控系统,并且通过采用远程监控及诊断、双机热备等先进技术,使系统更加安全可靠,在这方面,出现了许多应用软件,其中的典型代表就是工控组态软件,如昆仑通态软件公司的MCGS,亚控公司的组态王,Intellution公司的!FIX等。 组态软件的目的就是提供给用户一种二次开发平台,尽量减少组建工程过程中的重复劳动,隐蔽复杂的编程过程。而目前的组态软件大多停留在对人机界面的组态上,随着我国工业自动化水平的不断提高和普及,对工控组态软件的要求也越来越高。对设备驱动程序的可组态是目前研究的热点。 一直以来,工业控制软件缺乏统一的工业标准,不同厂家的软件之间进行通讯是非常麻烦的一件事。各个厂家的软件对控制系统硬件操作的设备驱动程序接口也各不相同,这样为了对市场上不同厂家的设备都能管理,控制软件厂家必须针对市场上的几百种常用的设备都开发设备驱动程序,而且当硬件设备升级、修改时,驱动程序也必须修改,这样做的代价无疑是相当高的。目前并没有一种软件能够很好的实现对设备驱动的所见即所得的支持[1]。出现这种现象的原因主要是外部设备种类繁多,所基于的协议也是千差万别,如果要实现一种比较通用的驱动很不容易。但是我们可以考虑提供一个一般工程人员非常熟悉的开发环境,在这个环境中通过简单易行的操作实现数据的采集和控制。用户只需要关注他们熟知的通讯规程,然后用一种图形化的方法来实现通讯的一个过程,而不需要对程序内部实现有所了解。所以希望通过这种二次开发平台的设计、开发来解决工控软件与大部分的硬件设备数据交换问题。 1.2 本文的目的和意义 本文主要目的是研究面向对象软件开发技术和软件设计模式在工业数据采集软件设计开发中的应用。内容基于一套包含多种智能控制模块的嵌入式实时控制软件,实际上就是一套软PLC软件包,并结合当前工控组态软件实际情况,开发符合国际标准的功能块图(Function Block Diagram?FBD)编程语言[3],即第四代编程语言(4GL语言),以方便用户的组态为目的,使用户不需要编程经验就可组态出优质高效的符合自己需求的工业控制系统,其功能块编译后实际上生成第三代编程语言(3GL语言),而本文要实现的FBD也就是C++的代码生成器。 这种FBD编程语言有着很广泛的应用价值: 首先,普通的工控组态软件要与设备连接,必须有支持所挂设备的驱动程序,运用符合标准的图形化FBD编程模块后,将不需对市场上的几百种常用的设备都开发设备驱动程序,也不需要专门的编程人员,而由用户根据实际需要,应用功能块来搭建完成,打破了组态软件仅限于人机界面的组态局面,实现设备驱动的可组态。例如可移植到北京昆仑通态自动化软件科技有限公司最新推出的嵌入式组态软件??MCGSE中,使其可以用图形化的FBD语言组态设备和策略,将监控和软逻辑集成一体。 其次,运用于嵌入式实时控制软件,可以作为独立的开发环境,与工控机配合使用,形成软PLC。形成一套面向中小型过程应用和设备集成控制的开放型控制系统。满足工控行业从简单到复杂的各种控制应用要求和各种设备过程自动化控制的应用要求,是用来代替硬PLC(可编程控制器)[4] 和各种设备过程控制系统的理想解决方案。 社会的发展以及先进的生产管理理念的不断引入,当今用户不仅要求系统本身能够完成各种常规及先进的控制要求,而且要求通过友好的动画界面显示现场生产的状况。普通的PLC加HMI人机接口界面软件构成的系统在快速逻辑控制应用领域有其优势[1],尤其在断续的生产过程以及各种设备控制应用领域有他的市场并能保持较为适中的系统价格,但在连续复杂的过程控制以及各种针对特殊应用要求的领域和具备先进的生产管理方面满足不了用户的要求,同时系统的可靠性也有待提高。我们通过软PLC来代替普通的PLC,并集成到现有的MCGS人机界面组态软件中不失为解决上述问题的好方法,实现将图形组态与控制器组态相结合。 笔者主要负责其中基于功能流程图的驱动程序软件的设计和开发,以实现设备驱动的可组态,使用户可方便的用FBD来开发设备驱动,针对大多数的工业过程控制应用如:石油化工、电站、钢铁冶炼、食品加工等要求,完成对控制器的控制策略的组态。工程人员只需简单地从功能块库中拖拽所需功能块到组态窗口中并用软接线连接起来就可快速的生成需要的控制策略。使用规范的FBD编程语言来增强昆仑通态的组态软件??MCGS的脚本处理功能和策略功能,提供可视化的I/O设置,简化设备驱动的开发;取代组态软件中原来的设备接口,完成数据采集和数据传送。然后考虑进一步完善界面和加强功能后作为单独的软件系统,形成一套软逻辑控制系统。 1.3 研究方法与思路 目前,在软件中实现与硬件设备的数据交换有以下一些方法: 1.编写特定设备的驱动程序。这种方式是最多和最常见的手段,一般使用VC、VB、Delphi的高级语言进行纯粹的程序开发。这种方法不仅可以开发数据采集程序,还可以编写硬件设备的底层驱动,功能非常强大。但是这种方式对开发人员要求非常高,开发人员必须非常熟练的使用这些开发工具,还要对在不同平台下的驱动设计方法、技巧十分清楚。一般来说,这种开发都是专业的软件开发公司的业务。对于工业控制中的技术人员不适合,并且这样开发出来的产品一般是二进制文件,硬件有了小的改动都需要修改源代码进行重新编译,不能做到很好的复用性。然而,在工业中使用的硬件设备基本结构相同,存在很小的差异,使用这种方法就不太适合。 2.建立统一数据接口标准[6]。如:OPC基金会制定了一套标准的OPC规范。OPC规范基于微软的COM技术,它规范了过程控制和生产自动化软件与用OPC服务器实现的硬件驱动程序之间的接口,并且提供基于工业自动化应用的统一数据传输平台。各个硬件厂商在开发自己设备时只要遵守这个规范,就可以用标准的通讯程序与硬件进行数据交换。但是,这只是提供一个通讯的框架,必须符合才能使用,它的灵活性很差。并且对于很多简单的智能仪表完全没有必要去遵循相对而言庞大的协议。 3.提供一个二次开发的环境。这里有两种方案[8]:一种是提供了I/O采集和数据通讯的动态连接库,然后在协议编辑器中编写通讯协议,最后生成一个工程文件。其中笛卡儿有限公司开发的Omni Server就是其中的代表作。另一种是遵循IEC1131标准的[3]。IEC1131-3标准是PLC程序设计语言的标准,它提供了一种非常灵活的程序开发方法,是一种面向图形的方法。关于IEC1131-3标准将在后面章节作详细介绍。由于基于IEC1131标准设计的程序基本都是PLC或大型控制器的编程软件,主要考虑的是实现硬件的内部功能,并没有将数据通讯的功能作为主要的考虑因素。 根据本课题的特点,通过参考IEC1131-3标准和其他PLC、控制器设计软件,探讨了一种基于功能块图(FBD)的驱动程序开发模式。通过将具体功能和框架分离的设计方法实现功能的易扩充性和跨平台的易移植性。 1.4 主要背景知识及技术 本文主要涉及工业控制领域的相关知识,在此领域中工控组态软件、PLC及其发展动向、IEC1131-3标准、嵌入式软件等是本文密切相关的内容,这些内容之间有着密切的联系,都是完成本文必不可少的。首先从大的角度看,本文属于工控组态软件的范畴,是组态软件在嵌入式系统平台下运行的一种形式,与嵌入式软件是密不可分的。那么,提到嵌入式就不能不提起PLC,PLC是目前在工业自动化控制领域运用非常广泛的一种逻辑器件,正由于它的运用广泛,人们才十分关注他,在实际的生产应用过程中不断发现其使用的不便之处,摸索出解决问题的方法,即用符合IEC1131-3标准的编程规则,来实现复杂的逻辑控制,并考虑用软件来替代硬的PLC,这也是PLC发展的新的动向。相关的内容将在后面章节作详细介绍。 另外,软件设计用到的面向对象软件开发技术和软件设计模式,也将在本文中作较细致的阐述。 1.5 主要研究内容及本文结构安排 课题内容基于一套包含多种智能控制模块的嵌入式实时控制软件,运用面相对象软件设计方法对其中的FBD功能块进行分析设计,参考IEC1131标准,提出适合需要的编程模型并定义需求、进行功能设计和开发。 作为该课题的负责人,笔者的工作主要是: 1. 运用计算机科学技术知识,结合工业自动化控制领域的相关知识,确定课题的范围。 2. 确定功能块图的模型,根据模型设计和开发FBD开发环境的系统框架。 3. 参考类似软件,结合本软件的要求,分析、编写数学“加”功能块的详细需求文档,实现模块的功能。 本文论述了课题的研究思路、工作和取得的研究成果,文章的内容结构安排如下: 本文分为三大部分: 第一部分,在第一章交代本课题的意义、背景和研究方向,使读者能够了解课题的来由和基本研究思路。 第二部分包括两章,在第二章中介绍嵌入式系统的相关知识和概念,并介绍了MCGS嵌入式实时控制软件的特点、软件结构等相关内容,在第三章讨论完成本课题中需要用到的一些知识和相关技术。为后续论文作必要的知识准备。 第三部分是整个软件系统设计和实现,是本文的主体部分。第四章阐述了FBD的设计思想及其实现效果,第五章中文章详细的介绍了系统的整体设计、核心框架的设计并给出了核心类的实现;第六章介绍了数学“加”模块的需求设计与实现。

C语言的嵌入式开发ppt文档

嵌入式C开发背景介绍 硬件平台和交叉编译环境 软件结构设计 内存操作 屏幕操作 键盘操作 性能优化

嵌入式系统设计与实例开发

ARM微处理与uC-OSII实时操作系统开发指南与设计实例,介绍了嵌入式系统的原理、设计方法及实例编程开发

【COMSOL】将一个面上数据导出CSV或txt格式的方法

在COMSOL中参数化扫描后,把一个面上或体里的数据按照CSV或TXT格式导出的方法。

dave496206的博客 2987

嵌套交叉验证的‘双循环’哲学:为什么你的模型评估总是不准?

本文深入探讨了嵌套交叉验证(Nested Cross-Validation)在机器学习模型评估中的关键作用,揭示了传统交叉验证方法存在的偏差问题。通过双重循环设计,嵌套交叉验证有效隔离数据,提供无偏评估,显著提升模型在真实场景中的性能预测准确性。文章还提供了工程实践中的优化策略和量化分析,帮助开发者在计算成本与评估精度之间找到平衡。

b3n4m5q6w7的博客 223

MSP430项目设计:2020年TI杯大学生电子设计竞赛 坡道行驶电动小车(C题)循迹小车(分享项目展示视频与源码)

文章目录题目要求一、硬件设计二、理论分析与计算三、电路与程序设计四、测试方案与测试结果五、项目展示 哔哩哔哩项目展示视频:https://www.bilibili.com/video/BV1oz4y1d7mH/ 百度网盘资料链接:https://pan.baidu.com/s/1PC-lkSORH_XCgIG-u3HCog 提取码:c7zz 取走记得点赞啊! 题目要求 1.任务 利用TI的MSP430/MSP432平台,设计制作一个四轮电动小车。要求小车能沿着指定路线在坡道上自动循迹骑线行驶。小车必须独立

mbs706的博客 4万+

STM32 伺服电机 指令脉冲+方向位置控制模式 主从定时器 实现PWM脉冲数精确控制

实验室有个项目涉及到多个步进电机以及伺服电机的控制,需要电机得到一个触发信号后精确移动一段距离。 下面以单个伺服电机控制为例,利用伺服电机的指令脉冲加方向位置控制模式实现jing'que ...

phcdd的博客 2万+

基于深度学习卷积神经网络的医学图像乳腺癌分类

一、项目背景与意义乳腺癌是女性最常见的恶性肿瘤之一,其早期发现和治疗对于提高患者的生存率和生活质量至关重要。然而,乳腺癌的诊断通常依赖于医生的经验和主观判断,这不仅耗时而且可能存在误差。近年来,深度学习技术特别是卷积神经网络(CNN)在图像处理领域取得了显著进展,为乳腺癌的自动分类提供了新的解决方案。本项目旨在利用深度学习卷积神经网络构建一套高效、准确的医学图像乳腺癌分类系统,辅助医生进行乳腺癌的早期诊断和治疗。二、技术实现。

2301_79810943的博客 976

Cadence创建异形焊盘教程(详细操作)

背景:一些常见的矩形/圆形焊盘,设置参数就可。碰到非规则的一些焊盘,那只能用Cadence Allegro PCB来画咯。 一、新建图形 【File】——>【New…】 弹出如下窗口,选择绘制的类型Shape symbol、路径,输入名字 二、设置参数 【Setup】——>【Design Parameters…】 Enhanced display modes:增强型显示模型。全部勾选上。 在【Design】设置单位为mm 设置偏移量(-50,-50) 三、绘制图形 1、找到原点,即参考

qq_42057393的博客 2万+

SAP CDS View association 的工作原理,与数据库传统 join 操作的区别讲解

笔者前一篇教程,介绍了 SAP CDS View 里如何创建 association:本文就来一一对这些问题进行解答。首先我们来研究如何消费创建好的 SAP CDS View 中的 association 数据。在上图 ABAP Development Tool 里展示的 CDS View 界面,点击 F8 快捷键,进入 Data Preview 即数据预览界面。我们随便选中一条行项目,右键,发现右键菜单里,赫然有一条的菜单项。看来这个功能肯定和 association 相关了。

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

面经-2023-哲库Zeku-数字芯片设计

面经-2023-哲库Zeku-数字芯片设计

w0shishabi的博客 3905

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: 76、数据控件:验证、表单与网格的综合指南
下一篇: 30、绘制自定义形状视图的详细指南
rust6ferris
博客等级 码龄4年 56粉丝 2232原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值