|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
) c5 k) R: ]: L! B- ]. X) @& M( l
一次,在一篇paper上看到一张图,可惜里面的曲线数据没有提供。2 Y$ ~" P, J, M( ^* ?
那么如何利用这张图,自己获取数据呢?( t; u, m* V7 t1 h6 _- Z0 ]
比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来:
' }+ Z4 E4 a7 M/ V$ m
) |- P' T; V2 p5 \+ ~* d; Wclear all;1 |7 N1 R1 h& `( J; b/ d" o
clc;* q {3 F7 _7 z- i9 @
y=imread('./input.JPG'); %读取该图
# N+ X/ G1 r3 i1 I Limshow(y); %显示该图) X+ \! Z0 V- F/ w, x! \
set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点
- w, f; b, \# i: }
( @8 Z J, `- G( e H: ]# k[x0,y0] = ginput; %利用鼠标取点,按回车键结束。7 @. [ ?7 p: x0 r
%这个时候可以顺序点取图中坐标轴的,左下,左上,右上,右下四个点。
8 j% m; w R w0 Q. M% q! u# U& v
1 C6 w! `% S0 o, U) L%存取角点坐标信息: x/ h* K4 ?; ^) ?7 _; L* E/ N, X
save corner.mat x0 y0
# {: j, G4 P" R, ]3 Q! R. t
/ v# M0 }3 ~ p$ j7 d%开始撷取其中一条实线上的点,按你需要的精度,点取任意多的点,回车结束
+ x" M4 x, R+ T6 s; }' G& A[x1,y1] = ginput;, k% V1 [2 M* ?4 r/ V9 l
7 P- ]9 g7 Z5 E3 h% L
. d& e! ^5 R7 P& r X" _%存取曲线1的点源信息
" F2 r+ H# I( f2 D, [4 ksave line1.mat x1 y1
% d3 o5 d1 ]6 V4 }
7 g1 B* _: Q3 [0 h%其余曲线类推
. c5 }' g- K9 D3 F4 G5 D0 a- ?
; ]) k# c5 @* t: s Z%重画
5 f% |4 W8 x# h/ |%因为屏幕坐标是从左上角为坐标原点开始的,需要做些变换 @" {$ W/ o1 N8 K* X! T7 F
%四个角点对应的坐标为(0,0) (0,4),(8,4),(8,0)
6 t% X* f n2 |3 H Lx1 = (x1-min(x0))*8.0/(max(x0)-min(x0));9 u7 V5 N& }9 `; ?4 D
y1 = (y1-max(y1))*4.0/(min(y0)-max(y0));
# |3 Q0 ^6 n) B5 \plot(x1,y1,'k.','Markersize',5);
, D: i* |- G Z' m# `! |( Z" Zaxis equal;5 a0 d' j$ q) g% s6 E/ e
axis([0 8 0 4]);
6 m0 p8 t H7 vset(gcf,'outerposition',get(0,'screensize'));* N. \8 ?) w* {' q1 W$ a
|
|