|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
, i1 Y2 F* j: O: ^) d1 H) w
一次,在一篇paper上看到一张图,可惜里面的曲线数据没有提供。
- r% h1 i: B4 c$ d* s6 u2 t那么如何利用这张图,自己获取数据呢?
/ P4 c# @$ {, x3 A& w比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来:
) a1 _1 K5 P8 @' s5 R: O
, b, E2 X4 V$ f. yclear all;) R9 p' @0 M" x0 P' ]* M) i# H
clc;
; ~2 w! y T4 o8 `. J% T* [y=imread('./input.JPG'); %读取该图3 B1 w6 f( Y2 b7 V# L
imshow(y); %显示该图, ]3 Z# _1 ]: F7 q+ W. j3 w* c, j$ ~9 w
set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点
* \. A$ A Q8 Y$ O! K6 V7 r( T: r. ]& t2 A5 H8 r& m8 t$ |
[x0,y0] = ginput; %利用鼠标取点,按回车键结束。! [: Y1 L( Z0 `5 o) p! I
%这个时候可以顺序点取图中坐标轴的,左下,左上,右上,右下四个点。
L3 C9 Z" W% {$ _/ N9 D
$ V( C, F: j: P! F9 A# _$ S%存取角点坐标信息) L4 a1 x4 \% k$ N
save corner.mat x0 y06 l+ p7 l3 }. e# E* p. ^, Z
& B" U7 \7 f" ^0 Y9 D% G$ _. Q/ J%开始撷取其中一条实线上的点,按你需要的精度,点取任意多的点,回车结束
; U+ H9 w; R+ z+ u- @" r[x1,y1] = ginput;
8 h3 a1 a# _+ N$ V7 L9 ?3 `5 g9 }* e
D- p& l% W# D+ V%存取曲线1的点源信息
" Z3 \' T; l* C# n$ Xsave line1.mat x1 y1
2 t# h' I2 y2 K8 ?9 z# j0 j7 C% m0 X! p0 p
%其余曲线类推% j9 J9 ?* D, O3 {" h& i0 I
4 u0 Q0 R) L2 V Z
%重画
! Y9 [, |) H) P+ a: J7 p1 u: C- u- [%因为屏幕坐标是从左上角为坐标原点开始的,需要做些变换% [2 B8 M* B1 }' ~& N- E1 F
%四个角点对应的坐标为(0,0) (0,4),(8,4),(8,0)
5 o: P A9 H; C2 t' sx1 = (x1-min(x0))*8.0/(max(x0)-min(x0));
, ^$ B1 B' _( K; A1 q; o! ]y1 = (y1-max(y1))*4.0/(min(y0)-max(y0));' `8 H2 I4 Z$ @& p3 T
plot(x1,y1,'k.','Markersize',5);1 G' e! T; m& N% y4 Q9 u
axis equal;% A6 T( L# u: A/ g5 a6 ]3 v
axis([0 8 0 4]);. w2 u5 Q+ t$ B6 m" M% e
set(gcf,'outerposition',get(0,'screensize'));! x4 [0 H: p1 i7 W" F$ |
|
|