python界面设计简单项目实践——逆pedal map(持续更新)
背景介绍
I:车速-油门-扭矩力padel map
P:坐标轴转换+插值+索引+提取
O:车速-扭矩力-油门逆padel map
逻辑主线
面向对象+过程设计
获取数据
处理数据
输出数据
方法支持
界面搭建
界面布局
事件响应:信号+槽
获取响应-处理响应-输出反馈
def initUI(self):
#主窗口
self.setGeometry(0, 0, 800, 400)
self.setWindowTitle('逆Pedal Map计算工具')
#按钮事件响应
self.bt1 = QPushButton('数据装载', self)
self.bt1.move(150, 200)
self.bt1.clicked.connect(self.openfile)
self.show()
数据的输入和输出
文件
系统启动excel程序:
os.system(r'matrix.xlsx')
打开excel读取矩阵:
df = pd.read_excel('matrix.xlsx', sheet_name='padelmap', header=None)
保存矩阵生成excel:
t = time.localtime() #获取本地时间struct型
data_df = pd.DataFrame(goaldata) #类型转换
writer = pd.ExcelWriter( r'..\\result\\'+ time.strftime("%Y-%m-%d %H-%M-%S", t) + 'nimapdata.xlsx') #..\当期路径的上一级 + 本地时间~格式化输出 + 文件名及后缀
data_df.to_excel(writer, sheet_name='nipedalmap')
writer.save()
pandas将数据导入excel参数设置
python处理excel数据基本操作
文本
数据的处理
识别和转化
数据类型的读取:
type(df)
数据类型的转化:
dfdata = np.array(df)
矩阵的操作
生成一定维度矩阵:
middata1 = np.zeros(shape=(ynum + 1, col))
生成定步长数组:
middata1[1:, 0] = np.arange(zmin, zmax + 1, 1)
numpy自动生成数组
矩阵的转置:
force == dfdata2.transpose()[j, 0]
矩阵维度的获取:
row = dfdata.shape[0]
col = dfdata.shape[1]
矩阵范围最值的获取:
dfdata[1:, 1:].max()
numpy冒号的使用注意:#python的数组使用[] matlab的数组使用(),且python的索引是左闭右开,matlab的索引是都闭,python的冒号代表全局或范围,-1代表末尾
矩阵间移植:
middata1[0, :] = dfdata[0, :]
矩阵拷贝赋值
获取矩阵中满足条件的元素索引:
index1 = np.zeros(shape=(1, dfdata1.shape[1]))
for i in range(0, dfdata1.shape[1]):
index1[0, i] = np.argwhere(speed == dfdata1[0, i]) + 1
list和numpy数组最值索引
numpy获取矩阵特殊值(最值,平均……)
面向对象+面向过程
经验产出
万物皆对象
界面程序框架与程序实现主体衔接