现在有一张带曲线的图片,但没有原始数据,现想提取其中曲线的数据并拟合出公式,该怎么做呢?下面采用Getdata软件进行曲线数据的提取,并根据这些数据简单用MATLAB的工具箱进行曲线的拟合。
一、数据提取
我所用的版本较低,好像不支持导入png的图片,如果手里的图片格式为png,可以用ps等软件将图片格式转化为Getdata软件可以导入的格式,如tif格式。
假定现在有一张图片如下
-
在getdata软件中导入图片。File-Open Image
-
选择要提取数据的曲线。为便于软件识别,需要设置曲线颜色(Operations-Set line color)和背景色(Operations-Set backgroud color)。用鼠标点击对应曲线和图片背景即可,软件自动识别,点确定。
-
设置坐标轴。Operations-Set the scale,依次用鼠标点击并输入:x轴最小值、x轴最大值、y轴最小值、y轴最大值。当然不一定是严格的最小,只要是点击的位置和图上坐标轴的刻度一致即可。对于非线性刻度坐标轴(如对数刻度,我还不清楚怎么做)
-
获取数据,这里提供两种方法,一是手动逐点点击,二是自动打点
-
手动点击:Operations-Point capture mode,用鼠标点击曲线上的点即可,点击的越密集,采集的数据越多。
为了更加精确的点击,可以先用鼠标点击要打点的位置(注意不要选中Operations-Point capture mode),然后在放大框中双击鼠标左键点击打点,再次双击这个点可以取消这个点。将这条线上的点打好(打多少个就取决于个人了),就会在数据框显示我们打的点。
- 自动打点:如果曲线光滑度较高,手动打点很麻烦,可以选择自动打点,Operations-Digitize area,默认值可以不变,选择数据区域(拖动鼠标选中即可),软件就会自动识别曲线(第二步中选择的那个曲线)上的点及坐标,之后可以针对个别点进行取消和添加,使得数据点更准确即可,注意:对数据取消和添加会使得数据框里数据顺序不一定是按照x轴坐标升序排列,需要点击数据框中的x即可。
-
-
数据导出。File-Export data,这里选择了.txt格式保存,也可以选其他格式。
1.可以看出,既然能提取数据,当然也能用这种打点的方式计算结构图的尺寸,当然前提是有一个参考尺寸
2.如果想大面积消除数据点,可以Operations-Data points eraser,用橡皮擦擦除图上的数据点即可
3.其余功能(如自动追踪等)大家慢慢探索,很简单
二、曲线拟合
基于MATLAB的工具箱进行。
- 将上面保存的数据文件导入到工作空间,横纵坐标变量名设为x,y。
- 拟合公式,填入坐标数据名,选择拟合公式类型及相关参数,查看结果及效果。虽然曲线为余弦,但这里可见,用多项式也可拟合,具体选择哪种,针对具体情况具体选择即可。
拟合类型:
名称 | 含义 |
---|---|
Custom Equations | 用户自定义函数 |
Expotential | 指数函数 |
Fourier | 傅立叶函数 |
Gaussian | 正态分布函数,高斯函数 |
Interpolant | 插值函数 |
Polynomial | 多项式函数 |
Power | 幂函数 |
Rational | 有理函数 |
Smooth Spline | 光滑样条插值 |
Sum of sin functions | 正弦函数类 |
Weibull | 威布尔函数 |
如果要对拟合的曲线进行编辑,可以选择如下
在新打开的图片窗口进行后续编辑即可。
如有错误,欢迎指出。
今之文人:鲁国孔融文举、广陵陈琳孔璋、山阳王粲仲
宣、北海徐干伟长、陈留阮瑀元瑜、汝南应玚德琏、东
平刘桢公干,斯七子者,于学无所遗,于辞无所假,咸
以自骋骥騄于千里,仰齐足而并驰。—–三国魏·曹丕《典论·论文》