|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
' [1 Y% R! s+ m$ ~# Y' B
一次,在一篇paper上看到一张图,可惜里面的曲线数据没有提供。) }2 j2 Y: h" k$ v( @. E9 {
那么如何利用这张图,自己获取数据呢?
) M! e: l7 a+ `) |比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来:8 p: S" {8 R: H5 \2 {8 N, T' d* B
. i+ A$ m- D8 gclear all;
0 ^/ Z0 w% p' h* H7 E$ h& |clc;
) ^* Q: I( h! S/ f4 u: E! O4 P3 @y=imread('./input.JPG'); %读取该图; I+ ~+ }! g _2 [* U2 B u
imshow(y); %显示该图: n/ v: z3 S) {. p
set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点
' I6 ]4 _# l7 I1 H
3 \+ B% v9 r$ l9 |3 o0 X7 E8 m[x0,y0] = ginput; %利用鼠标取点,按回车键结束。
( F$ z) L, c; @& Y%这个时候可以顺序点取图中坐标轴的,左下,左上,右上,右下四个点。4 x5 w* ^( X: c) Q4 j X
7 v; I) Z# O+ I1 `%存取角点坐标信息
- |" C/ f+ R+ w# \5 ?: }, Qsave corner.mat x0 y0- p1 ?' b0 k4 P) a' D; U
6 E* O0 H1 ~2 t5 O, V; L%开始撷取其中一条实线上的点,按你需要的精度,点取任意多的点,回车结束
! r9 k! S) y* R8 e+ j[x1,y1] = ginput;
/ e; h6 \% S2 |! @
$ S9 D. A5 [( J s / p( I' H2 F! l7 Q* Y2 j! T
%存取曲线1的点源信息
) w M3 k; ?1 d! N" Ssave line1.mat x1 y1" x; Y# K7 S" n0 Z- U: G: A Q
; w' @, D8 V2 i, i$ b, X
%其余曲线类推
" T9 Z1 J5 S1 G4 n2 C3 F( j% a4 V; @7 {
%重画
+ N( m) x/ g. C2 H W%因为屏幕坐标是从左上角为坐标原点开始的,需要做些变换
0 g2 z( @# `- w6 a1 i: z! d%四个角点对应的坐标为(0,0) (0,4),(8,4),(8,0)$ c0 q2 h. ? v1 I* g0 J
x1 = (x1-min(x0))*8.0/(max(x0)-min(x0));
/ K2 K- L; B& l! My1 = (y1-max(y1))*4.0/(min(y0)-max(y0));' @4 [0 X9 H- m- N6 _
plot(x1,y1,'k.','Markersize',5);- M# r6 Y2 `, Z+ @( t5 ^
axis equal;
. W( ]3 K3 w1 Y; Z0 H0 |axis([0 8 0 4]);" S7 o7 C% f M k( P
set(gcf,'outerposition',get(0,'screensize'));9 \# K0 m+ |, v' P! Z- U
|
|