python学习笔记

简介: 2021/10/19

@TOC
首先,我们应该先理解一下,补码跟原码之间是如何转换的,

  • 正数的补码等于原码
  • 负数的补码等于符号位不变,其它位取反,再加1
十制数 原码 补码
+15 0b 0000 1111 0b 0000 1111
-15 0b 1000 0000 0b 1111 0001

也就是说,给一个16位的AD补码值,首先我们可以根据首位是否为1来判断该AD值的正负,

  • 符号位等于0(正数),原码=补码
  • 符号位等于1(负数),补码符号位不变,其余位取反,再整体加1,就是该补码的原码的绝对值,注意此时还要对计算出来的原码加负号,才是最终的AD值

根据AD7606数据手册
AD转换函数

我们可以知道,AD7606B并行数据为16位,即数据范围为0b 1000 0000 0000 0000 ~ 0b 0111 1111 1111 1111,以$\pm 5V$范围为例,

import numpy as np
int_number_array = np.array([0xFFFF,0x1FFF,0X0FEE,0x15AC,0x159E,0x3C55,0x0001,0x0010])#含8个数据的数组,代表AD7606B八通道读取的补码数据
index = np.argwhere(int_number_array & 0b1000000000000000 == 0b1000000000000000)#查找数组中符号位为1(负数),返回索引数组
int_number_array[index] = -((int_number_array[index] ^ 0b1111111111111111) + 1)#进行补码转换成原码(按位异或相当于按位取反)正数不变,负数进行取反加1,最后加负号
number_array = int_number_array / 32768 * 5 #将十六进制原码数据转换电压值
print(number_array)

最后计算结果为

[-1.52587891e-04 1.24984741e+00 6.22253418e-01 8.46557617e-01 8.44421387e-01 2.35671997e+00 1.52587891e-04 2.44140625e-03]

分别代表每个通道的某个时刻的电压值,若连续处理一段时间的AD采样值,则可以绘制出8通道的波形图。

python读取matlab数据(.mat文件)

我们都知道,matlab是一个非常好用的矩阵计算分析软件,然额,matlab自带的绘图效果极为锯齿,所以,这里分享一个在python中读取matlab处理后的数据.mat文件。

1.首先,我们这里先打开matlab,随便在命令行窗输入两个变量,

matlab_x=1:0.01:10;
matlab_y=sin(matlab_x);

2.计算处理后,matlab右边的工作区会有两个变量值,分别为matlab_y、matlab_x

3.然后,我们将鼠标放置在工作区空白位置右键,选择保存,也可以在工作区处于工作高亮状态时使用快捷键ctrl+s进行保存,会弹出保存文件名,这里我们保存为matlab.mat

image-20210826151017831

4.接下来就是用Python读取上一步中保存的matlab工作区的数据Data。Python中我们需要用到scipy库,这里我们先import进去

import scipy.io as scio

5.读取.mat文件

data=scio.loadmat('./matlab.mat')

6.查看当前data数据类型

type(data)

输出的为dict字典类型

7.读取对应我们想要的数据

这里我们假设需要将数据matlab_y读进python中(这里我们用numpy库将数据转化为数组类型)

import numpy as np #导入矩阵处理库
python_y=np.array(data['matlab_y']) #将matlab数据赋值给python变量

至此,就完成了使用python读取matlab数据。

enjoy it!

相关文章
|
23天前
|
存储 C语言 Python
【Python】学习笔记day3
【Python】学习笔记day3
29 1
|
23天前
|
SQL 分布式计算 大数据
Python+大数据学习笔记(一)
Python+大数据学习笔记(一)
50 0
|
23天前
|
分布式计算 Python
Python函数式编程学习笔记
高阶函数是能接收另一个函数作为参数的函数,如Python的map()、reduce()和filter()。map()将传入的函数应用到序列每个元素并返回迭代器,如将整数列表转换为字符串列表。reduce()对序列进行累积计算,例如求和。filter()根据给定函数返回的真值保留或丢弃序列元素,常用于筛选。sorted()函数支持自定义排序,如按绝对值或ASCII值排序。此外,还包括返回函数、匿名函数(lambda)、装饰器(用于动态增强函数功能)和偏函数(partial),用于固定函数部分参数,简化调用。
19 1
|
23天前
|
前端开发 安全 JavaScript
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
|
7天前
|
存储 索引 Python
Python学习笔记
Python支持多变量赋值,如`a=b=c=1`和`a, b, c = 1, 2, "runoob"`。数据类型分为不可变(数字、字符串、元组)和可变(列表、字典、集合)。示例中展示了变量赋值、类型检查(`isinstance()`与`type()`的区别)以及运算操作,包括除法、乘方。字符串处理涉及索引、切片、连接和转义字符。列表、元组和集合的创建、访问和操作也进行了演示,例如列表的索引、切片、连接、重复和集合的运算。此外,还介绍了字典的使用,以及`lambda`函数和socket编程的基本概念。
4 0
|
17天前
|
Python
Python学习 笔记(五) 判断语句
Python学习 笔记(五) 判断语句
28 3
|
23天前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
23天前
|
存储 数据库 数据安全/隐私保护
基于Django的Python应用——学习笔记
基于Django的Python应用——学习笔记
|
23天前
|
存储 Java 程序员
【Python】学习笔记day2
【Python】学习笔记day2
27 1
|
23天前
|
存储 C语言 芯片
【Python】学习笔记day1
【Python】学习笔记day1
36 1