目的是用python实现一个简单的I路和Q路txt数据的读入,再分别将相应位置的I、Q数据按I高16位、Q低16位的方式,组合成一个32位数构成的数组,以一列数据的形式打印到txt。现将几点小收获记录如下。
1.?python读取txt文件的方式如下,且是以字符串形式读出的:
path_I = r'D:\valid\I4.txt'
with open(path_I, 'r') as fw:
X_fI = fw.read()
2.字符串是不可按位变的,因此,若想更改字符串内容,解决方法是将其变为list列表形式再做修改。如想要去掉字符串X_fI的最后一个字符,执行该行后X_fI已自动变为list类型:
string = string[:-1]
3.将一列字符串形式的数据转化成数据(int16类型,需import numpy as np)列表
X_fI = X_fI.split('\n') # 原数据中相邻数据是以回车分隔的
X_fI = X_fI[:-1] # 去掉最后一个空字符
X_fI_num = [np.int16(i) for i in X_fI]
4.直接向一个空列表按索引值向其中添加数据时会报错如下,因为空的列表不能直接指定某索引。
IndexError: list assignment index out of range
给列表增加数据需以如下写法进行,其中list是待添加数据的列表,num是待添加的数据:
list.append(num)
5.将int16类型的I、Q数据合并位int32类型的数据:
high_16 = 0xffff0000
low_16 = 0x0000ffff
for i in range(0, len_Q):
num = (X_fI[i] << 16) & high_16 | X_fQ[i] & low_16
|