热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Logistic函数的各个参数作用分析及其在电机控制中的应用

近几天对神经网络分类器的学习中,看到了Sigmoid函数。Sigmoid函数的表达式为:在Matlab或者Octave中可以画出函数曲线。t-60:

近几天对神经网络分类器的学习中,看到了Sigmoid函数。

Sigmoid函数的表达式为:

S\left ( x \right )=\frac{1}{1+e^{-x}}

在Matlab或者Octave中可以画出函数曲线。

t = -60:0.1:60;
S = 1./(1+e.^(-0.2*t));
plot(t,S)
xlabel('x')
ylabel('S(x)')
title('Sigmoid')

可是今天我学到了电机上电,电机有一个加速度,让速度达到一个值。而这个加速度,最好是缓慢增加的,而后要缓慢递减了。这样电机转动会更加平稳。业界喜欢称这个过程是“加减速”。见下图。我们需要把电机转动至目标的速度,速度或者加速度的突变,都有可能引起电流浪涌。因为转子速度突然变化,带电的定子线圈上,会引起反电动势。而加速度的突然变化,由于惯性作用,可能造成机械损伤。因此,对速度和加速度的变化、或者注入电机上的电流和电压,最好都有一个渐进的过程。

(这图片感谢《硬石电机控制专题指导手册_20180515》这部分开源的)

根据理解,最好是让速度和时间的曲线为S形曲线。但是这个曲线在单片机上较难实现。传统的减少速度

加速度突变的方法是用左边的梯形加减速方法。

但是我手头的板子是STM32F4,是一款带有FPU的内核为Cortex-m4的微控制器,所以实时性是有保证的。该MCU的工作频率可达168MHz,我选择每1ms执行一次本算法。这从CPU消耗来看,应该还是十分充裕的。

想起了之前的神经元激活函数Sigmoid,于是上网搜了S形函数,找到了Logistic函数。

P\left ( t \right )=\frac{KP_0e^{\tau t}}{K+P_0\left ( e^{\tau t}-1 \right )}

经过化简,可得:

P\left ( t \right )=\frac{K}{1+\left ( \frac{K}{P_0}-1 \right ) e^{-\tau t}}

这个函数,有三个变量,第一个是K,K是终值;P_0是初值,即当t=0时,曲线对纵坐标横截点。而\tau是时间常数。

下图中,P0不变(P0=0.5),\tau不变(\tau = 1),K变化。蓝色线是K=1,红色线是K=10,绿色线是K=100。


P0=0.5;
K=1;
r=1;t = -10:0.1:10;
Pt = K./(1+(K/P0-1).*e.^(-r*t));
plot(t,Pt,'b')K=10;
Pt = K./(1+(K/P0-1).*e.^(-r*t));
hold on
plot(t,Pt,'r')K=100;
Pt = K./(1+(K/P0-1).*e.^(-r*t));
hold on
plot(t,Pt,'g')
xlabel('t')
ylabel('P(x)')
title('Logistic curve of P0=0.5. t=1. K=1,10,100')

可以见到,曲线最后逼近极限值就是K。

而后,我们改变P0;令时间常数为1,K=10,起始值P0分别为1(蓝色线)、5(红色线)、9(绿色线)。

在Matlab或者Octave执行以下代码:

P0=1;
K=10;
r=1;t = -10:0.1:10;
Pt = K./(1+(K/P0-1).*e.^(-r*t));
plot(t,Pt,'b')P0=5;
Pt = K./(1+(K/P0-1).*e.^(-r*t));
hold on
plot(t,Pt,'r')P0=9;
Pt = K./(1+(K/P0-1).*e.^(-r*t));
hold on
plot(t,Pt,'g')
xlabel('t')
ylabel('P(x)')
title('Logistic curve of P0=1, 5, 9. t=1. K=10')

可显示波形:

初始值,就是t=0时候,P(t)的值。t=0时,P(0)=P0。曲线整体似乎是根据P(0)左右移动。

第三个参数是时间常数。令K=1,P(0)=0.5,\tau 分别是 0.1、1、10

 

下午试着调这三个参数到平缓,并令函数的输出转换为电机的脉冲速度(电机是步进电机,每一个发送一个脉冲即转动一个角度)。增加每秒内脉冲的个数,即可增加电机的转速。

另外,在减速中,也可以使用本方法,只需要把曲线经过纵轴镜像,即可得到减速的速度曲线。

镜像后的曲线函数:

P\left ( t \right )=\frac{K}{1+\left ( \frac{K}{P_0}-1 \right ) e^{\tau t}}

 

本文比较思路比较乱……就当作草稿来看吧……国庆节在自己的房间里呆着干活也不容易。

总之,主要讲的是S形曲线。没想到在电机控制这里又用得到。

 

 


推荐阅读
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 深入理解K近邻分类算法:机器学习100天系列(26)
    本文详细介绍了K近邻分类算法的理论基础,探讨其工作原理、应用场景以及潜在的局限性。作为机器学习100天系列的一部分,旨在为读者提供全面且深入的理解。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 历经三十年的开发,Mathematica 已成为技术计算领域的标杆,为全球的技术创新者、教育工作者、学生及其他用户提供了一个领先的计算平台。最新版本 Mathematica 12.3.1 增加了多项核心语言、数学计算、可视化和图形处理的新功能。 ... [详细]
author-avatar
加勒比海盗530
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有