maix_bit学习,micropython接触(1)

标注库学习(cmath,gc,math)

因为最近要用一下maix_bit,所以今天开始学一下micro python。学之前我看了下其他板子上用的micro python的语法,发现每个板子上的语法都不大一样,所以我接下来的写的都是适用于maix_bit(用的是K210芯片)这块板子的micro python语法,其他的板子可能并不适用。

学的方法是按着官网给的教程开始学的。官网链接

下面是学习的顺序:

  1. 标准库
  2. machine
  3. Maix
  4. 内置类
  5. 机器视觉
  6. 外设模块
  7. 内置应用

因为第一章学的是标准库,也用不上什么引脚之类的东西,所以板子的引脚图就先不放,等下一个模块再往上放。

一.cmath

就是一些常用数学函数的使用,包括三角函数,对数,指数,平方根,复数……
1.函数
1.1 cos sin
返回z的余弦值, 正弦值。

cmath.cos(z)
cmath.sin(z)

1.2 exp
返回z的指数。

cmath.exp(z)

1.3 log
返回z的自然对数,也就是以e为底的对数。

cmath.log(z)

1.4 log10
返回z以10为底的对数。

cmath.log10(z)

1.5 phase
返回z的相位,范围(-pi,+pi)。

cmath.phase(z)

1.6 polar
作为元组返回z的极性方式。

cmath.polar(z)

1.7 rect
返回 模数为r,相位为phi 的复数。

cmath.rect(r,phi)

1.8 sqrt
返回z的平方根。

cmath.sqrt(z)

2.常量(Constants)
自然对数e,圆里用的pi

cmath.e
cmath.pi

看完了就用一下:

import cmath
print(cmath.cos(100),cmath.sin(100),cmath.exp(2),cmath.log(100),cmath.sqrt(100))
print("\n")
print(cmath.log10(100),cmath.phase(100),cmath.polar(10),cmath.rect(10,10))
print('\n')
print(cmath.e,cmath.pi)

效果是:

(0.8623189+0j) (-0.5063657+0j) (7.389056+0j) (4.60517+0j) (10+0j)

(2+0j) 0.0 (10.0, 0.0) (-8.390715-5.440211j)

2.718282 3.141593

效果上返回的值都是复数类型;三角函数里输入的是那种和pi有关的值(也就是弧度制),不是角度值;相位指的是复数值走过的角度;极性我没搞太懂,不过如果是实数就返回0,输入复数就返回一个浮点数。

二.gc-控制垃圾收集器

个人大概的理解就是这个库里的函数大致有三个作用:
1.可以收集被删除掉的元素的值(分自动和手动)
2.查看堆RAM的值
3.可以在内存占的太多的时候给一个触发

#启动自动垃圾回收
gc.enable()
#禁止自动垃圾回收,仍可以分配堆内存,并用gc.collect()手动收集垃圾
gc.disable()
#垃圾回收(手动的那种)
gc.collect()
#返回分配的堆RAM的字节数(是MicroPython的扩展)
gc.mem_alloc()
#返回可用堆RAM的字节数,如果堆剩余数量未知,则返回-1(是MicroPython的扩展)
gc.mem_free()
#通过分配阈值amount,到达阈值时触发集合。一般情况下是内存不足的时候触发集合,加了个阈值可以提前触发。
#如果不加amount的话,返回的是当前阈值的值。
gc.threshold([amount])

也是大概用一下,用一下这个内存的操作:

import gc
gc.enable()
print(gc.mem_alloc(),gc.mem_free())
a=10
print(gc.mem_alloc(),gc.mem_free())
b=[10,10,10,10,10]
print(gc.mem_alloc(),gc.mem_free())

效果是:

58944 459200
58944 459200
59040 459104

用是不怎么会用,大概的意思还是可以看懂的,每当新建立一个占内存足够大的变量时,系统的内存就会少一些。

三.math-数学函数

也是一些数学函数,可以当作cmath的一个补充,按官网来说,这是个处理浮点数据的数学库(cmath库返回的是复数,这个库返回的是浮点数)。这个库就是个数学函数的集合,看一遍有个印象就可以了,以后用到了来复制一下就差不多。

#余弦 正弦 正切
math.cos(x)
math.sin(x)
math.tan(x)
#双曲余弦 双曲正弦 双曲正切
math.cosh(x)
math.sinh(x)
 math.tanh(x)
#反余弦 反正弦 反正切
math.acos(x)
math.asin(x)
math.atan(x)
#反双曲余弦 反双曲正弦 反双曲正切
math.acosh(x)
math.asinh(x)
#返回y/x的反正切的主值
math.atan2(y,x)

#四舍五入的整数 
math.ceil(x)
#返回x向负无穷大的舍入
math.floor(x)
#返回一个整数,“x”向0舍入
math.trunc(x)

#以y的符号返回x(y是负数就返回-x,正数就返回x)
math.copysign(x,y)
#弧度x转换度数 度数x转换为弧度
math.degrees(x)
math.radians(x)

#x的错误函数
math.erf(x)
#x的互补误差函数,有erf(x)+erfc(x)=1。
math.erfc(x)

#返回x的指数
math.exp(x)
#返回exp(x)-1
math.expm1(x)
#x的自然对数
math.log(x)
#x的以10为底的对数
math.log10(x)
#x的base-2对数
math.log2(x)

#返回绝对值
math.fabs(x)
#返回x/y的余数
math.fmod(x,y)
#返回浮点数分解的尾数和指数
math.frexp(x)
#返回x的分数部分和整数部分
math.modf(x)
#返回x的伽玛函数(阶乘) 返回x的伽玛函数的自然对数
math.gamma(x)
math.lgamma(x)
#返回x*(2**exp)
math.ldexp(x, exp)
#x的y次方
math.pow(x, y)

#如果x是有限的,则返回True
math.isfinite(x)
#如果x是无限的,则返回True
math.isinf(x)
#如果x不是数字,则返回True
math.isnan(x)

挑几个比较不常见的函数试一下效果:

import math
print(math.atan2(2,1))
print(math.ceil(4.7))
print(math.copysign(2,-1))
print(math.expm1(2))
print(math.floor(2.5))
print(math.frexp(2.5))
print(math.ldexp(2,1))
print(math.log2(4))
print(math.gamma(4))
print(math.modf(2.5))

效果:

1.107149
5
-2.0
6.389056
2
(0.625, 2)
4.0
2.0
6.0
(0.5, 2.0)

总结一下
1.三角函数就是正常的sin,cos,tan什么的,反三角就是前面加个a,双曲三角就是后面加个h。
2.伽马函数就是阶乘函数。
3.这个里面返回的是浮点数,cmath那个库返回的都是复数。

第一篇写了标准库里的cmath,gc,math三个库,标准库里还剩十多个库,下一篇继续写,然后在下一篇里介绍一下我烧录程序的方法。

发布了4 篇原创文章 · 获赞 2 · 访问量 207

猜你喜欢

转载自blog.csdn.net/qq_43690756/article/details/105047206