用S3C2410实现铁路数据实时采集系统

MiNI2410裸机程序详解及应用:深入嵌入式开发 MiNI2410是一款基于ARM920T核心的高性能嵌入式微控制器,广泛应用于工业控制、车载设备以及智能终端等领域。它拥有丰富的I/O接口、稳定的操作系统支持和强大的数据处理能力,使它成为开发小型智能化项目的一个非常理想的选择。 阅读详情

1 引  言

  随着列车全面提速以及铁路部门客货运输量不断增大,铁路线路负荷不断加重,铁路安全问题日益突出。目前铁道检测部门主要采用铁轨检查车检测铁轨质量,但是由于铁轨检查车价格昂贵,各机务段配备的数量有限,不能满足铁路检测部门对铁轨质量数据连续检测和积累的要求。因此铁道检测部门迫切需要一种可靠性高,实时性强的小型智能系统作为铁轨检查车的补充。针对这种情况,本文设计了一种新型铁路线路质量远程实时监测系统。本系统综合利用移动通信和嵌入式系统设计等技术,实现了铁轨数据的实时采集、分析、传输,以及自动评估和报警。

  ARM技术是嵌入式系统方面的主流技术。目前市场上ARM芯片速度可达几百兆,以此为主控芯片可在硬件上实现高速、高精度且具有一定处理能力的数据采集处理通信系统。本系统采用的Samsung公司的S3C2410处理器,结合Windows CE操作系统来实现其功能。S3C2410处理器是一款低价、低功耗、高性能的16/32位系统微处理器,在嵌入式应用领域有着良好的表现。S3C2410具有丰富的接口资源,能够满足本系统的设计需求。Windows CE操作系统是专门为掌

 
上型电脑设计的电脑环境,它将便携式技术和现有的Windows技术相结合,并提供了丰富的驱动资源。本系统在设计中采用了CMDA模块和USB接口。原始数据可通过USB接口取出,进一步进行事后处理。本系统通过CDMA模块连接无线网络,将处理完毕的数据实时地送到客户端,以实现特定信息查询和告警功能。

  2 系统工作原理

  系统分为ARM处理器模块、协处理器FPGA模块、A/D模块、 传感器 模块和外部通信模块5部分,基本结构如图1所示。ARM处理器和现场可编程门阵列(FPGA)共同组成监控系统的核心处理单元。传感器模块采集的模拟信号经A/D模块量化后,存入FPGA生成的FIFO中;ARM处理器通过FPGA产生的中断信号来读取FIFO中的数据;数据处理完毕后ARM处理器通过FGPA控制CDMA模块建立TCP/IP连接,连接一旦建立则通过无线网络将数据传回客户端。

系统结构框图

图1  系统结构框图

  2.1 协处理器FPGA模块

  本系统的协处理器采用Xilinx公司的FPGA,型号为SPARTANIIE XC2S100E。该芯片共有2700个逻辑单元,10万个逻辑门,片内块RAM为40 KB。协处理器内部结构见图2。其具体实现以下功能:

  • A/D模块读/写时序控制;
  • 生成3个FIFO,其主要功能是存储经A/D编码的数据;
  • 提供ARM处理器控制信号。

  FPGA芯片分4部分来实现上述功能:

  (1)内部控制信号产生器

  FPGA对50 MHz时钟分频产生A/D芯片采样时钟Sampleclk和ARM处理器外部时钟Sysclk;Sysclk经锁相环电路(PLL)后产生ARM处理器工作所需的时钟信号。

  (2)ARM控制器

  提供ARM处理器正常工作所必须的各种控制信号;实现ARM处理器地址总线、数据总线和外部中断信号接入。

  (3)A/D控制器

  控制A/D模块的数据转换。产生A/D转换起始信号(/HOLD),检测数据转换完成信号(/EOC),产生FIFO写入信号,实现数据转换通道选择。

  (4)FIFO存储器

  生成3个16位、数据深度为511的FIFO,完成A/D转换数据的存储。

  2.2  ARM处理器模块

  ARM处理器模块由FLASH、SDRAM和S3C2410共同构建。本系统选配用Samsung公司的K9F1208U0A构建8位FLASH存储器系统。K9F1208U0A单片容量为64 MB;选用两片单片容量为32 MB,数据宽度为16位的HY57V561620CT,并联构建32位SDRAM存储器系统,共64 MB的SDRAM空间可以满足嵌入式操作系统和各种复杂算法的运行要求。ARM处理器对各模块的控制则是通过底层驱动控制协处理器FPGA产生各种控制信号来实现。

协处理器内部结构图

图2  协处理器内部结构图

  2.3  A/D模块

  A/D转换芯片采用TI公司的ADS8364芯片,它具有以下性能:

  • 6个独立数据输出通道;
  • 模拟信号差分输入;
  • 6个独立的16位 ADC ;
  • 采样频率最高为250 MHz;
  • 采样精度到最后两位,且抗噪性能好。

  通过FPGA内产生的采样时钟信号控制A/D模块的采样频率。FPGA输出宽度为一个时钟周期的低电平脉冲到/HOLD_X引脚,A/D转换开始,经16.5个时钟周期后A/D转换完成。A/D模块根据FPGA内产生的读信号和通道选择信号选择相应的FIFO存储数据。

 2.4  传感器 模块

  传感器模块可以根据所须采集的数据来选择。本系统主要运用于火车机车车体震动测量,所以采用3个使用ADXL105高精度单轴加速度传感器芯片制作的加速度测量模块。测量模块分别安置于车体底部的垂直方向和水平方向,用于测量车体在X、Y、Z方向上的加速度。测量数据以差分信号的形式输入到精密 放大器 中,经比较放大后直接送到A/D模块中。

 

  2.5  外部通信模块

  外部通信模块由两部分组成: 485通信模块和CDMA模块。

  485通信接口采用的是MAXIM公司的MAX1490芯片。这是一款完全隔离的485数据接口芯片,单工工作方式,传输波特率最大可达2.5 Mbps。其输出引脚直接与ARM处理器的串口2(UART2)相连;ARM处理器通过串口2读取时间和坐标等相关数据的广播信息。ARM处理器串口0(UART0)与AnyData DTGS800 CDMA模块相连;监测数据经预处理后通过CDMA模块发送到地面服务器。

  3  软件设计

  软件设计主要使用Embedded Visual C++语言和VHDL语言。VHDL语言用于编写FPGA程序;ARM处理器的调试则使用C语言。

  系统开始工作后ARM处理器和FPGA协处理器中的FIFO开始初始化。经A/D转换后的数据存入3个数据输出通道对应的FIFO中。FIFO中的数据容量达到一定限度即产生中断,ARM处理器中的主程序产生中断等待线程;一旦中断产生则进入中断服务程序,读取数据。数据经检测程序进行预处理后通过CDMA模块发送出去。图3为系统工作流程图。

系统工作流程图

图3  系统工作流程图

  3.1  系统的同步处理

  因为A/D模块与FPGA协处理器上电即开始工作而ARM处理器完成系统加载,端口初始化大概需要10 s左右的时间。在这个过程中FIFO中存储的数据已经被写满。如果ARM处理器在程序加载完成后直接使用这部分数据则会产生检测结果与广播信息不匹配的问题。为防止系统因各模块工作时序混乱而出现的数据检测错误的情况。在ARM完成Windows CE系统加载并进入检测主程序后产生一个清零信号用于清除3个FIFO中的数据。实现系统的同步工作。

  3.2  中断的产生及处理

  在本系统中如果对A/D转换数据采用实时读取的方式,则必然导致ARM处理器工作效率较低,所以在电路设计时采用了中断方式。A/D模块输出数据以循环方式分别写入3个FIFO中。一旦FIFO中可使用数据容量减小到一定限度则产生中断,ARM处理器进入中断服务程序并读取FIFO中的数据。

  3.3  列车广播信息读取

  火车机车广播信息通过监控设备不断地发送广播信息。信息传输以标准的RS485传输协议进行,通信波特率为9600

 
bps,采用10位异步通信方式:1位起始位+8位数据位+1位停止位。每组数据包由17字节数据组成,包括月日时分秒、时速、公里标、交路号和车次。数据格式为:起始位+数据位+停止位+BCC校验。其中:起始位为1字节,固定为0x02;数据位为14字节;停止位为1字节,固定为0x03;BBC校验为1字节,是前面15字节的“异或”校验。

  软件实现:接收广播信息程序的实现主要是利用了Windows的消息机制。首先初始化S3C2410芯片的UART2口,包括设置波特率为9600 bps,配置端口,并将端口与事件绑定。然后启动线程不断侦听端口。如果有数据输入则会产生读取事件,此时线程读取一个字节的数据,并由串口将数据发送至主线程。最后,主线程通过相应函数接收数据,数据接收完毕则对数据进行长度检测和异或校验。如果检验通过则将数据转存入二级缓存(一级缓存继续存放数据),并通知上级模块读出数据;然后清空二级缓存,等待下次数据进入。广播信息读取程序界面见图4。

广播信息读取程序界面

  3.4  加速度数据获取

  数据采集是通过应用程序与驱动程序的交互来完成的。实现交互的方式有很多,例如可以利用callback函数(回调函数)或将函数应用程序中的数据处理函数指针传给驱动,以及使用SETEVENT等来实现。考虑到软件的升级,本系统采用的是SETEVENT方法。Windows CE系统与PC上的系统存在很大差异。一旦系统的某些模块有所改动,必须重新编译Windows CE系统和烧写FLASH,工作量较大。使用SETEVENT的方法可在不改动驱动的情况下对应用程序进行调试,从而避免了反复烧写FLASH。

软件设计思路:数据采集软件启动后必须对FIFO中数据进行复位。因为从Windows CE系统启动到数据采集软件开始工作需要15 s,但 A/D模块及FIFO模块在系统上电后即开始工作,因此如果使用这部分数据就会造成数据与列车广播信息的不匹配。驱动程序在响应中断后通过SETEVENT机制通知应用程序,此时数据读取控制权就完全交给了顶层用户。用户可以根据自己的需要来控制数据的读取及处理。数据采集程序界面见图5。

 

  4  结束语

  本文所研制的系统综合利用了移动通信和嵌入式系统设计等技术,与传统检测设备相比,大大提高了线路监测的实时性及系统性。同时,该系统注重监测数据处理和检测方法的研究,并在实际系统中加以应用。

  本系统在设计时充分考虑了电路的灵活性和通用性,可根据不同的功能要求编写相应的VHDL语言程序。系统所使用的Windows CE操作系统可以任意裁剪,这对于功能的转换很有帮助。本系统已研制完毕,现处于现场实验阶段。

最小系统原理图(s3c2410) 最小系统原理图 MEMORY CONTROLLER FLASH 8M*16bit SDRAM 16M*32bit UART(Universal Asynchronous Receiver and Transmitter) RS232 POWER 立即下载

相关推荐

5090D显卡安装LLaMA-Factory避坑指南:PyTorch与CUDA版本兼容性问题解决

本文是针对5090D显卡安装LLaMA-Factory时遇到的PyTorch与CUDA版本兼容性问题的详细解决指南。文章深入剖析了因GPU架构代际差异导致的“no kernel image”报错根源,并提供了从环境诊断、安装匹配的PyTorch Nightly版本,到最终集成验证的完整路径,帮助用户确保LLaMA-Factory在5090D上稳定运行。

Apple的专栏 868

火车头采集规则:数据捕获高效攻略

火车头采集作为一种关键的网络数据抓取技术,其作用在于有效地收集、分析及处理各类网络信息。在实际操作中,规范用车头采集的方式能够显著提升采集工作的效率与精度,确保运行稳定。本篇文章将深入阐述车头采集文章规则的核心地位,并提供如何建立高效实用规则的指导策略,旨在优化数据捕获流程。

oUY5dETx的博客 1244

代付系统/代付系统源码/支付宝代付系统/API代付系统

简介: 其他站买的,没有做测试,源码是JAVA的,附带了安装文档,需要的拿无售后 源码下载地址https://www.skpan.cn/2QnIARSZDxG 代付系统/代付系统源码/支付宝代付系统/API代付系统 系统流程: 后台开通代理——开通商户——商户做代付(后台手工提交和 api 提交两种方式) 1、纯代付系统 2、支持个人支付宝全自动 3、支持单笔/批量/API接口方式代付 4、支持白名单、谷歌验证 5、收付款模式采用自动回调/自动转账 一、运营平台 商户管.

刀客源码网 5575

bluetooth(蓝牙)在S3C2410上的移植

(一) 在Red hat 9上安装Bluez在pc上的安装我参考了OReilly的Linux Unwired一书,chapter 7中详细地介绍了linux下的bluetooth的基础知识、安装、配置和使用。安装前必须了解一下bluez的基本结构,直接位于发射传输协议之上的 协议是HCI(host control interface),我的手机和蓝牙GPS用到的高层协议是服务发现协议SDP和模拟

baozhongchao的专栏 4246

STM32F4XX软件模拟I2C实现MPU6050姿态数据采集

本文详细介绍了在STM32F4XX平台上通过软件模拟I2C驱动MPU6050传感器实现姿态数据采集的完整方案。内容涵盖软件I2C的GPIO配置、核心通信函数实现、MPU6050寄存器配置详解以及数据读取处理流程,为硬件资源受限的嵌入式应用提供了灵活的解决方案,并分享了调试技巧与常见问题处理方法。

butter的博客 678

手把手教你用TJA1145A实现CAN节点智能唤醒(含数据帧过滤技巧)

本文详细介绍了如何使用TJA1145A收发器实现CAN节点的智能唤醒功能,包括数据帧过滤技巧和超低功耗设计。通过硬件级帧过滤和双条件唤醒机制,TJA1145A在保持微安级休眠电流的同时,能对特定报文做出毫秒级响应,显著提升电池供电设备的续航能力。

weixin_28721917的博客 249

基于ARM9的无线电台网络控制系统的设计与研究

基于ARM9的无线电台网络控制系统的设计与研究时间:2009-03-18 16:45:18 来源:电子测量技术 作者:何君 徐益平 陈雪丽 慈文彦1、引言       在如今的信息时代,由于人们对系统性能和成本控制要求的不断提高,嵌入式系统凭其优良的性价比和独特的便利性得到了越来越多的人们的青睐。无线电台已经由传统的模拟式向数字化演进,由孤立系统向网络互联迈进。

linglongyouzhi的专栏 1310

华为od 面试八股文_C++_02_含答案

华为od 面试八股文_C++_02_含答案

MISAYAONE的博客 3121

51c大模型~合集111

OpenAI 的某发言人表示:「为了提高清晰度和安全性,我们增加了一个额外的后处理步骤,其中模型会审查原始的思维链,删除任何不安全的内容,然后简化某些复杂的思维。可以看到,虽然 ChatGPT 确实完成了任务并展示了总结版的思维链,但似乎并未如 OpenAI 发言人说的那样给出与提示词语言同样语言的总结版。北大-灵初联合实验室表示,Align-DS-V的多模态强推理能力是VLA模型大脑端的核心,接下来的研究训练计划,是利用多模态推理模型的跨模态穿透能力,实现action穿透,最终实现真正高效的VLA模型。

whaosoft~aiotの开发板商城 2317

出现 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the 解决方法

Access to XMLHttpRequest at 'http://127.0.0.1:5000/api/data' from origin 'http://10.197.0.79:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

码农研究僧的博客 1万+

glibc: GLIBC_2.28‘ not found

这个时候,应该怎么解决,因为当前运行的机器是低版本,而程序是高版本,解决方法,或者是将程序降级,或者将当前系统升级。在一个glibc的接口版本是GLIBC_2.25的lab上,运行不了在2.28上编译的程序。看哪一个方便,但是不能通过 临时复制libc.so 文件来解决,因为会遇到下面的错误。所以如果是简单解决就是按照低版本的应用程序,来适配当前系统的glibc版本。比如下面的程序运行提示。

mzhan017的博客 2400

【Reading Notes】(7.10)Favorite Articles from 2024 October

验证码被命名为 CAPTCHA,是“自动区分计算机和人类的图灵测试”(Completely Automated Public Turing test to tell Computers and Humans Apart)的缩写,以一种在线表格测试的形态存在,用来验证用户是真人而非机器人。报告显示,在2023年的车载激光雷达市场,中国厂商依然是领跑全球,禾赛科技、速腾聚创、图达通、华为以及览沃等中国激光雷达供应商,合力拿下了全球84%的市场份额。,帮助世界推动了模拟分子、天气预报的研究,下一代超算已经接任。

bryant_meng 5427

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

weixin_44218929的博客 164

深度学习工具包 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&#39;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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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, &#39;Too big error&#39;);```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(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);```[![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 锁屏 相关源码待公开

工厂设备接MES为什么慢:协议识别与点表配置自动化的技术拆解

工业现场设备接 MES 的周期主要消耗在协议识别与点表配置。本文拆解这条链路的四层结构,给出点表映射的数据模型、两种部署架构的对比,以及可直接落地的三项验收口径与校验代码。适合工控集成、MES 实施、设备联网方向的工程师。

emfuture的博客 370

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# 数据结构和特殊类型

.NET Core(现称.NET)提供丰富数据结构,优化性能与开发效率。日常开发首选List<T>和Dictionary<TKey,TValue>;高性能场景推荐Span<T>与Memory<T>减少内存分配;并发环境使用ConcurrentDictionary等线程安全集合;避免非泛型集合如ArrayList。

cccloveforever的博客 667

list

的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。,因此反向迭代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对正向迭代器的接口进行包装即可。是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。迭代到该位置,在这段位置上迭代需要线性的时间开销;最大的缺陷是不支持任意位置的随机访问,比如:要访问。还需要一些额外的空间,以保存每个节点的相关联信息。个元素,必须从已知的位置。

xie0510_的博客 268

向 excel、word、pdf 三种文档中占位符插入数据

【代码】向 excel、word、pdf 三种文档中占位符插入数据。

weixin_45934659的博客 48

C++ STL 反向迭代器:从源码框架到适配器实现

在 C++ STL 中,反向迭代器(reverse_iterator)是一个很典型的设计案例:它本身并不直接持有容器数据,而是通过封装一个正向迭代器,把「前进」变成「后退」,从而让同一个容器既能正序遍历,也能逆序遍历。本文从 SGI-STL 3.0 的源码框架出发,梳理反向迭代器的设计思路,再手写一个通用的迭代器适配器,并在vector和list中完成适配与测试。在 SGI-STL 3.0 中,反向迭代器的核心源码位于。反向迭代器是一个适配器,各个容器再基于它适配出自己的反向迭代器类型。下面截取list。

Godbro的博客 229

软件商店常见问题标准处理流程

从底层软件源来看,/etc/apt/sources.list配置错误、源地址失效、公网与内网离线源混用、ARM64与x86_64架构源串用,以及DNS解析异常、系统代理配置错误,都会导致商店无法获取应用数据;打开该应用,确认可正常运行;软件商店作为系统内置的图形化软件分发与安装入口(UKUI桌面配套组件,底层依赖APT软件源),承担着应用软件的浏览、搜索、下载、安装、升级与卸载等核心功能,是终端软件部署与管理的关键通道。覆盖软件商店启动、页面加载、应用下载、安装、卸载、搜索、自身更新等全部业务场景。

qq_39496637的博客 265

【AI 开发从入门到进阶 · 10】收官篇:LoRA 微调、模型评估、推理加速与生产部署全链路

本文系统梳理了大模型微调与生产落地的全流程,从决策是否微调、优选LoRA技术方案,到代码实现、效果评估、推理加速与FastAPI服务封装,最终构建可迭代的生产级AI系统。强调“逐级升级”原则,倡导以数据闭环驱动优化,避免技术冲动。全系列贯穿工程化思维,提供可复用模板与实战建议,助力开发者从模型训练迈向稳定可用的AI服务部署。

信息安全领域优质创作者|操作系统领域专家 16

LangGraph 的分离思想总结

LangGraph 的分离思想,本质上是对"高内聚、低耦合"这一经典工程原则在 LLM 应用领域的落地。它通过状态与逻辑分离、节点职责分离、控制流与执行分离、计算与持久化分离、编排与实现分离五个层面,把一个难以维护的"大黑盒"拆解成一组可组合、可测试、可观测的部件。理解这套分离思想,比记住 API 更重要——因为当你面对新的智能体场景时,真正指导你做出合理拆分的,正是这些分离原则。

张晨光老师的播客 367

[C++]:7.STL:list

好久不见,firdawn小课堂又和大家见面啦。今天我们要学习的内容是list容器,list也是一种常用的数据结构。下面是本章的思维导图,那么让我们开始学习吧!自定义的list,由三个结构构成。分别是链表的最小组成单位,也就是链表节点。以及迭代器类和list类其实要特别说明的是, List的迭代器,它不是单纯的指针,因为我们如果对指针直接进行解引用操作的话,我们得到的是这个节点,而不是节点里面存储的值并且我们对这个指针加加,得到的也不是下一个节点的地址,而是所在节点的下一个单位的地址。

2301_80817679的博客 176

Java基础:泛型、类型擦除与 PECS 原则

泛型允许类、接口和方法使用类型参数,把许多类型检查提前到编译期,减少显式类型转换,提高代码复用性。例如。

cjpabc的博客 310

RT-Thread 5.4.0 完整版架构剖析(下):IPC、时钟、内存、设备与组件

从 IPC 全量、时钟与定时器、内存管理,到设备框架、组件层、软件包机制、移植裁剪与速查表,补齐 RT-Thread 5.4.0 完整版的下半张地图。

194
上一篇: 项目/学习计划表
下一篇: 各种操作系统下清空、查看dns缓存的方法/命令
lanjunlee
博客等级 码龄19年 12粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值