Matlab手动点取图形曲线数据并重画matlab拟合数据
一次,在一篇paper上看到一张图,可惜里面的曲线数据没有提供。
那么如何利用这张图,自己获取数据呢?
比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来:
clear all;
clc;
y=imread('./input.JPG'); %读取该图
imshow(y); %显示该图
set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点
那么如何利用这张图,自己获取数据呢?
比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来:
clear all;
clc;
y=imread('./input.JPG'); %读取该图
imshow(y); %显示该图
set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点
[x0,y0] = ginput; %利用鼠标取点,按回车键结束。
%这个时候可以顺序点取图中坐标轴的,左下,左上,右上,右下四个点。
%存取角点坐标信息
save corner.mat x0 y0
%开始撷取其中一条实线上的点,按你需要的精度,点取任意多的点,回车结束
[x1,y1] = ginput;
%存取曲线1的点源信息
save line1.mat x1 y1
%其余曲线类推
%重画
%因为屏幕坐标是从左上角为坐标原点开始的,需要做些变换
%四个角点对应的坐标为(0,0) (0,4),(8,4),(8,0)
x1 = (x1-min(x0))*8.0/(max(x0)-min(x0));
y1 = (y1-max(y1))*4.0/(min(y0)-max(y0));
plot(x1,y1,'k.','Markersize',5);
axis equal;
axis([0 8 0 4]);
set(gcf,'outerposition',get(0,'screensize'));
axis equal;
axis([0 8 0 4]);
set(gcf,'outerposition',get(0,'screensize'));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论