步进电机外形结构

在这里插入图片描述

步进电机内部结构图

在这里插入图片描述

步进电机分类

在这里插入图片描述

单段反应式步进电机

内部结构图
在这里插入图片描述磁场形成
在这里插入图片描述节拍运动动画
在这里插入图片描述
定子通电方式
在这里插入图片描述两转子齿转动方式
方式一
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式二
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式三

在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述四转子齿转动方式
方式一
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式二
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式三
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述

步距角

在这里插入图片描述在这里插入图片描述

步进电机实际结构

在这里插入图片描述展开结构

在这里插入图片描述

细分

细分(微步进分辨率)是相对于控制器的名词,它是控制芯片内部通过控制电机绕组的电流,从而实现控制步进电机的转动角度,如下图A4899:
在这里插入图片描述

当需要控制步进电机转动比最小步距角更小的角度时,就需要引用细分控制,磁力的大小与绕组的电流大小是相关的。

当通电相的电流不会马上到达峰值,而断电相的电流也不会立即降为零时,电机内部磁场为上下两相电流共同合成,而产生的磁场合力,会使转子有一个新的平衡位置,这个新的平衡位置在原最小步距角的范围内。也就是说, 如果绕组电流的波形不再是一个近似方波, 而是分成N 个阶梯的近似阶梯波, 则电流每升或者降一个阶梯时, 转子转动一小步。当转子按照这个规律转过N 小步时, 实际相当于它转过一个步距角。这种将一个步距角分成若干小步的驱动方法,称为细分驱动。
在这里插入图片描述如图3: T1 是一个高频开关管。T2 管的发射极接一个电流取样小电阻R。比较器一端接给定电压uc, 另一端接R 上的压降。控制脉冲ui 为低电平时, T1 和T2 均截止。当ui 为高电平时, T1 和T2 均导通, 电源向电机供电。由于绕组电感的作用, R 上电压逐渐升高, 当超过给定电压uc, 比较器输出低电平, 与门因此输出低电平, T1 截止, 电源被切断, 绕组电感放电。当取样电阻上的电压小于给定电压时, 比较器又输出高电平, 与门输出高电平, T1 又导通, 电源又开始向绕组供电, 这样反复循环, 直到ui 又为低电平。因此: T2 每导通一次, T1 导通多次, 绕组的电流波形为锯齿形, 如图4 所示, 在T2 导通的时间里电源是脉冲式供电( 图4 中ua 波形) , 所以提高了电源效率, 而且还能有效抑制共振。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
结束!

步进电机外形结构

在这里插入图片描述

步进电机内部结构图

在这里插入图片描述

步进电机分类

在这里插入图片描述

单段反应式步进电机

内部结构图
在这里插入图片描述磁场形成
在这里插入图片描述节拍运动动画
在这里插入图片描述
定子通电方式
在这里插入图片描述两转子齿转动方式
方式一
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式二
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式三

在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述四转子齿转动方式
方式一
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式二
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式三
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述

步距角

在这里插入图片描述在这里插入图片描述

步进电机实际结构

在这里插入图片描述展开结构

在这里插入图片描述

细分

细分(微步进分辨率)是相对于控制器的名词,它是控制芯片内部通过控制电机绕组的电流,从而实现控制步进电机的转动角度,如下图A4899:
在这里插入图片描述

当需要控制步进电机转动比最小步距角更小的角度时,就需要引用细分控制,磁力的大小与绕组的电流大小是相关的。

当通电相的电流不会马上到达峰值,而断电相的电流也不会立即降为零时,电机内部磁场为上下两相电流共同合成,而产生的磁场合力,会使转子有一个新的平衡位置,这个新的平衡位置在原最小步距角的范围内。也就是说, 如果绕组电流的波形不再是一个近似方波, 而是分成N 个阶梯的近似阶梯波, 则电流每升或者降一个阶梯时, 转子转动一小步。当转子按照这个规律转过N 小步时, 实际相当于它转过一个步距角。这种将一个步距角分成若干小步的驱动方法,称为细分驱动。
在这里插入图片描述如图3: T1 是一个高频开关管。T2 管的发射极接一个电流取样小电阻R。比较器一端接给定电压uc, 另一端接R 上的压降。控制脉冲ui 为低电平时, T1 和T2 均截止。当ui 为高电平时, T1 和T2 均导通, 电源向电机供电。由于绕组电感的作用, R 上电压逐渐升高, 当超过给定电压uc, 比较器输出低电平, 与门因此输出低电平, T1 截止, 电源被切断, 绕组电感放电。当取样电阻上的电压小于给定电压时, 比较器又输出高电平, 与门输出高电平, T1 又导通, 电源又开始向绕组供电, 这样反复循环, 直到ui 又为低电平。因此: T2 每导通一次, T1 导通多次, 绕组的电流波形为锯齿形, 如图4 所示, 在T2 导通的时间里电源是脉冲式供电( 图4 中ua 波形) , 所以提高了电源效率, 而且还能有效抑制共振。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
结束!

步进电机外形结构

在这里插入图片描述

步进电机内部结构图

在这里插入图片描述

步进电机分类

在这里插入图片描述

单段反应式步进电机

内部结构图
在这里插入图片描述磁场形成
在这里插入图片描述节拍运动动画
在这里插入图片描述
定子通电方式
在这里插入图片描述两转子齿转动方式
方式一
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式二
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式三

在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述四转子齿转动方式
方式一
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式二
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述方式三
在这里插入图片描述--------------------------------------------------------------------------------------------------
在这里插入图片描述

步距角

在这里插入图片描述在这里插入图片描述

步进电机实际结构

在这里插入图片描述展开结构

在这里插入图片描述

细分

细分(微步进分辨率)是相对于控制器的名词,它是控制芯片内部通过控制电机绕组的电流,从而实现控制步进电机的转动角度,如下图A4899:
在这里插入图片描述

当需要控制步进电机转动比最小步距角更小的角度时,就需要引用细分控制,磁力的大小与绕组的电流大小是相关的。

当通电相的电流不会马上到达峰值,而断电相的电流也不会立即降为零时,电机内部磁场为上下两相电流共同合成,而产生的磁场合力,会使转子有一个新的平衡位置,这个新的平衡位置在原最小步距角的范围内。也就是说, 如果绕组电流的波形不再是一个近似方波, 而是分成N 个阶梯的近似阶梯波, 则电流每升或者降一个阶梯时, 转子转动一小步。当转子按照这个规律转过N 小步时, 实际相当于它转过一个步距角。这种将一个步距角分成若干小步的驱动方法,称为细分驱动。
在这里插入图片描述如图3: T1 是一个高频开关管。T2 管的发射极接一个电流取样小电阻R。比较器一端接给定电压uc, 另一端接R 上的压降。控制脉冲ui 为低电平时, T1 和T2 均截止。当ui 为高电平时, T1 和T2 均导通, 电源向电机供电。由于绕组电感的作用, R 上电压逐渐升高, 当超过给定电压uc, 比较器输出低电平, 与门因此输出低电平, T1 截止, 电源被切断, 绕组电感放电。当取样电阻上的电压小于给定电压时, 比较器又输出高电平, 与门输出高电平, T1 又导通, 电源又开始向绕组供电, 这样反复循环, 直到ui 又为低电平。因此: T2 每导通一次, T1 导通多次, 绕组的电流波形为锯齿形, 如图4 所示, 在T2 导通的时间里电源是脉冲式供电( 图4 中ua 波形) , 所以提高了电源效率, 而且还能有效抑制共振。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
结束!

我是别人做的项目拿过来参考做一个相同类型的,结果就出现了丢失预制体的情况:

解决问题参考的博客链接:https://blog.csdn.net/qq_42522380/article/details/102892743

我的问题是场景中的gameobject变成红色,也显示丢失,我参考上面的博客,更改了.NET版本。

 

改成4.0之后,果然不再显示丢失错误!

收获:

unity生成unity package 前,尽量把场景中的game object都保存成prefab

 

使用EasyNVR的很多用户都有把外网播放内网视频的需求,基于这个需求,我们配备了专门的视频综合管理平台EasyNVS,能够获取EasyNVR的所有能力,并且对接入的EasyNVR进行统一分配管理。

NVS.png

在新版本EasyNVS2.1当中,我们发现分享的同一通道的RTSP流和RTMP流时,端口会发生变化,对比如下图:

104.png

105.png

当下级EasyNVR只开一个通道的时候,端口是10001,开两个通道的时候端口就变为10002了。部分用户对此表示不理解,因此本文我们就来跟大家讲一下这个原理。

EasyNVS2.1版本代理分享EasyNVR的RTSP流和RTMP流,是通过开启当前服务器的端口作为端口转发的,并且默认是从10000端口计算的,依次增加使用,并且会检测当前需要使用的端口的占用情况。

举个例子,如果服务器10000端口被占用了,那么EasyNVS在代理EasyNVR输出RTSP流和RTMP流的时候,就会判断10000被占用了,然后启用10001端口作为第一个通道的代理转发,依次递推。

122.png

所以当EasyNVR开启通道数量不同、服务器端口使用情况不同的情况下,EasyNVS转发的RTSP流和RTMP流对应的端口也会做相应调整。那么在集成开发的过程中就不能一概把流地址写固定了,需要动态通过接口去获取实时流地址,然后再集成调用了。

EasyNVS视频综合管理平台已经成功应用于安徽省高速集团撤销省界站项目的视频云服务项目中,截止目前已成功接入设备2000+路,结合AI智能分析,实现车牌识别、车辆识别及人脸识别功能,同时构建视频数据的“感、连、智、控”,将车辆违章、人员在逃等信息关联,借助于视频大数据分析加速案件处理效率。

微信图片_20201009141011.jpg

如果大家还想详细了解EasyNVS相关内容,欢迎联系TSINGSEE青犀视频团队。

详情参见
在git的bash窗口中命令操作出现下图错误(上述链接的第7步出错):
出现图中错误
原因:没有master分支
解决办法:(使用命令:git branch -M main 新建分支main, 然后使用命令 git push - u origin main(执行之后要输入github的账号和密码), 将代码上传到main分支)(分支名称自定义
在这里插入图片描述
此时Idea右下角会显示:
在这里插入图片描述
github中代码上传成功!
在这里插入图片描述

一、Stirling 子集数


Stirling 子集数 :


n
n
n
个不同的球
放到
k
k
k
个相同的盒子
中 , 不能有空盒 , 即 每个盒子至少放一个球 ;

不同的放置方法总数是 :
{
n
k
}
begin{Bmatrix} n \ k end{Bmatrix}
{nk}
, 该数称为 Stirling 数 ;


n
n
n
元集分成
k
k
k
个非空子集 的 分法个数 ;

划分等价关系 的描述是等价的 , 每个 划分 都与 等价关系 一一对应 ;

Stirling 子集数作用 : 求集合中有多少不同的 等价关系 , 即求集合中有多少个不同的 划分 ;

二、放球模型


放球模型 : 上述 斯特林 Stirling 子集数 , 是小球放在盒子中 , 小球是有编号的 , 需要 区分不同的小球 , 盒子是没有编号的 , 不需要进行区分盒子 ; 下面整理下不同的放球模型 :

  • 球有编号 , 盒子没有编号 ( 不同的球放在相同盒子里 ) : 这是求集合 划分问题 , Stirling 数 ; 这属于放球子模型 ;
  • 球没有编号 , 盒子有编号 ( 相同的球放在不同盒子里 ) : 不定方程解问题 , 多重集组合问题 , 正整数剖分问题 ;
  • 球有编号 , 盒子有编号 ( 不同的球放在不同的盒子里 ) : 多重集排列 , 指数函数问题 ;

在这里插入图片描述


{
n
k
}
begin{Bmatrix} n \ k end{Bmatrix}
{nk} 表示将
n
n
n
个元素分成
k
k
k
个子集的分法个数 ;


(
n
k
)
begin{pmatrix} n \ k end{pmatrix}
(nk) 表示从
n
n
n
个元素中选出
k
k
k
个小球的方案个数 ;

参考 : 百度百科-放球问题

三、Stirling 子集数递推公式


常见的 Stirling 子集数 结果 :


{
n
0
}
=
0
begin{Bmatrix} n \ 0 end{Bmatrix} = 0
{n0}=0


n
n
n
个球放在
0
0
0
个不同的盒子里 , 有
0
0
0
种分法 ;


n
n
n
个元素分成
0
0
0
类 , 有
0
0
0
种分法 ; 就是 没有方法 ;


{
n
1
}
=
1
begin{Bmatrix} n \ 1 end{Bmatrix} = 1
{n1}=1


n
n
n
个球放在
1
1
1
个不同的盒子里 , 有
1
1
1
种分法 ;


n
n
n
个元素分成
1
1
1
类 , 有
1
1
1
种分法 ; 相当于 全域关系 ;


{
n
2
}
=
2
n

1

1
begin{Bmatrix} n \ 2 end{Bmatrix} = 2^{n -1} - 1
{n2}=2n11


n
n
n
个球放在
2
2
2
个不同的盒子里 , 有
2
n

1
2^n -1
2n1 种分法 ;


n
n
n
元集有
2
n
2^n
2n 个不同的子集合
, 这是幂集的个数 , 每个子集合 , 与其补集都成对 , 因此
2
n

1
2^{n-1}
2n1 对集合
, 其中要 减去 空集合 与 全集合 的那一对 , 最终结果是
2
n

1

1
2^{n -1} - 1
2n11 ;


{
n
n

1
}
=
C
n
2
begin{Bmatrix} n \ n-1 end{Bmatrix} = C_n^2
{nn1}=Cn2


n
n
n
个球放在
n

1
n-1
n1 个不同的盒子里 , 有
C
n
2
C_n^2
Cn2 种分法 ;


n
n
n
个元素分成
n

1
n-1
n1 类 , 有两个元素算作一类 , 其它每个元素都自成一类 ; 只要将
n
n
n
个元素中属于一类的
2
2
2
个元素选出即可 , 有多少中选法 , 就有多少分类 ;


{
n
n
}
=
1
begin{Bmatrix} n \ n end{Bmatrix} = 1
{nn}=1


n
n
n
个球放在
n
n
n
个不同的盒子里 , 有
1
1
1
种分法 ;


n
n
n
个元素分成
n
n
n
类 , 有
1
1
1
种分法 ; 相当于 恒等关系 ;

Stirling 子集数 递推公式 :


{
n
k
}
=
k
{
n

1
k
}
+
{
n

1
k

1
}
begin{Bmatrix} n \ k end{Bmatrix} = kbegin{Bmatrix} n-1 \ k end{Bmatrix} + begin{Bmatrix} n-1 \ k-1 end{Bmatrix}
{nk}=k{n1k}+{n1k1}


n
n
n
个元素分为
k
k
k
,
先把一个元素挑出来 , 放在一边 , 还剩
n

1

n-1
n1 个元素 ;

挑出的元素合并到其它类 : 将这
n

1
n-1
n1 个元素分为
k
k
k
类 , 将挑出来的元素分别加入到
k
k
k
类中 ; 得到的总结果就是
n
n
n
个元素分为
k
k
k
类 , 挑出来的元素分别加入到
k
k
k
类中
,
k
k
k
种不同的方法
, 即分别加入到低
1
,
2
,
3
,


,
k
1,2,3, cdots , k
1,2,3,,k 类中 ;

挑出的元素自成一类 :
n

1
n-1
n1 个元素分为
k

1
k-1
k1 类 , 每个类都非空 , 然后让挑出来的元素自成一类 , 该自称一类的类 与 之前的
k

1
k-1
k1 个类 , 合并在一起是
k
k
k
个类 ;

上述两种情况同时考虑 , 就是 Stirling 子集数的递推公式 ;


k
{
n

1
k
}
kbegin{Bmatrix} n-1 \ k end{Bmatrix}
k{n1k} 含义 :
n

1
n-1
n1 个元素分成
k
k
k
个子集

{
n

1
k
}
begin{Bmatrix} n-1 \ k end{Bmatrix}
{n1k} , 再 加入第
n
n
n
个元素到其中之一 有
k
k
k
种方案
, 在上述基础上乘以
k
k
k
;


{
n

1
k

1
}
begin{Bmatrix} n-1 \ k-1 end{Bmatrix}
{n1k1} 含义 : 将
n

1
n-1
n1 个元素分成
k

1
k-1
k1 个子集

{
n

1

k

1
}
begin{Bmatrix} n-1 \ k-1 end{Bmatrix}
{n1k1} , 剩下的第
n
n
n
个元素自然成为一个子集 ( 只有唯一一种方案 ) ;

四、Stirling 子集数示例 ( 四元集等价关系个数 )


求四元集上的等价关系个数 ,
4
4
4
个元素分为
1
,
2
,
3
,
4
1, 2,3,4
1,2,3,4 类的分法相加 ;


{

4
1
}
+
{
4
2
}
+
{
4
3
}
+
{
4
4
}
=
1
+
(

2
4

1

1
)
+
C
4
2
+
1
=
1
+
7
+
6
+
1
=
15
begin{Bmatrix} 4 \ 1 end{Bmatrix} + begin{Bmatrix} 4 \ 2 end{Bmatrix}+ begin{Bmatrix} 4 \ 3 end{Bmatrix}+begin{Bmatrix} 4 \ 4 end{Bmatrix} = 1 + ( 2^{4-1} - 1 ) + C_4^2 +1 =1+7+6+1 = 15
{41}+{42}+{43}+{44}=1+(2411)+C42+1=1+7+6+1=15

四元集上的 有序对个数是
4
×
4
=
16
4 times 4 = 16
4×4=16 个 ;

四元集上的 关系个数是
2
16
=
65536
2^{16} =65536
216=65536
; 包含如下情况 , 含有
0
0
0
个有序对 , 含有
1
1
1
个有序对 ,

cdots
, 含有
16
16
16
个有序对 ;

上面
65536
65536
65536
个二元关系中有
15
15
15
个是等价关系 ;

五、划分的二元关系 加细关系


集族
A
mathscr{A}
A
和 集族
B
mathscr{B}
B
都是 集合
A
A
A
的划分
,
如果
A
mathscr{A}
A
中每个划分块
都包含于
B
mathscr{B}
B
的某个划分块
中 , 则称
A
mathscr{A}
A
划分 是
B
mathscr{B}
B
划分 的加细 ;

加细 是一个二元关系 , 是划分之间的二元关系 ;

加细关系具有 :

  • 自反省 : 每个划分是它自己的加细
  • 传递性 :
    A
    mathscr{A}
    A

    B
    mathscr{B}
    B
    的加细 ,
    B
    mathscr{B}
    B

    C
    mathscr{C}
    C
    的加细 ,
    A
    mathscr{A}
    A

    C
    mathscr{C}
    C
    的加细
  • 没有对称性 : 加细不具有对称性
  • 没有全域关系 : 有的划分之间互相都不是加细

 

 

 

一、 本文由来:

让更多的人审核和发现BUG,一直是本人所崇尚的目标。经历了5年的发展,Android中也有很多质量很高的开源项目。UnversalImageLoader(统一图片缓存加载库),目前最流行功能最强大的图片缓存库。本文致力于在学习中挖掘和探讨其代码和设计,或者说这是介绍怎样建设一个受欢迎的库。

项目地址:https://github.com/nostra13/Android-Universal-Image-Loader

 

二、功能以及设计:

良好的接口,丰富的核心,强大的扩展。

Imageloader对外接口使用了java工具类非常常见的单例模式,获取单例对象之后,调用displayImage方法就可以对一个已存在的ImageView加载一个远程URL图片

不难发现这也是门面模式一个很好的应用,将逻辑和控制置于ImageloaderEngine中,自己保存了配置对象ImageLoaderConfiguration

类关系如下:



  

在使用Imageloader去显示图片之前,必须先调用初始化方法init(),传入一个配置对象.初始化代码示例:



  

这又是熟悉的建造者模式。Imageloader的配置和默认显示的配置都是通过Builder模式构建起来。通过研究内部实现可以发现,没有设置的选项,都会使用库本身默认的配置。

 

ImageloaderEngine类是库的核心,负责调度各个模块,这又是一个中介者模式。

ImageloaderEngine类中聚合了Task对象,LoadAndDisplayProgressAndDisplay的任务,根据名字就可以知道其功能。类关系如下:



  

ProgressAndDisplayTask相比LoadAndDisplay多了一个显示加载中图片的功能,只是在LoadAndDisplay之前多做了一步设置加载中图片的操作。

以下是LoadandDisplayTask的类关系视图:



  

如图,LoadAndDisplayTask类根据配置,调用ImageDownloaderImageDecoder进行图片的下载和解码,最后通过DisplayImageOptions中的bitmapDisplayer对象对imageView进行设置图片的操作。当然,这一过程中,不断的通过ImageLoader这个监听对外汇报任务状态。真真切切的观察者模式,一举一动尽在掌握。

到这里主体的框架已经介绍完毕。是否感觉就这么回事,这一流程不就是普普通通的图片缓存库该做的事情么。其实它真正的妙处在于面向接口的设计,如上图,ImageDecoderImageDownloader就只是一个接口关联。并没有关系具体实现类,本库中提供了多种多样的实现类。如图:



  

通过初始化的配置,根据不同的网络状况选择不同的Downloader,自由的拆卸和组合,让人用起来得心应手。

观察上图,或许读者有一个疑问,BitmapDisplayer为何置于DisplayOptions中而不是LoadAndDisplayTask的一部分,这也是作者的一个设计妙处。首先我们回到一开始的接口。

public void displayImage(String uri, ImageView imageView, DisplayImageOptions options,ImageLoadingListener listener);

用户使用这个接口,可以对每一次的加载图片操作进行不同的配置,不同的BitmapDisplayer,库中也提供了多种BitmapDisplayer接口的实现:



  

甚至可以自定义,使用自己实现的BitmapDisplayer,现阶段做的项目就通过实现自定义的Displayer实现了显示图片的怦然心动动画效果。

实现代码如下:



  

 

 

 

三、总结:

UnversalImageLoader中还有许多值得我们学习的地方,譬如多线程中锁ReetranLock类的使用和异常处理。本文的重点是介绍其设计中合理性,技术要点将在新的文档实践和介绍,这里暂不花费篇幅阐述

使用开源库不应该只满足其如何使用,更应该了解并且探究它。我们的目标并不是重复发明轮子,但是发明轮子的能力是必须要有的。

 

一本硕211毕业生,刚一毕业就收到了诸多大厂offer,哇哇,随便一个年薪都在28万以上。可这时候来了个年薪15万的国企offer,28万vs15万,选28万就好了呀!差了将近两倍工资!

可是,人家送北京户口!北京户口!

相信每一个北漂人都知道北京户口的重要性。有人觉得当然是先拿户口,户口只有一次,错过再等十年!有点像广告词!钱可以慢慢赚。

还有网友说,房价那么贵,有户口买不起,白搭!实在不行,还可以联姻弄户口。


还有网友替楼主把职业都规划好了,在国企呆两年,保持竞争力。然后再转到互联网公司挣钱。这看起来是最好的路子啦?看看别的送户口国企是不是薪水高一点啊?


还有网友出来一顿辟谣,我们互联网公司也有送户口的,没问题啊!

话说北京户口真的太稀缺了!积分落户又很难!没有户口,医疗教育都受限制!错过了就是错过了!如果拿到了北京户口,过几年换一下工作,高学历根本不怕赚不到钱,实在不行还可以申请共有产权住房!只要有了户口,就真正地在北京扎根了!嗯,北京户口,真香。

  1. List item

Python课程-实验一

身高体重查询

#常用的包
import random #随机数的包
import pandas as pd #导入pandas的包
import matplotlib as mpl #导入matplotlib的包,用于画图
#Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图

#import numpy as np
import numpy as np
#NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

#显示汉字
import matplotlib.pyplot as plt
mpl.rcParams[‘font.sans-serif’] = [‘SimHei’] #用来正常显示中文标签
mpl.rcParams[‘axes.unicode_minus’] = False #用来正常显示负号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
append是list类型数据的属性
要用此属性应该用以下命令改为list属性
#list 转 numpy
np.array(a)
#ndarray 转 list

在这里插入图片描述
df3 = pd.DataFrame(data, columns=colums)
#转换成excel的格式,data为数据,columns为列数据名称,index为行数据名称
sheet_name #表名称

最终效果图:
在这里插入图片描述

#三张图
图一:学生身高体重图

在这里插入图片描述
学号,身高体重分布图
ax.axis([100, 120, 45, 200]) #axis:x轴:100到120,y轴:45到200
ax.plot(data1,data2,label=‘身高’) #绘制线 x轴:data1 , y轴:data2,label图例
ax.legend() #把图例进行显示

图二:学生体重分布图在这里插入图片描述
图三:学生身高分布图
在这里插入图片描述
最终效果图:
在这里插入图片描述