自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 python中手动管理内存的必要性

最近在使用过往A股数据进行回测的时候,有一种算法需要遍历数据库内所有的A股数据文件并且进行循环计算,一个让人不快的现象是,越到后面,运算的速度越慢。因此我使用了psutil包跟踪程序所占用的内存。print (u'内存使用:',psutil.Process(os.getpid()).memory_info().rss)显示发现,随着我对于个股数据的csv文件遍历打开,我的内存占用从最开始的60Mb飙升到了6Gb,然后我电脑就卡死了python号称智能管理内存,起码在这次的表现中,它是不

2021-03-10 09:21:36 297

原创 增长理论:基本索洛模型(1):人均产出增长只和技术增长有关

增长理论主要用于说明经济增长的动力源泉。基本索洛模型认为,经济总产出取决于三种生产要素,分别是资本K,劳动L,以及技术A。我们首先提出假设一:技术的进步是通过作用到劳动上进而影响总产出的,也就是说A*L应该作为一个整体考虑到生产函数中。该假设是从生产生活现象中观察得到的,姑且接受他。在假设一的基础上,我们得到生产函数,接下来我们需要考虑增长的源泉。一个大家普遍接受的道理是,人多力量大,因此劳动L的增加会增加总产出,所以我们更注重劳动以外的生产要素对增长的影响,因此我们要排除劳动的影响。为了方便.

2020-11-24 16:50:53 6929

原创 C#:扑克牌游戏(1):规划CardLib类库开发扑克牌游戏

(一):前言        这是《C#入门经典(第七版)》的学习笔记,接下来会通过一个扑克牌程序学习关于C#相关知识。(二):前期思考过程        创建一个类库,命名应该为CardLib,不过按照书上的安排,该类库是在第十章第一次使用,在此命名为Ch10CardLib。        容易想到,我们平时玩扑克牌的时候,总是会说,一副两副,因此我们考虑创建一个类Deck代表“一...

2018-10-16 16:38:02 3490 1

原创 C#:扑克牌游戏(2):给CardLib添加Cards集合

(一):背景        在上一篇文章中,我们简单建立了几个可能在后面会用到的类并且放到了一个类库中,接下来需要对这几个类进行进一步的思考。首先一个问题是,我们原先在Deck类中,使用了一个数组来代表一副牌,但是我们知道,在一个扑克牌游戏中,(例如斗地主),会存在着抽牌,出牌的动作,当发生这种动作时,对象的个数就发生变化了。这种情况下,我们使用一个固定个数的数组就不是那么合适了。因此在这篇文...

2018-10-16 16:37:53 1332 1

原创 已知参数方程,求解当前曲率e

一:问题描述已知当前轨迹参数方程,求曲率K对于参数t的参数方程二:求解已知曲率,其中s是弧长,是切线的斜率(一):求(二):求(三):联立求解解得...

2018-09-11 11:19:15 7821

原创 使用线性代数求解斐波那契数列第n项

一:问题已知斐波那契数列,f1=1,f2=1,f3=3,f4=5...求第n项的数值二:问题转化为线性代数问题可以得到方程f(n+2)=f(n+1)+f(n)为了解决问题,添加方程f(n+1)=f(n+1)记向量,则上两式可以写作要求,只需知道,例如,要求n=100时的数值三:将矩阵相似对角化可以得到矩阵的两个特征值为,,对应的变化矩阵为A,则...

2018-09-03 18:26:55 3365

原创 C#:如何输出数据到excel表格中

最近需要将工作中产生的一些数据发到excel表格内进行处理,因此记录下解决问题的思路一:如何创建一个excel文件使用FileStream类,代码如下string fileDir = "e:\\VSWorkSpace\\TryForm\\TryForm\\bin\\Debug\\";string fileName = fileDir + DateTime.Now.ToLongDat...

2018-08-03 11:15:31 7554 2

原创 C#:线程(4):线程等待

线程等待,或者说叫等待线程。其语句是  线程名.Join()   。按照我的理解,这个语句其实是告诉系统程序,这个线程很重要,你必须使用全部的计算资源供他计算,等他计算结束了之后再回到这个位置。  举例来说,下面这个程序就用了线程等待的技术,t.Join()使得cpu先执行完了t线程内的计算然后再继续主函数的运算。using System;using System.Collec...

2018-07-24 08:06:59 6125

原创 C#:线程(3):线程暂停

线程暂停是让某一个线程先休眠一段时间,在这段时间内,该线程不占用系统资源用一个例子说明线程休眠,除了主函数还有另一个线程,主函数会输出从11到19的数字,而线程会每隔两秒输出从1到9的数(一):首先建立控制台程序在预处理部分写入using static System.Console;在主函数下写入 System.Threading.Thread t = new Syst...

2018-07-19 10:57:21 9613

原创 C#:线程(2):创建线程

一:创建新线程在C#里,线程是一种已经定义好的类,其被定义在System.Threading命名空间内,因此创建新线程和我们实例化对象并没有本质的差别。在这里,用一个最简单的例子说明如何创建新线程。(一):创建新的控制台程序,在控制台程序的主函数下面,写一个希望在新线程中调用的函数static void OutPut() { for (int ...

2018-07-18 15:28:54 421

原创 C#:泛型

按照我的理解,泛型指的是“加强的类型”。举例来说,我们使用传统的基础数据类型,int,float,double这样的变量,需要先声明再赋值然后才能引用,但是如果声明了没赋值就开始引用呢?那么就会报错。但是有时候,对于一些程序中的某些变量而言,空(null)是被允许而且在有些情况下是有意义的,那这时候我们就要使用泛型。对于基础数据类型的泛型来说,区别仅仅在于它可以为空,接下来用一个例子进行说明,...

2018-07-18 15:23:06 1075

原创 C#:线程(1):什么是线程?我们为什么要使用线程?

最近在看公司上一个项目的源码,让我感觉非常困惑的是,源码中使用了很多多线程的内容,所以给我的感觉是线程一直跳来跳去的,让我感觉到很困惑。于是我就写了这篇博客,希望能够更好的理解线程有关的内容。一:什么是线程线程是和进程经常放在一起比较的两个概念。按照我的理解,线程和进程并没有本质的区别,都是对CPU调用的单位,其区别只是在于对CPU调用的时间尺度的大小。按照我浅显的理解,进程就是编译器编译...

2018-07-10 17:27:19 4928

原创 如何快速阅读源代码

这篇文章,是对我自己常用阅读源码的习惯的总结。(零):先做备份当拿到一份源代码,不管是工作上临时接手的项目还是平时在网站上down下来的demo,如果想要完全看懂,往往需要做一些改动,有时候改动的比较多就会忘了原来的代码是什么样的,因此我建议,得到一份新的源代码后首先应该进行备份。(一):编译跑一遍当拿到了一份新的源代码,我不知道他的作用是什么,那么最好的办法就是先把软件编译以后跑一遍。如果发现软...

2018-07-10 16:55:07 1928 1

原创 增量编码器的线数和倍频

(一),什么是增量编码器增量编码器是机器人行业中经常使用,用于测量电机或轮子速度的测量装置。其大概原理是在一个随转轴转动的转盘上均匀打孔,在转盘两侧分别放置光源和光敏元件,当转盘随着转轴转动时,每当光源透过孔打到光敏元件上,就获得一次脉冲(二),增量编码器的线数转盘上打孔的数目就是编码器的线数,也就是说,转盘转动一周,编码器产生的脉冲数目。(三),STM32的倍频编码器传输给STM32脉冲,在ST...

2018-07-09 08:49:10 6765

原创 C#:重写基函数(override)

面向对象编程的三大特性是继承,封装和多态。当我们从父类中继承了一种方法,但是我们事实上需要的是另外一种方法,这时候我们就可以通过重写方法,实现一个方法名对应多种方法。    举例来说,我们有一个...

2018-06-29 11:10:41 1582

原创 单片机:什么是看门狗?

    看门狗是单片机里的一种技术(软硬件都可以),其目的是为了保护芯片避免其进入死循环(或者说程序跑飞)。看门狗有一个输入端和一个输出端。看门狗和单片机程序的主体部分连接,如果主体部分运行正常,那么每一段时间就会给看门狗的输入端一个信号,这时候看门狗就会知道程序运行正常,就不会做出反应。如果看门狗较长一段时间内没有收到信号,说明程序运行不正常,此时由看门狗输出一个信号,该信号会让单片机的主体程序...

2018-06-23 09:53:20 23890

原创 C#:如何在非窗口类中设置定时器

    在窗口类中设置定时器是很轻松的事情,只需要拖个插件就好。然而有时候在非窗口类中许需要我们设置定时器,这时候我们应该怎么做?    仙子啊用一个简单例子说明,该程序作用是每隔十秒在控制台中输出“我最帅”。C#为我们提供了一个专门的定时器类System.Timers.Timer,当我们需要调用定时器时,可以先手动输入代码实例化一个定时器。 System.Timers.Timer timer1 ...

2018-06-23 09:11:34 1719 1

原创 C#:委托(delegate)与事件(event)

    事件是面向对象语言中一种很重要的思想。在面向过程的编程中,如果我需要对某一变量的变化做出反应,那么我需要每隔固定时间读取一次变量,这是一种比较原始的做法。    在面向对象的编程中,解决这一问题的技术就是事件(event),按照我的理解事件有点像单片机里的中断,就是在程序中发生了某些变化(例如鼠标单击,键盘按下),这时会调用一些特定的代码进行执行,而在平常时候(也就是不产生事件的时候)这些...

2018-06-22 09:58:03 429

原创 ROS:订阅者程序

(一):c++代码#include<ros/ros.h>#include<turtlesim/Pose.h>#include<iomanip>void poseMessageReceived(const turtlesim::Pose & msg){ ROS_INFO_STREAM(std::setprecision(2) <<...

2018-06-13 09:57:36 1497

原创 ROS:发布者程序

接下来我们将要学习一个更方便理解ROS运行本质的例子:发布者程序我们前面已经了解了节点,也知道节点之间通过“消息”来实现通信,接下来将用一个简单的例子进行学习。这个例子是海龟软件的一个简单拓展,我们将会给小海龟发送一个随机的速度来控制它的运动。 (零):创建软件包在常用目录下创建一个名为pubvel的软件包(具体操作请看我的另一篇博客《ROS:Hello ROS程序》)(一):...

2018-06-12 15:15:27 1768 3

原创 ROS:消息与主题

消息与话题

2018-06-12 15:05:37 617

原创 ROS:结点和结点管理器

在ROS中,结点是执行计算的进程。我是这样理解的,机器人的运动可能包括了很多不同的计算机,比如轨迹规划可能来自中央调度,定位可能来自机器人工控机,运动控制的计算可能来自下位单片机,所以说,机器人的运动其实是一个多计算机系统相互连接的过程,不同的计算机通过通信协议来连接。而ROS就将这些不同的计算机抽象成了不同的结点,以此来模拟不同计算机之间相互通信的过程。在ROS里面,结点实质上是一个可执行程序,...

2018-06-12 10:35:48 1144

原创 ROS:找不到程序包

上次成功地写了hello ROS程序,但是今天我想再次打开这个结点时,显示cannot find the package这个问题的解决办法一:每次打开命令窗都使用一次source ~/ros_ws/devel/setup.bash解决方法二:在住文件夹的图形界面使用快捷键Ctrl+H,可以看到很多原先不显示的隐藏文件,打开".bashrc"文件,在最后一行加上source ~/ros_ws/dev...

2018-06-12 09:44:43 3299 1

原创 ROS: Hello ROS程序

作为学习一门新语言的套路,我们首先要学习的是最简单的hello world程序。

2018-06-11 14:53:33 661

原创 ROS:ROS的安装与测试

(零):虚拟机软件的安装ROS的安装需要在linux环境下,而大家一般习惯使用的应该都是windows的视窗系统,对于不愿意放弃视窗系统又要使用linux的小伙伴来说,安装一个虚拟机软件是最好的选择。我安装的虚拟机软件是VMware Workstation,版本是12.0 。因为安装中没有出现问题,在此我就不详细说明了。(二):安装ubuntuROS是基于ubuntu系统安装的,ubuntu是li...

2018-06-09 20:43:58 6718

原创 C#:ref ,out关键词

ref,out两个关键词

2018-06-08 13:49:29 169

原创 C#:枚举

按照我的理解,枚举是一种程序员按照自身需求,自己定义的有有限种情况的变量。举例来说,我现在在做机器人,我希望对机器人的运行方向进行定义,按照一般地理学的原理,我们习惯上会按照东南西北四个方向对机器人行走方向进行划分。这个时候,方向就是我们需要自己定义的一个变量,它是C#语言中原本没有定义的,同时它的可能取值又是有限的。这种情况下,我们就可以使用枚举的方式来解决它。...

2018-05-27 14:06:37 239

原创 最小二乘法

最小二乘法又名最小平方法,是一种用于估计和拟合的计算方法。我结合加权平均估计的思想做个简单介绍。假设有两个测量量x1,x2。我们希望得到一个估计量x=t*x1+(1-t)*x2使其最接近实际x0值,理论上t取0到1之间的任何数都可以,我们怎样能够从所有可能性中得到一个最好的t呢?从中学数学知识我们可以知道,一个数的平方只可能是正数或者0,那么我们可不可以认为,当几个平方相加得到的数字最小的时候,系...

2018-05-21 11:23:27 237

原创 C#:类是引用类型

最近学习C#遇见一个很有一个的概念,引用类型与值类型,这个部分我现在还是一知半解,就写一部分自己的体会吧。首先直接上代码。public class MyClass { public int val; } static void Main(string[] args) { MyClass...

2018-05-16 08:54:04 1051

原创 C#: Array.Copy()方法

Array.Copy()方法是C#提供的一个用于数组复制的方法。其第一个参数是被复制的数组名,第二个参数是复制到的数组名,第三个参数是要复制的数据数目。

2018-04-26 21:19:20 37384

原创 C#:static关键词

在我遇见的程序里,static主要有以下三种用法一:static放在类中方法名前例如,我定义了一个名叫myClass的类,其中定义了一个叫test的静态方法。如下代码 public class myClass { static public int test(int a) { return a+1; } }这...

2018-04-25 17:36:26 188

原创 C#: //todo

最近在看前辈留下来的祖传代码,发现里面有很多//todo的标记,在此进行一下说明。简单来说,//todo就类似于我们看书时使用的书签,当我们为了某种功能预留下编程的入口,但是短时间内又没时间完成代码时就可以留下一个//todo标记,它仅仅代表着这里还有坑没填。在VS编程环境下,在视图菜单下会有一个任务列表的选项,我们打开这是视图,可以很方便的管理我们做出的//todo标记,跟书签一样,可以帮助...

2018-04-24 18:55:25 1607

原创 C#:字段,属性,get,set

作为一种面向对象的语言,对象的概念渗透在C#的每一种技术中,同时因为是在C++基础上发展起来的语言,C#有着一些和C++不同的面向对象语言特点,所以今天呢我就说一下C#中一种特殊的类成员,属性。学习C语言的时候,我只知道变量和函数,即使后来用MFC,也只有了一点面向对象的概念。所以当我看到C#里面有着字段和属性两种群成员时,我的第一反应就是:WTF!!!但是我进一步学习之后,觉得有些东西并没有想象...

2018-04-24 18:44:11 795

原创 C#入门(3):名称空间

名称空间是.NET编程中的一种独特技术,一般认为,名称空间是一种代码容器,当我们把代码放进名称空间中后,我们就可以根据名称空间的名字唯一确定的找到所需要的代码。需要说明的一点,名称空间是可以嵌套的,例如以下代码是正确的:namespace Level1{ namespace Level2 { }}名称空间就像是一个个不同大小的盒子,里面存储了我们需要的代码,当我们需要...

2018-04-09 09:23:26 229

原创 C#入门(2):变量命名

将C语言和C#语言做一个对比,我们会发现使用C#的工程,往往比用C语言这样面向对象的语言所写出的工程大得多。很多时候,一个工程要分成很多部分交给不同的人来编写,这就要求我们使用一种通行的变量命名规则来进行沟通,而不能像写C语言那样随心所欲(比如说a[],我哪知道这是用来干嘛的)。现在比较通行的规则是,使用变量的作用来进行命名,然后对单词的首字母大写从而方便阅读,在此基础上,对首单词的首字母是否进行...

2018-04-09 08:47:22 218

原创 C#入门(1):最简单的控制台程序

本系列为本人学习C#语言的笔记。本人属于有C语言基础的机械类毕业生,现由于工作原因需要学习C#语言,使用的参考书为《C#入门经典》第七版,希望能给看本文的各位一点启发。话不多说,先上代码,这是参考书一开头给出的控制台程序,其地位大概相当于C语言中的"Hello World!"。因为我有着c语言基础,所以我将把这个程序跟hello world程序进行比较。using System;using Sy...

2018-04-08 16:16:42 4408 1

原创 卡尔曼滤波(5):一种用EKF解决问题的思路

这是书上给出的一个例子,我希望从中能归纳一种套路可以用在 大部分EKF问题中一:建立数学模型(一):建立状态方程状态方程是由具体问题的物理意义抽象出来的,不同问题具有不同的状态方程,本文为了说明问题使用的状态方程为(二):建立观测方程观测方程也是由实际物理意义抽象出来的,本文使用的观测方程为(三):一阶线性化状态方程,求状态转移矩阵F(k)。(其实就是把状态方程求偏导的过程)(四):一阶线性化观测...

2018-04-07 10:42:43 4523 2

原创 卡尔曼滤波(4):拓展卡尔曼滤波

在前面,我们学习了离散型卡尔曼滤波器,我们知道它的本质是对估计量和测量量进行一个加权平均,通过不停的迭代从而使卡尔曼增益更加合理。然而当我们回过头重新检视卡尔曼滤波,发现它用到了大量的线性代数运算,换句话说,只有满足线性的系统才能使用离散卡尔曼滤波。然而在实际工程应用中,系统内总是存在着非线性关系,例如平方关系,三角函数关系,指数对数关系等,我们应该怎样处理这样的问题呢?我们已经知道,在卡尔曼...

2018-04-05 11:42:09 1697 2

原创 卡尔曼滤波(3):一种通俗易懂的解释

今天上网看资料,看到一种对卡尔曼滤波的解释很容易理解,在此进行说明.网上资料是这么说的,假设我养了一只猫,有一天我想要知道这只猫有多重,那么我还怎么办呢?我想任何一个正常人的想法都是拿一个称称一下。然而问题在于如果这个称不准呢?比如你第一次称是5kg,第二次就变成了1kg,第三次直接变成了10kg,那么这种情况下我们就不能直接使用称出来的重量了,我们这时候应该换一个准一点的称。然而在工程领域中,很...

2018-04-04 20:27:03 1493

原创 卡尔曼滤波(2):一个简单的例子

为了说明离散性卡尔曼滤波器的用法,我将用一个最简单的例子来进行说明。假设我们现在对一个房间内的温度进行测试,房间内温度初值为25°c,每过一个时间周期,温度x都将在上一个周期温度的基础上变动于是我们可以建立状态差分方程再假设我们手上有一个误差比较大的温度计(如果误差不大也不需要卡尔曼滤波了),通过温度计,我们可以得到测量值z,我们建立观测方程每当经过一个时间周期,我们用上一周期得到的后验估计量来估...

2018-04-04 15:43:41 7048

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除