python筛选处理天线暗室数据,得到1. 增益随频率变化 2.指定频点E面H面的主极化,交叉极化 的数据
应用场景
从天线暗室中获取的数据一次完整测试约有44万行数据,手动筛选出需要数据较为困难。暗室中的软件可以选择需要数据进行拷贝,但是一是在暗室的时间非常宝贵(学校其他课题组资源,5元/分钟收费)二是在暗室中筛选后的数据是不完整数据,后续处理中如果发现有遗漏数据后续补数据非常麻烦。所以不如一次性拷走所有数据通过代码筛选出所需要的数据,再用origin画图。
其他说明
本代码主要考虑实用性,实现相似功能的代码重复率较高(未将重复代码抽出复用)
所需数据材料格式
从天线暗室导出的初始数据即可。格式为.csv文件(如果是.xlsx或者.xls文件另存为.csv即可)。表头如下:
- 第一行的表头固定为’Frequency’ ,‘Phi’ ,‘Theta’ ,‘Gain Phi. dB’,‘Gain Theta. dB’(后续数据处理的识别中使用)
- 本文中暗室所用数据的Phi和Theta的单位为弧度
处理数据步骤
一、Python目录结构
示例中该项目名为antenna,需要处理的初始文件(xx.csv)放在antenna下的files文件夹中
--antenna
--files
--xx.csv
--xx
--筛选后的文件.csv
--set.py
--selectphi0.py
--selectphi90.py
--selectallgain.py
--selectfrequencyphi0.py
--selectfrequencyphi90.py
--selectfrequencytheta0.py
--selectfrequencytheta90.py
二、设置待处理文件名和需筛选的频点的集合
"set.py"文件设置需要处理的文件名和需要被筛选的频点
#需要处理的原始文件
origincsv = 'files/xx.csv'
#需要输出的采样频点 单位:GHz
used_frequency = ['2.15','2.45','2.9','3.45','3.85']
三、分别筛选出所有phi=0 theta=0的数据和phi=90 theta=90的数据
数据初处理:分别筛选出所有phi=0和phi=90的数据,方便后续筛选出所需要频点的方向图所需数据,每次从44万行数据中筛选时间较久,故做一次初筛。
其对应的文件分别为:selectphi0.py 和 selectphi90.py
- 需要安装pandas扩展
selectphi0.py代码如下
import pandas as pd
import math
import os
from set import *
#初始数据表格
print(os.path.exists(origincsv))
#显示当前工作目录
originfilename = os.path.splitext(origincsv)[0]
#df = pd.concat(map(pd.read_csv, ['wlj11.csv', 'gainphi.csv','gaintheta.csv']))
df1 = pd.read_csv(origincsv)
contents1 = [['Frequency','Phi','Theta','Gain Phi. dB']]
contents2 = [['Frequency','Phi','Theta','Gain Theta. dB']]
for index, row in df1