AD7606雷达数据采集模块数据分通道提取
AD7606雷达采集模块可以同时采集8通道的数据,使用配套数据采集软件可以将数据导出为txt文件,但直接用txt文件导入到matlab进行进一步的分析比较麻烦,因此闲来无事用python写了可以将八通道分别导出为.mat文件的程序。
程序交互
1、输入数据文件所在的目录
2、输入需要提取的通道数
这里因为我只需要提取IQ分路,因此填入2
3、分别输入需要提取的通道号
4、最后会在数据文件所在目录生成文件夹,文件夹里面会包含分离好的.mat文件,在matlab里load即可载入对应数据。
程序源码
import pandas as pd
import numpy as np
import scipy.io as sio
import os
while(1):
print('\n========================================')
print('This program is written by kimpa.')
print('If there is any bug, please feedback to: ' + '\n' + 'kimpa@aliyun.com')
print('version:1.0')
print('========================================')
# 数据路径地址
# path_name = './data/2021_06_03/'
print('The form of path: \nD:\\Study files\\data sampling\\data\\2021_06_03\n')
path_name = input("Please input the data's path: ")
# path_name = r'D:\Study files\课题研究\data sampling\data\2021_06_03'
colums_num = input("Please input the number of colums: ")
colums_num = int(colums_num)
while colums_num <= 0 or colums_num >= 9:
colums_num = input('The number of colums must be between 1 ~ 8 !')
colums_num = int(colums_num)
col = np.zeros([colums_num, ], dtype=int)
order_name = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth']
for i in range(colums_num):
col[i] = input("Please input the " + order_name[i] + " colum: ")
col[i] = int(col[i])
# 判断输入是否在1~8之间
while col[i] <= 0 or col[i] >= 9:
col[i] = input('It must be between 1 ~ 8 !')
col[i] = int(col[i])
col[i] = col[i] - 1
# 查找数据文件夹中有多少组数据,以便后续便利操作
all_files = os.listdir(path_name)
files_num = len(all_files)
# 遍历每个数据文件
for i in range(files_num):
# 读取单个数据文件
file_name = all_files[i]
data = pd.read_csv(path_name + '\\' + file_name, header=None)
# 将数据调整为numpy格式
data = np.array(data)
tmp_data = np.zeros([colums_num, data.shape[0]], dtype=float)
for k in range(colums_num):
# print(col[k])
tmp = data[:, col[k]]
if col[k] == 0:
for m, n in enumerate(tmp):
tmp_data[k, m] = n.split()[-1]
else:
for m, n in enumerate(tmp):
tmp_data[k, m] = n
if not os.path.exists(path_name + r'\mat_' + path_name.split('\\')[-1]):
os.mkdir(path_name + r'\mat_' + path_name.split('\\')[-1])
for j in range(colums_num):
sio.savemat(path_name + r'\mat_' + path_name.split('\\')[-1] + '\\' + file_name[:-4] + '_ch' + str(
col[j] + 1) + '.mat', {'data': tmp_data[j, :]})
print(file_name + ' has been saved!')
print('All files are extracted successfully!')
结尾
能力有限,如果存在问题欢迎指点!