網(wǎng)站首頁 編程語言 正文
1、十六進(jìn)制字節(jié)流數(shù)據(jù)
有一個(gè)二進(jìn)制文本data
如下:
b"\xd0\x01n\x01\xb3\x1b\x07\x05\xee\x06\xcc\xfe\x84\x12\xab\x07~\x08p\x00\x92\x14u\x01\xe4\x12d\xfe9\x08\xb0\x1e\xa6\x02\xb1C?\x18#E\x12\x12\x13^v\x04w\x1d\xe8\x04\x9bf\x1a\x1c\x9b\x0b\xb0\x11\xae%#\x06\xbe\x1f^\x15s.\x92\x10k'`\x0b[ {\x03!\x00 \x1b\xdf(\xec#\xfcH=\x02\x1e\x11!\x07\xba\xedu \xa7\x0e\xdb\x0by\xfb\x91\x05H\x03\xcb\x08\x94\x04\xfd\x13n\xf8\x07\x06d\xfd\xaf\t{\x17\xda$y\x10"
這些數(shù)據(jù)是設(shè)備通過TCP傳上來的,經(jīng)過小端
變換的十六進(jìn)制字節(jié)流數(shù)據(jù)。
可以使用以下文件轉(zhuǎn)換后查看。
方式1:
import struct def updack_data(data): # 十六進(jìn)制字節(jié)流轉(zhuǎn)十進(jìn)制 dec_data = [] for i in range(0, len(data), 2): dec_data.append(struct.unpack("@h", data[i: i + 2])[0]) # 小端 return dec_data with open('data', 'rb') as f: signal = f.read() print(updack_data(signal))
方式2:
import numpy as np a = b"\xd0\x01n\x01\xb3\x1b\x07\x05\xee\x06\xcc\xfe\x84\x12\xab\x07~\x08p\x00\x92\x14u\x01\xe4\x12d\xfe9\x08\xb0\x1e\xa6\x02\xb1C?\x18#E\x12\x12\x13^v\x04w\x1d\xe8\x04\x9bf\x1a\x1c\x9b\x0b\xb0\x11\xae%#\x06\xbe\x1f^\x15s.\x92\x10k'`\x0b[ {\x03!\x00 \x1b\xdf(\xec#\xfcH=\x02\x1e\x11!\x07\xba\xedu \xa7\x0e\xdb\x0by\xfb\x91\x05H\x03\xcb\x08\x94\x04\xfd\x13n\xf8\x07\x06d\xfd\xaf\t{\x17\xda$y\x10" print(np.fromstring(a, dtype=np.int16))
輸出:
[464, 366, 7091, 1287, 1774, -308, 4740, 1963, 2174, 112, 5266, 373, 4836, -412, 2105, 7856, 678, 17329, 6207, 17699, 4626, 24083, 1142, 7543, 1256, 26267, 7194, 2971, 4528, 9646, 1571, 8126, 5470, 11891, 4242, 10091, 2912, 8283, 891, 33, 6944, 10463, 9196, 18684, 573, 4382, 1825, -4678, 8309, 3751, 3035, -1159, 1425, 840, 2251, 1172, 5117, -1938, 1543, -668, 2479, 6011, 9434, 4217]
2、fopen與open
打開文件。
matlab打開:
fid=fopen('data','rb');
python打開:
fid = open('data', 'rb')
data
是完整的文件名。
3、fread與fromfile
讀取文件。
matlab讀取:
signal=fread(fid,data_len,'int16'); %列向量
fread它是一個(gè)讀取二進(jìn)制數(shù)據(jù)的函數(shù).第二個(gè)參數(shù)指定輸出向量的大小,第三個(gè)參數(shù)指定讀取的項(xiàng)的大小/類型.
python讀取:
import numpy as np signal = np.fromfile(fid, np.int16) # 轉(zhuǎn)Int16
fid是一個(gè)文件對象,也可以直接打開一個(gè)文件名:
import numpy as np signal = np.fromfile('data', np.int16) # 轉(zhuǎn)Int16
其中data
是一個(gè)完整的文件名。
4、reshape
reshape是重塑數(shù)組,比如把一維數(shù)組轉(zhuǎn)多維數(shù)組。
matlab:
signal1=reshape(signal,2,[]);
意思就是把一維的signal
轉(zhuǎn)成2行n列數(shù)組。
python:
signal1 = signal.reshape((-1, 2)).T
-1表示n行,2表示兩列, .T表示轉(zhuǎn)置,即2行n列數(shù)組。
把一維數(shù)組轉(zhuǎn)10行n列:
import numpy as np phase = np.reshape(signal1[0], (-1, 10)).T
5、filter與lfilter
y = filter(b,a,x) 使用由分子和分母系數(shù) b 和 a 定義的有理傳遞函數(shù)對輸入數(shù)據(jù) x 進(jìn)行濾波。
matlab:
y=filter(HP,1,phase(1,:));
python:
from scipy.signal import lfilter y = lfilter(b=HP, a=1, x=phase[0], axis=0) # 濾波
原文鏈接:https://blog.csdn.net/m0_57081622/article/details/125205751
相關(guān)推薦
- 2023-01-10 Go語言defer與return執(zhí)行的先后順序詳解_Golang
- 2022-02-06 TP6記錄報(bào)錯(cuò)的SQL語句
- 2023-07-07 springboot優(yōu)雅處理異常
- 2023-10-15 centos 切換g++
- 2022-04-11 android原生與kotlin驗(yàn)證碼倒計(jì)時(shí)
- 2023-01-17 C++使用宏實(shí)現(xiàn)動(dòng)態(tài)庫加載_C 語言
- 2022-09-05 Hbase之查看RowKey所在Region
- 2022-05-25 C語言中操作字符串的函數(shù)詳解_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支