Pparis 发表于 2016-4-29 09:53

Matlab手动点取图形曲线数据并重画

一次,在一篇paper上看到一张图,可惜里面的曲线数据没有提供。
那么如何利用这张图,自己获取数据呢?
比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来:

<font color="#000000">clear all;
clc;
y=imread('./input.JPG'); %读取该图
imshow(y); %显示该图
set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点

= ginput;%利用鼠标取点,按回车键结束。
%这个时候可以顺序点取图中坐标轴的,左下,左上,右上,右下四个点。

%存取角点坐标信息
save corner.mat x0 y0

%开始撷取其中一条实线上的点,按你需要的精度,点取任意多的点,回车结束
= 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();
set(gcf,'outerposition',get(0,'screensize'));</font>
转自:http://blog.sina.com.cn/s/blog_5def5a660101332c.html
页: [1]
查看完整版本: Matlab手动点取图形曲线数据并重画