
笔记
文章平均质量分 51
柳叶吴钩
叶底藏花一度,梦里踏雪几回
展开
-
卡尔曼滤波实例分析(二)
处正处于匀速下降状态,此时该物体启动制动装置,以一个加速度为。(2)转换为状态空间方程。假设一物体以一初速度。原创 2023-07-06 10:01:26 · 885 阅读 · 0 评论 -
无线充电系统Ltspice仿真
无线充电系统Ltspice仿真原创 2023-03-04 15:49:54 · 1125 阅读 · 1 评论 -
RC正弦波振荡电路Ltspice仿真
所谓建立振荡,就是要使电路自激,从而产生持续的振荡,由直流变为交流,由于电路中存在噪声,它的频谱分布很广,其中也包括选频范围内的频率成分,这种微弱的信号,经过放大,通过正负反馈的选频网络,使输出幅度愈来愈大,最后收电路非线性元件的限制,使振荡幅度自动稳定下来。振荡频率:f=1/(2πRC)当适当调整负反馈的强弱,使得放大系数略大于3,器输出波形为正弦波,当放大系数远大于3,则因振幅的增长,致使放大器件工作在非线性区域,波形将产生严重的非线性失真。原创 2022-11-05 16:56:47 · 4498 阅读 · 3 评论 -
基于Python仿真载流圆线圈的磁场分布
1、理论基础R是圆环的半径:x是距离圆环中心的距离:dB=μ0/4π(Icosαdl)/r2dB =μ_0/4π (I cosα dl)/r^2 dB=μ0/4π(Icosαdl)/r2B=(μ0IR2)/(2(x2+R2)(3/2))B=(μ_0 IR^2)/(2(x^2+R^2 )^{(3/2) })B=(μ0IR2)/(2(x2+R2)(3/2))2、算法仿真3、实验结果...原创 2022-03-25 19:27:27 · 3979 阅读 · 2 评论 -
卡尔曼滤波算法详细推导(全网最详细的推导过程)
本文是来源于B站Dr_CAN的视频的学习笔记,有需要详细了解的,可以到B站看相关视频DR_CAN的个人空间1、递归算法例:假设测一段距离,第一次测z_1=50.1mm,第二次测z_2=50.4mm,第三次测z_3=50.2mm,若想得到准确的值,可以计算这几次测量的平均值,据此,可以定义估计真实数据等于平均值,可得到如下公式x^k=1k(x1+x2+⋯xk)\hat{x }_k=\frac{1}{k }(x_1+x_2+⋯x_k )x^k=k1(x1+x2+⋯xk)=1k(x1+x2+原创 2021-10-23 16:33:34 · 17723 阅读 · 5 评论 -
Python 实现FIR带阻滤波器设计
假设有一段10kHz的语言,现需要滤除2~3kHz之间的语言信号,最小衰减不能小于50dB,要求1.5kHz以下,以及3.5kHz以上语言信号基本没衰减;(1)求数字频率指标通带下边频:wpl=2∗π∗fpl/fs=0.4πw_{pl}=2*\pi *f_{pl}/f_s=0.4\piwpl=2∗π∗fpl/fs=0.4π通带上边频:wph=2∗π∗fph/fs=0.6πw_{ph}=2*\pi *f_{ph}/f_s=0.6\piwph=2∗π∗fph/fs=0.6π下阻带上变频:原创 2021-08-17 16:37:49 · 3803 阅读 · 4 评论 -
如何用python画一个动态的红心
1、源码import numpy as npimport matplotlib.pyplot as pltimport mathfrom scipy.fftpack import fft,ifftimport mpl_toolkits.mplot3dfrom decimal import Decimalfrom matplotlib.animation import FuncAnimationplt.figure(1)#x=[-2:.001:2]x = np.linspace(-2,2原创 2021-08-13 17:55:26 · 2898 阅读 · 0 评论 -
python 实现粒子滤波
1 说明该算法是B站UP主忠厚老实的老王的代码,感兴趣的读者可移步到该处学习,本文只是将其代码用python实现贝叶斯滤波与卡尔曼滤波第十一讲代码2 代码实现import randomimport numpy as npimport matplotlib.pyplot as pltt= list(range(100))x=np.linspace(0,1,100)#x= [0]*100y= [0]*100x[0]=0.1y[0]=0.1**2noise_size = 100noi原创 2021-04-07 20:25:27 · 3063 阅读 · 0 评论 -
Python 实现巴特沃斯滤波器
1 巴特沃斯滤波设计步骤①归一化处理。即令λ=ω/ωpλ=ω/ω_pλ=ω/ωp②计算阶数,截止频率和通带频率比;ωsω_sωs是阻带截止频率,ωpω_pωp是通带截止频率,δsδ_sδs是阻带应达到的最小衰减λs=ωs/ωpλ_s=ω_s/ω_pλs=ωs/ωpN=log(10(δs/10)−1)logλsN=\frac{\log\sqrt{(10^{(δ_s/10)}-1)}}{logλ_s }N=logλslog(10(δs/10)−1)③构造归一化系统函数H原创 2021-04-07 20:08:19 · 14902 阅读 · 19 评论 -
python 实现动态绘图
代码:import mathimport matplotlib.pyplot as pltimport numpy as npfrom scipy.spatial.transform import Rotation as RotDT = 0.1 # time tick [s]SIM_TIME = 20.0 # simulation time [s]show_animation = Truetime = 0.0 x=np.linspace(0,1,SIM_TIME/DT)i原创 2021-03-25 20:44:12 · 646 阅读 · 0 评论 -
基于python实现IIR带通滤波器(该文存在问题,仅供读者参考,不能当做学习范例使用)
1、一阶IIR算法def IIR_I(self,input_array,a_weight,b_weight,Scale_Factors): output_array = [] for index_vi in range(0,len(input_array)): xv[0] = xv[1] xv[1] = xv[2] xv[2] = input_array[index_vi]/Scale_Factors原创 2021-03-18 20:26:40 · 946 阅读 · 1 评论 -
基于python 仿真载流圆环的3维磁场分布
1、理论基础(待续)2、算法实现略3 、仿真结果原创 2021-02-19 15:16:11 · 4882 阅读 · 15 评论 -
基于python仿真RLC谐振电路
1、理论基础LCd2UCdt2+RCdUCdt+Uc=UopL C \frac{d^2{U_C }}{dt^2 }+RC\frac{ dU_C }{dt}+U_c=U_{op}LCdt2d2UC+RCdtdUC+Uc=Uop2、算法略3、结果原创 2021-02-06 17:01:44 · 1428 阅读 · 2 评论 -
基于python 仿真载流圆环的磁场分布
1、理论基础(待续)2、算法实现import numpy as npimport matplotlib.pyplot as plt R=2I0=12mu0=4*np.pi*1e-7C0=mu0/(4*np.pi)N=50x, y = np.meshgrid(np.linspace(-5,5,N), np.linspace(-5,5,N))#x = np.linspace(-3,3,N)#x=linspace(-3,3,N)#y=xtheta0 = n原创 2021-02-06 16:54:13 · 2380 阅读 · 0 评论 -
基于python 仿真通电导线周围的磁感线
1、理论基础毕奥-萨伐尔定律2、代码import numpy as npimport matplotlibimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3dimport mathfrom scipy.fftpack import fft,ifftfrom decimal import Decimalmatplotlib.rcParams['font.sans-serif'] = ['SimHei']matplotli原创 2021-01-25 20:59:06 · 2325 阅读 · 3 评论 -
谐振电路Q值的意义
1、Q值等于谐振电路中存储能量与每个周期内消耗的能量的2π倍,Q值越大,意味着相对于存储的能量来说所需付出的能量耗散约束,即谐振电路储能的效率越高;Q=2πWS/WRQ=2π W_S/W_R Q=2πWS/WR2、谐振电路的通频带宽∆f反比与谐振电路的Q值,Q值越大,谐振电路的频率选择性越强;∆f=f0/Q∆f=f_0/Q∆f=f0/Q3、X谐振时电容或者电感上的电压比总电压大Q倍;Q=UC/U=UL/U=(W0L)/RQ=U_C/U=U_L/U=(W_0 L)/RQ=UC/U=UL/U原创 2020-06-03 15:14:04 · 14255 阅读 · 1 评论 -
如何优化C语言的代码空间
1、减小不必要的判断语句;如:if(SetFlag==false){DoSomething();}else{DoOtherthing();}在这种条件判断语句中,常是根据某个事件的标志做某件事 如果事修改变量,可修改为如下(浪费了运行时间):DoOtherthing();if(SetFlag==false){DoSomething();}2、将不必要的全局变量替换为局部变量;3、将判断语句中用到的变量,能合并的条件变量合并;4、根据定义数据类型的数值大小选择不同的数据类原创 2020-05-25 00:57:01 · 3260 阅读 · 0 评论 -
python列表初始化出现的问题
1、引言笔者在仿真一程序时,定义了分别如下两个函数:函数一:def make_matrix(m,n, fill = 0.0): mat=[] for i in range(m): mat.append([fill]*n) return mat函数二:def make_matrix(m,n, fill = 0.0): mat=[[fill] *n]*m return mat发现一特别的现象,就是两个函数得到的数据格式完全一样,但是运行的结原创 2020-05-18 23:02:05 · 731 阅读 · 0 评论 -
利用Python实现IIR滤波器
1、算法实现class filter: def __init__(self,order,a_weight,b_weight): self.order=order self.output=[] self.IIR_Output=[] self.a_order=order self.b_order=order ...原创 2019-07-16 23:53:02 · 7746 阅读 · 2 评论 -
Lwip协议详解(基于Lwip 2.1.0)-ARP协议
2、ARP协议2.1 原理ARP协议的基本功能是使用目标主机的IP地址,查询其对应的MAC地址,以保证底层链路层上数据包通信的进行。为了实现网络接口物理地址同IP地址的转换,ARP协议引入ARP缓存表的概念。ARP缓存表中记录了一条一条的(IP地址,MAC地址)对,它们是主机最近运行获得的关于周围其他主机的IP地址到物理地址的绑定。当需要发送IP数据包时,ARP层根据目标IP地址来查找AR...原创 2019-06-01 23:52:04 · 962 阅读 · 0 评论 -
BLE协议栈详解
1、目的因最近面试,总有人问到BLE协议栈,据此,记录学习BLE协议栈的过程。2 协议概述所谓协议,即将指定的字节按照一定的顺序排列起来,以便他人使用自己的设备时,能通过该协议同其他设备进行通信。协议一特点,就是有固定的帧格式,通过该格式发送,接收者通过解读帧格式,进而得到新息内容;3 BLE连接过程3.1 前言一般通信协议,一类通信是直接发生数据,当设备接送到数据时,直接对数据进行解...原创 2019-05-11 11:08:42 · 15837 阅读 · 5 评论 -
Python实现FIR带通滤波器
1、FIR算法实现y(0)=∑0Nh(i)x(i)y(0)=\sum _{0}^Nh(i)x(i)y(0)=∑0Nh(i)x(i)class filter: def __init__(self,order,h): self.order=order self.h=h self.output=[] def FIR_Filter(se...原创 2019-07-02 23:29:55 · 16543 阅读 · 32 评论 -
浮点数格式
1、浮点数由“符号”、“指数”和“尾数”3部分构成:2、float的规格化表示为:±1.f×2E−127±1.f×2^{E−127}±1.f×2E−127,其中,f是尾数,E是指数。以float为例: 比如十进制数123.125,其二进制表示为:1111011.001,规格化表示为:1.111011001×261.111011001×2^61.111011001×26也就是1.11101100...原创 2019-06-20 00:23:47 · 8757 阅读 · 1 评论 -
FreeRTOS到内存管理机制
1、heap_1动态内存管理一旦申请相应内存后,是不允许释放的。2、heap_2利用最适应算法,支持内存释放。3、heap_3对编译器提供的malloc和free进行封装,保证任务安全。4、heap_4利用最适应算法,支持内存-碎片回收5、heap_5在heap_4上支持动态内存设置在不连续区域上。...原创 2019-05-13 12:31:09 · 661 阅读 · 0 评论 -
Python的高并发技术
1、前言目前大多数编程语言都直接支持并发,而且其标准库通常还提供了一些封装程度较高的功能。并发可以用多种方式来实现,这些方式最重要的区别在于如何访问"共享数据":是通过"共享内存"等方式直接访问,还是通过"进程间通信"等方式访问。**基于线程的并发:**是指同一个系统进程里有各自独立的若干个线程,它们都在并发执行任务。这些线程一般会依序访问共享内存,以此实现数据共享。程序中,通常采用某种锁定机...原创 2019-05-25 23:31:00 · 2268 阅读 · 0 评论 -
Lwip是如何进行内存管理的
1、前言因近日到一家公司面试,自诩读过lwip源码,被问到lwip是如何进行内存管理的,恍惚间只记得内存块,内存池的概念,但时隔多日,具体内容早已抛到九霄云外了,于是记下,以便加深记忆。2、背景在平时编程中,经常会需要进行动态内存申请的操作,创建一个临时数据区域,在程序某个阶段结束后,释放该区域。例如C语言中用malloc()函数申请内存,free()函数释放内存,C++中利用new在堆上...原创 2019-05-11 20:30:39 · 774 阅读 · 0 评论 -
HTTP协议不同版本的区别
1、目的因笔者参加一公司的面试时,被问及此问题时,一脸懵圈而刻骨铭心,因此作一文为此记录下。2、 HTTP协议即超文本传输协议,是互联网常用的通信协议。属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。2.1、HTTP协议内容HTTP请求由三部分组成,分别是:(1)请求行:(2)消息报头;(3)请求正文。HTTP响应由四部分组成,分别是:(1)状...原创 2019-05-09 23:42:08 · 3418 阅读 · 0 评论 -
Keil编译时总是编译所有文件解决方法
将Scatter File 路径选择正确原创 2019-04-01 10:19:22 · 1741 阅读 · 1 评论 -
Tornado学习笔记
1 tornado简介基于Python的Web服务框架和异步网络库,通过利用非阻塞网络 I/O, Tornado可以承载成千上万的活动连接, 完美的实现了长连接,WebSocket,和其他对于每一位用户来说需要长连接的程序。2 Tornado例程import tornado.ioloopimport tornado.webclass MainHandler(tornado.we...原创 2018-11-19 23:43:05 · 271 阅读 · 0 评论 -
Python实现三维高斯函数图像显示
1、用numpy模块实现import numpy as npimport matplotlib.pyplot as pltimport mathimport mpl_toolkits.mplot3dx, y = np.mgrid[-2:2:0.01, -2:2:0.01]z=(1/2*math.pi*3**2)*np.exp(-(x**2+y**2)/2*3**2)ax = pl...原创 2018-09-24 00:46:53 · 6017 阅读 · 0 评论 -
MySQL查询性能优化
1、为啥查询速度会变慢如果把查询看作是一个任务,那么它是由一序列子任务组成,每个子任务都会消耗一定的时间,这样需要优化查询,实际就是优化子任务:(1) 消除一些子任务;(2)减少子任务的执行次数;(3)让子任务运行得更快;通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后再服务器上进行解析,生成执行计划,执行,并返回结果给客户端。其中"执行"可以认为是整个生命周期中最...原创 2019-05-26 19:06:31 · 478 阅读 · 1 评论 -
Lwip协议详解(基于Lwip 2.1.0)-内存管理
1、内存管理1.1 动态内存池1.1.1 原理此种方式下,用户只能申请固定大小的空间,例如UDP控制块,TCP控制块。1.1.2 Lwip的实现源码void memp_init(void){ u16_t i; /* for every pool: */ for (i = 0; i < LWIP_ARRAYSIZE(memp_pools); i++) { me...原创 2019-06-02 09:14:36 · 2194 阅读 · 0 评论 -
拉普拉斯变换拾遗
1、前言因笔者学生时代,复变函数相关课程,学得并不认真,以致于工作后,阅读相关论文时,遇到拉普拉斯变换时,常不知所言,遂心生“负师友规训之德”的愧意,于是重新记录下拉普拉斯变换的学习历程。供自己闲时温故。2、拉普拉斯变换2.1 定义设函数f(t)当t≥0f(t)当t\geq0f(t)当t≥0时有定义,且广义积分∫0+∞f(t)e−stdt\int _0 ^{+\infty} f(t) e...原创 2019-06-13 23:39:25 · 2669 阅读 · 0 评论 -
Lwip协议详解(基于Lwip 2.1.0)UDP协议(未完待续)
5、UDP协议5.1 UDP的原理5.2 Lwip的实现源码6、TCP协议6.1 TCP协议简介6.2 TCP报文6.3 TCP连接6.4 TCP控制块6.5 TCP编程函数6.6 TCP输出处理6.7 TCP输入处理原创 2019-06-02 23:54:36 · 854 阅读 · 0 评论 -
Lwip协议详解(基于Lwip 2.1.0)-ICMP协议 (未完待续)
4、ICMP协议4.1 原理4.2 Lwip的实现源码5、UDP协议5.1 UDP的原理5.2 Lwip的实现源码6、TCP协议6.1 TCP协议简介6.2 TCP报文6.3 TCP连接6.4 TCP控制块6.5 TCP编程函数6.6 TCP输出处理6.7 TCP输入处理...原创 2019-06-02 15:40:56 · 4655 阅读 · 0 评论 -
Lwip协议详解(基于Lwip 2.1.0)-IP协议
3、IP协议3.1 IP地址分类3.2 数据报3.3 IP输出3.3 IP输入4、ICMP协议4.1 原理4.2 Lwip的实现源码5、UDP协议5.1 UDP的原理5.2 Lwip的实现源码6、TCP协议6.1 TCP协议简介6.2 TCP报文6.3 TCP连接6.4 TCP控制块6.5 TCP编程函数6.6 TCP输出处理6.7 TCP输入处理...原创 2019-06-01 23:52:53 · 6071 阅读 · 1 评论 -
Lwip协议详解(基于Lwip 2.1.0)TCP协议 (未完待续)
6、TCP协议6.1 TCP协议简介6.2 TCP报文6.3 TCP连接6.4 TCP控制块6.5 TCP编程函数6.6 TCP输出处理6.7 TCP输入处理原创 2019-06-06 23:33:26 · 2075 阅读 · 0 评论 -
嵌入式软件C语言常见面试题
1、float x与0值比较不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式.因为计算机在处理浮点数的时候是有误差的,所以判断两个浮点数是不是相同,是要判断是不是落在同一个区间的:const float EP = 0.000001;if ((x >= - EP) && (x <= EP) ){B;}else{...原创 2019-05-31 17:25:40 · 3265 阅读 · 0 评论 -
USB PD快充协议详解(待续)
PD 协议是目前的快充协议之一。是由USB-IF组织制定的一种快速充电规范。USB PD透过USB电缆和连接器增加电力输送,扩展USB应用中的电缆总线供电能力。该规范可实现更高的电压和电流,输送的功率最高可达100瓦,并可以自由改变电力的输送方向。设备通过USB数据通讯口D+、D-输出电压信号给充电器,充电器内置的USB解码芯片,判断充电器需要输出的电压大小...原创 2019-06-10 10:52:54 · 28401 阅读 · 1 评论 -
观察者模式(C++与Python)
1、应用场景在一个对象的状态改变时更新另外一组对象,例如excel中一个折线图和一个数据表格,使用同一个模型的数据,无论何时更改了模型,都需要更新折线图数据表格。原理:(1)Subject类注册Observer(2)Subject类通知其他对象时,通过修改更新注册时添加对象的状态。(3)Observer直接获取Subject修改后的状态变量,即实现了该状态变量的输出。定义步骤:(1)...原创 2019-05-18 20:35:59 · 176 阅读 · 0 评论