python学习笔记-阿里云开发者社区

开发者社区> 王先森Vicent> 正文

python学习笔记

简介: 2021/10/19
+关注继续查看

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

  • 正数的补码等于原码
  • 负数的补码等于符号位不变,其它位取反,再加1
十制数原码补码
+150b 0000 11110b 0000 1111
-150b 1000 00000b 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!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
怎样高效学习Python
  众所周知,Python语言简洁、功能强大,被看做是人工智能时代最佳的编程语言。然而golang语言的出现正在威胁Python的地位,试图取代Python成为机器学习以及AI的主流编程语言。有人好奇未来几年Python就业前景如何,如果想要从事Python开发又应该怎样高效学习Python呐?且看分析。
1549 0
学习Python的三种境界
学习Python的三种境界
1728 0
+关注
王先森Vicent
You may create better art.
32
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载