
算法
文章平均质量分 82
Mr Robot
When I’m old and dying, I plan to look back on my life and say “wow, that was an adventure,” not “wow, I sure felt safe.”
山东南海岸程序猿,美国《时代周刊》2006年度风云人物;
《感动中国》2008年度人物;
联合国2019年度“地球卫士奖”
国际奥委会2022年”奥林匹克奖杯“获奖者
展开
-
分布式数据库集成解决方案2
我设计的这个系统是采用典型的C/S结构,但客户端连接服务器的网络采用电话线拨号,速度有限,传统Windows界面的客户端应用程序相应速度比较慢。于是我采用了优化数据库结构的方法,把数据分两部分存放,基础数据存放于客户机上,销售资料主要采用键码存放于服务器上,应用程序再现数据时从服务器取键码,到客户机取对应的解释。而一些基础数据则可以直接从本地的数据库中得到,如销售产品的描述,客户的地址/电话/传真,发货的库位等。在当今的信息社会里,互联网带来了相互连通的方便,而且知识爆炸,数据的分布式访问是个必然的趋势。原创 2023-05-14 22:06:17 · 1060 阅读 · 0 评论 -
分布式数据库集成解决方案
背景由于公司业务的发展,要求在其它三个城市设立货仓,处理发货业务。公司本部运行着一套用Sybase数据库的MIS系统可以实现发货,该系统用的是C/S结构。由于客户端连接服务器的网络采用电话拨号,所以直接把客户端软件直接安装在外地访问本部数据库,速度很慢。于是,公司成立了一个项目,专门解决这个问题。在这个项目中,我担任架构师。经过对现有系统的分析,我们决定利用Sybase提供的技术,采用分布式数据库集成的方法来改造目前的系统使之能适应新的需要。项目分三个阶段进行,一是进行需求分析,确定要增加的功能。原创 2023-05-14 22:22:08 · 919 阅读 · 0 评论 -
电影推荐算法2
【代码】电影推荐算法2。原创 2023-05-07 15:28:56 · 931 阅读 · 0 评论 -
电影推荐算法
下载数据集,解压到项目目录下的./ml-1m文件夹下。数据集分用户数据users.dat、电影数据movies.dat和评分数据ratings.dat。**原创 2023-05-07 15:20:33 · 840 阅读 · 0 评论 -
垃圾分类算法训练及部署
直接调用VGG-16模型作为卷积神经网络,包括13个卷积层、3个全连接层、5个池化层,后接全连接层,神经元数目为256,连接ReLU激活函数,再接全连接层,神经元个数为6,得到6维的特征向量,用于6个垃圾的分类训练,输入Softmax层进行分类,得到分类结果的概率输出。通过观察训练集和测试集的损失函数、准确率的大小来评估模型的训练程度,进行模型训练的进一步决策。将数据代入模型进行测试,分类的标签与原始数据进行对比,搜索“基于图像识别的你是什么垃圾”小程序,单击即可进入。界面采用简约的设计,只有一个按钮。原创 2023-04-28 17:20:55 · 1128 阅读 · 0 评论 -
垃圾分类算法
该数据集包含10种垃圾:纸箱、玻璃、金属、纸、塑料、其他废品、LED灯泡、瓜子、白菜、纽扣电池,每种垃圾数据集大约包含300~400张图片,压缩后的尺寸为512×384。首先,对图片进行缩放和翻转,并压缩为(150,150);(1)在C:\Users\Lenovo\Anaconda3\envs新建环境目录,例如,DeepLearning。(4)安装tensorflow-gpu后,在新建的DeepLearning环境中安装基础库。(3)配置出入安全组,开放端口有22、80、443、3306、5000。原创 2023-04-28 17:09:28 · 1728 阅读 · 0 评论 -
基于Arduino与LabVIEW的远程家庭监控系统
/ 设置MAC地址和IP地址byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };// 定义继电器1的控制引脚int SW2=4;// 定义继电器2的控制引脚int SW3=5;将DS18B20温度传感器的VCC和GND分别连接至Arduino Uno控制器的+5V和GND,以给DS18B20提供电源,DS18B20的DQ引脚接至ArduinoUno控制器数字引脚D2,且连接4.7kΩ的上拉电阻,因为DS18B20的DQ引脚正常工作需要添加上拉电阻。原创 2023-04-14 00:07:52 · 1046 阅读 · 3 评论 -
使用向量机(SVM)算法的推荐系统
需要Python 3.6及以上配置,在Windows环境下推荐下载Anaconda完成Python所需的配置,下载地址为https://www.anaconda.com/,也可下载虚拟机在Linux环境下运行代码。创建Python 3.5的环境,名称为TensorFlow,此时Python版本和后面TensorFlow的版本有匹配问题,此步选择Python 3.x。下载MySQL安装并配置。包括Python环境、TensorFlow环境、安装模块、MySQL数据库。安装MySQL数据库。原创 2023-04-09 10:04:09 · 690 阅读 · 0 评论 -
多通道ECG心率监测系统
下位机程序已经在文章中了,需要下位机库文件和上位机labview程序的可以在评论区留下邮箱,如果这篇文章帮助了你,请好评三连呀!原创 2022-10-24 10:39:13 · 4096 阅读 · 238 评论 -
趣学算法之分枝限界法
分枝限界法解决0/1背包问题解的结构、约束条件、目标函数和状态空间树的分析与回溯法相同。.分枝限界法求解0/1背包问题的关键问题是设计上下界函数LBB(X)、UBB(X):设p(i)/w(i)≥p(i+1)/w(i+1),0≤i<n-1X是状态空间树上的结点,从根到X的部分向量为(x0,x1,…,xk-1)。以X为根的子树可以看成背包载重为cu,由剩余物品组成物品集的0/1背包的状态空间树。Node为状态空间树的结点类;原创 2022-10-23 15:15:00 · 1187 阅读 · 21 评论 -
趣学算法之动态规划
努力是为了不平庸~原创 2022-10-19 21:15:00 · 840 阅读 · 2 评论 -
趣学算法之贪心算法
最小代价生成树设G =(V,E)是无向连通带权图,即一个网络。E中每条边(v,w)的权为c[v][w]。若极小连通子图G’包括图G中的所有顶点,并有尽可能少的边,则称G’为G的生成树。生成树上各边的权值代表相应的代价。树中各条边的代价总和是生成树的代价。图的生成树不唯一,采用不同的遍历方法,从不同的结点出发可得到不同的生成树。在G的所有生成树中,代价最小的生成树称为G的最小生成树。网络的最小生成树在实际中有广泛应用。原创 2022-10-17 21:15:00 · 722 阅读 · 4 评论 -
LabVIEW VISA编程笔记
①VISA的I/O控制功能适用于各种仪器类型,既包含了VXI仪器、GPIB仪器及串口仪器等各类仪器的控制操作,也包含了消息基器件、寄存器器件、存储器器件等仪器的操作,具有形式上的统一。VISA控制USB接口,该VISA地址的含义是:该仪器设备位于USB板卡0上,其制造商ID为0x0957(Agilent),型号编码为0x17A4,仪器的序列号为MY51135727。在VISA的结构中,仪器类型的不同体现在资源名称的不同,对VISA的使用者来说,不同类型仪器的使用在形式上和方法上都是一样的。原创 2022-10-09 21:15:00 · 3374 阅读 · 2 评论 -
labview信号频域分析算法
最近遇到一个使用单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。为啥用labview呢,因为LabVIEW是美国国家仪器公司(NI)的创新软件产品,其全称是实验室虚拟仪器工程平台(Laboratory Virtual Instrument Engineering Workbench),是一种基于G语言(Graphics Language,图形化编程语言)的测试系统软件开发平台。①在前面板,添加一个波形图控件用于显示变换前后的波形。原创 2022-10-09 16:44:24 · 8640 阅读 · 0 评论 -
labview信号时域分析算法
③为了提供测量的波形信号,选取“函数→信号处理→波形生成→正弦波形”来添加该波形,再为其频率和幅值端口创建输入控件。②切换至后面板,选取“函数→信号处理→波形测量→瞬态特性测量”来添加该测量,并为“瞬态持续期”端口创建一个显示控件。③为了提供测量的波形信号,选取“函数→信号处理→波形生成→正波波形”来添加该波形,再为频率和幅值端口创建输入控件。②切换至后面板,选取“函数→信号处理→波形测量→脉冲测量”来添加该测量,再为其输出端口添加3个显示控件。原创 2022-10-09 16:38:31 · 3179 阅读 · 0 评论 -
三轴加速度传感器的驱动编程
三轴加速度传感器可以感知三维空间坐标系中,每个方向上的重力加速度分量,据此,可以计算出当前传感器翻转后的真实角度,故加速度传感器又称倾角传感器,一般多用在智能手机、云台以及航模飞行器等设备上。原创 2022-10-08 17:08:47 · 1321 阅读 · 0 评论 -
CAN驱动程序编程
ID屏蔽位(U32),就是确定接收到的报文中的ID号、帧类型,哪些位是必须与前面设置的参数完全一致还是可不关心,如果设置成0xFFFFFFFF,表示外部发送过来的报文必须与过滤器中预期设置的参数完全一致,反之,如果设置为0x00000000,则表示前面所有的设置无效,任何报文都可以接收,过滤器呈完全放开状态,可以看出,ID屏蔽位其实就是子网掩码;发送的是携带重要数据的数据帧还是回读命令的远程帧;一般情况下,要想发送一帧报文,需要设置以下4项:输入报文ID号,如果是11位的标准帧,那么ID的范围就是0。原创 2022-10-08 16:38:12 · 3037 阅读 · 0 评论 -
labview的CAN驱动程序
比如,主节点想要获取一个温度传感器上的温度值,这个传感器节点传输数据采用的是CAN总线,即CAN的从节点,那么主节点可以先发送一个从节点能够正常接收到的ID远程帧,从节点收到之后,就可以将温度数据作为一个具有相同ID号的数据帧返回给主节点。STM32接收外部报文的流程是:当CAN总线上出现一帧报文时,首先由CAN收发器将CAN总线上的差分信号(隐性或显性电平)转换为bxCAN控制能够识别的高低电平,经STM32上的CAN RX引脚输入CAN的硬件过滤器中;其中,平时使用最多的是前两种:数据帧和远程帧。原创 2022-10-08 20:30:00 · 2654 阅读 · 0 评论 -
labview的RS232驱动程序
如果在串口初始化的时候没有开启终止符,并且要求读取的字节数小于接收缓冲区现有的字节数,那么返回的字符串长度就会等于指定读取的字节数长度,反之UART控制器会将缓冲区中所有的数据全部返回;另外,对于刚刚接触LabVIEW的新用户来说,经常会把VISA函数当成串口函数,实际上NI-VISA驱动包本质上是将整个仪器行业的通信协议(RS232、GPIB、USB、Ethernet等)封装在一起,供不同行业的工程师使用,这样可以简化仪器通信。一般情况下,在读取串口缓冲区中的数据之前,需要指定读取字节的数量。原创 2022-10-07 22:13:11 · 2826 阅读 · 0 评论 -
基于labview上位机控制的6自由度机械臂
在进行机械臂控制之前要先进行模式选择。多自由度机械臂的6个舵机分别控制爪子抓放、腕部旋转、腕部上下、肘部上下、臂部上下和臂部旋转,这些部位的舵机按照从爪子到塔台的顺序,分别通过控制线接到舵机控制板的通道上,通道编号为M6、M5、M4、M3、M2、M1,所有舵机在安装前要调整到90°。多自由度机械臂上的6个舵机都支持180°转角,舵机的转动角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM信号的周期固定为20ms(50Hz),脉宽在500~2500μs之间,脉宽和舵机的转角相对应。原创 2022-10-07 21:49:41 · 2978 阅读 · 0 评论 -
LabVIEW的编程-程序框图入门笔记
例如,若开关的边框为绿色,表示它可与Express VI(快速VI)上任意带绿色标签的输入端相连。在前面板控件中输入的数据将通过控件接线端传输至程序框图,然后进行数据的加减运算。连线板是一组与VI中的输入控件和显示控件对应的接线端,类似于文本编程语言中的函数调用参数列表。在程序框图的流程图中进行编程,可以控制和操纵在前面板上定义的输入和输出功能。程序框图对象包括接线端、子VI、函数、常量、结构和连线,连线可以在程序框图对象间传输数据。双击程序框图中的子VI,将出现该子VI的前面板窗口。原创 2022-10-07 23:15:00 · 12598 阅读 · 2 评论 -
LabVIEW编程入门笔记
在前面板窗口的空白处单击鼠标右键或者在前面板菜单中选择View→Controls,可以弹出控件选板,控件选板包括了用于创建前面板的输入控件和显示控件,如图3-5所示。图形化编程与传统语言编程的不同点在于图形化编程流程采用“数据流”的概念,打破了传统的思维模式,使得程序设计者在构思完流程图的同时也完成了程序的撰写。单击增量/减量按钮,或双击数字,输入一个新的数字,然后按回车(Enter)键,可输入或改变数值输入控件的值。布尔输入控件和显示控件用于输入和显示布尔值、布尔对象仿真开关、按钮或LED灯。原创 2022-10-07 21:30:00 · 3277 阅读 · 0 评论 -
基于LabVIEW的逻辑分析仪
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?提示:可描述问题,解决思路,解决步骤等提示:可描述题目,解题思路,解题步骤等。原创 2022-10-07 20:15:00 · 1172 阅读 · 2 评论 -
基于LabVIEW的示波器程序
对于示波器,我们能够调整时间分辨率和电压幅度分辨率,这时需要根据前面板相应的设置控件来改变波形图表时间轴的时间显示范围以及电压幅度轴的显示范围。另外,对于示波器而言,波形触发功能是一个非常重要的功能,该功能允许用户可以根据设置的触发电平、触发边沿进行相应的触发采集。因此,还需要在LabVIEW中编写能够实现触发功能的程序,本设计中的触发功能实现子VI的程序框图如图8所示。在如图8所示的程序框图中,SLOPE.VI子VI用来实现上升沿或下降沿的判断及相应边沿数据在数组中索引的输出。1 - 项目中解决的问题。原创 2022-10-07 15:21:52 · 3937 阅读 · 1 评论 -
labview温度报警系统
STM32每个芯片内部集成的温度传感器特性参数不完全相同,用户购买的My_ARM学习板可能与本节实验结果不一致。因此,建议利用该传感器测量芯片温度的相对变化,而非当前环境中的绝对温度。如果用户坚持使用STM32内部温度传感器测量绝对温度,可以按照下面的步骤先校准一下环境温度系数。1)运行本节实验程序,获取ADC1通道16上的温度传感器数据,记为adc_16。2)将一支数字温度计放置在My_ARM学习板上的STM32芯片表面,读取当前温度值,记为Temp_Thermometer(TT)。3)利用万用表原创 2022-10-06 01:47:55 · 4420 阅读 · 0 评论 -
基于物联网的智能厨房安全监测系统-硬件部分
优快云话题挑战赛第2期参赛话题:学习笔记最近遇到一个基于TCP/IP网络的远程智能物联网系统,采用Arduino Uno控制器作为下位机,采用LabVIEW作为远程监控软件,两者通过网络实现通信。初步定为使用labview编写上位机程序进行处理。为啥用labview呢,因为LabVIEW是美国国家仪器公司(NI)的创新软件产品,其全称是实验室虚拟仪器工程平台(Laboratory Virtual Instrument Engineering Workbench),是一种基于G语言(Graphics La原创 2022-10-05 08:15:00 · 2542 阅读 · 0 评论 -
基于LabVIEW的温度计程序实现
LabVIEW程序首先通过设置的串口号与Arduino Uno控制板建立连接,然后进入While循环中,在循环中不断调用Analog Read Pin函数节点获取LM35的输出电压值,并除以LM35的比例因数0.01V/℃,最终获得温度值。利用模拟温度传感器LM35和LIAT中的模拟函数库,通过Arduino Uno控制板的模拟端口采集LM35输出的电压值上传给LabVIEW软件,并除以比例因数以获得温度值,实现一个温度计的功能。此处需要注意LM35的电源引脚的位置,一旦接反可能会烧坏LM35。原创 2022-10-03 22:30:00 · 4279 阅读 · 2 评论 -
舵机控制编程
最近遇到一个使用Arduino Uno单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。点击运行按钮,LabVIEW程序开始执行,通过舵机1和舵机2的调节设置角度旋钮,可以看到舵机1和舵机2随着角度的改变而转动,同时,舵机1和舵机2的当前角度值也随着舵机1和舵机2的转动而实时改变。点击运行按钮,LabVIEW程序开始执行,通过调节设置角度的旋钮,可以看到舵机随着角度的改变而转动,同时,当前角度值也随着舵机的转动而实时改变。原创 2022-10-03 21:15:00 · 2875 阅读 · 4 评论 -
labview卷积结合律笔记
新建名为“验证卷积结合律.vi”的VI,在框图中放入Chirp信号VI(Chirp Pattern.vi)、方波VI(Square Wave.vi)、斜坡信号VI(Ramp Pattern.vi),分别用于生成三个离散时间序列信号:x(n)为线性调频信号,h1(n)为方波信号,h2(n)为斜坡信号。下面以卷积结合律的验证为例,介绍LabVIEW在卷积中的应用。卷积VI是一个多态型VI,它能够进行一维或二维的实卷积或复卷积,因此就有四种不同的形式,以最常用到的一维实卷积为例,其连线板如图。原创 2022-10-01 08:15:00 · 1578 阅读 · 0 评论 -
labview信号时域分析编程笔记
添加“Basic Averaged DC-RMS.vi”,并为“窗”和“平均类型”输入参数添加相应的控件,将它的“直流值”和“均方根值”输出参数捆绑后连接到一个波形图表进行实时显示。该VI将输入的时域信号先加窗,然后对加窗后的信号按指定的平均类型计算信号的直流分量与均方根值。该VI是一个多态型VI,输入的信号可以为一个通道的信号,也可以是以数组形式输入的多个通道的信号。运行程序后,指定参数为使用Hanning窗和指数类型平均方法,通过前面板上的波形图表就可以观察到实时测量出的信号的直流分量和均方根。原创 2022-09-30 17:31:02 · 3285 阅读 · 0 评论 -
LabVIEW中算法函数学习笔记
最近遇到一个使用stm32单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。在“数学”子选板中,提供了“拟合”“内插与外推”和“积分与微分”等函数,这些函数最基本,它们的输入和输出一般多为数组。“信号处理”子选板又分为“波形生成”“波形测量”和“滤波器”等子选板,利用这些函数,可以直接生成波形,或者对波形进行分析及处理。对于这些函数的使用,LabVIEW的帮助中提供了丰富的范例,具体使用时,可以找到相应的范例进行学习。原创 2022-09-30 16:47:24 · 3144 阅读 · 0 评论 -
labview信号处理算法先进性比较
对于n阶的回文数,其基数为10n,10n+1,…基于上述的分析和介绍,算法二VI的总体程序框图如图4所示,可见,它的功能是先生成回文数,之后再判断这些回文数是否是质数。在LabVIEW中,查看VI内存使用的一种方法如下:在前面板工具条中选择“文件”→“VI属性”,会弹出“VI属性”对话框,在“类别”下拉菜单中选择“内存使用”,界面如图6所示。具体地,首先对上述算法都建立相应的子程序,然后搭建如图5所示VI的程序框图,调用顺序结构,并在其中间一帧调用不同算法的子程序,这样就可以测试出不同算法所耗用的时间了。原创 2022-09-30 23:30:00 · 987 阅读 · 0 评论 -
labview信号处理算法笔记
由此可见,轮询的方法对回文数条件的使用是不足的,而这可能会造成判断回文数算法代码的过多运行,这在数字较大情况下是非常耗费资源的。按轮询的思路,有几处可以改进具体算法的地方:①回文数和质数的寻找顺序,由于回文数的判断比质数要简单,所以应采取先找回文数、再找其中的质数的思路,这样,算法的计算量会更小;算法是所有程序的核心和灵魂。判断回文数的算法如下:先将数值转换成字符串,得到字符串A,再将字符串A经反转字符串函数进行反转,得到字符串B,将A和B都再转换成数值a和b,然后进行比较,如果a=b,则该数即为回文数。原创 2022-09-30 22:15:00 · 1042 阅读 · 0 评论 -
labview下位机软件编程笔记
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-09-30 21:15:00 · 2197 阅读 · 2 评论 -
labview与stm32通信
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-09-30 20:30:00 · 9482 阅读 · 0 评论 -
labview编程笔记之顺序结构
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-09-29 19:15:00 · 1901 阅读 · 0 评论 -
LabVIEW编程语法学习笔记之全局变量
在第二个While循环中,将循环计数端子中的值乘以2,并赋给显示控件“循环2里的值”;在实际项目中,如果全局变量的个数不多,可以放在同一个VI文件中以便管理,如果全局变量数量种类繁多,建议可以按照功能相似性分为几大类,分别存储在几个VI文件中,这些VI文件建议以“global_”或“g_”作为前缀命名,以便与普通VI文件区分使用。一个或多个全局变量可按一种特殊形式存放在单独的VI中,该种VI没有框图,只有前面板,仍以.vi为后缀存储,其地位相当于一个特殊的VI,因此可用于在不同VI之间传递数据。原创 2022-09-28 21:15:00 · 4075 阅读 · 0 评论 -
LabVIEW编程语法学习笔记之变量
与其他通用编程语言一样,LabVIEW中也有局部变量和全局变量的概念,用来控制变量的作用范围。原创 2022-09-27 23:32:00 · 1927 阅读 · 0 评论 -
LabVIEW数据结构笔记下篇
填充簇元素:根据需要,分别创建需要的簇元素所对应的数据类型变量,然后将其拖入上一步中创建的簇框架中,就可以得到一个以这些变量为元素的簇,同时框图上的簇端子图标也会发生变化。填充数组元素:根据需要,创建一个所需类型的变量,将其拖入上一步创建的数组框架中,就可得到一个以该类型数据为元素的数组对象,对应的框图中数组端子就会变为实心的,并与该数据类型对应。生成数组框架:从控件选板中选择“新式→数组、矩阵与簇→数组”,创建一个不包含任何内容的数组框架,对应的框图中也会生成一个空心的数组端子。原创 2022-09-28 07:30:00 · 942 阅读 · 0 评论 -
LabVIEW数据结构笔记上篇
默认情况下创建的数值型变量的数据类型为双精度浮点数,如要改变其所代表的数据类型,可以通过鼠标右键单击前面板或框图上的数据端子,在菜单项“表示法”中进行选择,在选择数据类型时尤其需要选择合适的取值范围,以免溢出。创建数值型数据常量,可以在函数选板中选择“数学→数学→数值”,生成的常量初始值为该类型的默认值。数值型数据是一种标量值,包括浮点数、定点数、整型数、复数等类型,不同数据类型的差别在于存储数据使用的位数和表示的值的范围。创建布尔型常量,可以在函数选板中选择“编程→布尔→真常量(或假常量)”得到。原创 2022-09-28 06:15:00 · 1232 阅读 · 0 评论