弯曲测试的载荷-位移图的处理(1)
来源:互联网 发布:基于单片机论文 编辑:程序博客网 时间:2024/04/27 22:44
前言
这篇是将好久之前的想法付诸实践,也算是对自己想方设法应用并来提高自己的Python基础,这个过程也花了不少时间,毕竟自己还是没有怎么经常用Python。利用Python,期望实现将自己毕设中所做的力学测试(三点弯曲)的原始数据进行画图并自动找出其中线性区域,也就是弹性形变区,并求其斜率最后存入文件。
结果
废话不多说,先摆上成果。我相信,这里面包括思路、代码、编程方式等要改的肯定很多,但这也是我现在的水平了。一步一步来。
# -*- coding: utf-8 -*-import osimport numpy as npimport pandas as pdimport scipy.ndimagefrom matplotlib import pyplot as pltfrom scipy import optimizebase_dir = os.path.dirname(__file__)def experimental_data_read(filename): file_path = os.path.join(base_dir, filename) df = pd.read_excel(file_path) return dfdef linear_region(df, y_start, y_stop): x = df["X"] y = df["Y"] df_linear = df[(y > y_start) & (y < y_stop)].iloc[:1000] return df_lineardef residuals(p, y, x): k, b = p return y - (k*x + b)def curve_plot(i, df, df_linear): x = df["X"] y = df["Y"] x_linear = df_linear["X"] y_linear = df_linear["Y"] plt.figure() plt.plot(x, y, label = "experimental data") plt.plot(x_linear, y_linear, label = "linear part") plt.legend() plt.savefig(str(i), format="png")def least_square_fitting(rediduals, p0, df_linear): x_linear = df_linear["X"] y_linear = df_linear["Y"] r = optimize.leastsq(residuals, p0, args=(y_linear, x_linear)) k, b = r[0] return ky_start = float(raw_input("Enter y_start:"))y_stop = float(raw_input("Enter y_stop:"))k = []for i in range(1,6): filename = '.'.join((str(i),'xls')) df = experimental_data_read(filename) df_linear = linear_region(df, y_start, y_stop) curve_plot(i, df, df_linear) p0 = [1, 0] k.append(least_square_fitting(residuals, p0, df_linear))slope = pd.Series(k)slope.to_csv('slope.csv')
一共是定义了5个函数来实现:experimental_data_read
、linear_region
、residuals
、least_square_fitting
和curve_plot
,这些都是可以直接通过函数名称明白其作用。
首先就是文件的读取,这个是参考了Django的读取模板(Template)的代码:
base_dir = os.path.dirname(__file__)
其实主要纠结比较久的部分就是如何自动寻找出一条曲线的线性区间,这在直观上很容易发现,但是若是让程序来判断的话,思路是想通过结合一阶导数和二阶导数来判断。但是具体在选用函数来实现时发生困难,目前还未实现,因此是手工输入线性区间范围,实现自动画图和求斜率,还未实现自动判断线性区间,先记录到这里。
阅读全文
0 0
- 弯曲测试的载荷-位移图的处理(1)
- 弯曲的手指
- meterpreter的攻击载荷使用
- visio交叉线(跨线)去掉交叉点弯曲(弧形弯曲)的办法
- 手臂不能弯曲的人们
- 上海最弯曲的道路
- 横竖弯曲边缘的交点
- IKEv1主模式证书协商中对证书相关载荷的处理。
- 使用DEFLATE的IP有效载荷压缩
- H.264 视频的 RTP 载荷格式
- Cesium载荷测试
- Java(位移的应用)
- APDL实现频率相关的载荷的谐响应分析(ansys)
- 时空弯曲是必须的吗?
- iPhone5易弯曲的六大理由猜想
- 比纸还薄的可弯曲电池问世
- 读书笔记:弯曲空间的波方程
- 可弯曲软管的动态生成
- Spring集成JPA和MyBatis例子
- dvwa-SQL Injection
- Mac Axure8.0破解版下载和教程
- mybatis生成UUID主键,且获取当前新增的UUID主键
- 初学Redis(4)——简单实现Redis缓存中的排序功能
- 弯曲测试的载荷-位移图的处理(1)
- Spring (二)代理模式
- POJ1166The Clocks
- 快速排序及一些优化
- Dao2
- 字符串表达式求值
- 修炼Android权威指南(第三天)CriminalIntent
- 数据库事务的四大特性以及事务的隔离级别
- Android中 Bitmap和Drawable相互转换的方法