|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
# n# T \$ e3 }
一次,在一篇paper上看到一张图,可惜里面的曲线数据没有提供。- W8 R9 g4 `7 c! p& K: G
那么如何利用这张图,自己获取数据呢?
- D. d, a" A) L) _( x: F比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来:- d2 Q+ B7 V* q6 p
h1 f2 u+ @6 m% T# R
clear all;2 X4 c4 z& {, T2 h3 \7 h
clc;+ y; ~& Q4 g ?
y=imread('./input.JPG'); %读取该图% P C- D" A7 N1 |- q A( P2 \
imshow(y); %显示该图
# R/ G$ z6 m# y+ g# J& z5 @; X; Xset(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点; h7 W% Y/ T/ m" G* M4 E
/ S! L, M$ P0 T& P z
[x0,y0] = ginput; %利用鼠标取点,按回车键结束。% `# v9 }7 Y. \1 d
%这个时候可以顺序点取图中坐标轴的,左下,左上,右上,右下四个点。! b# u/ y3 f! c4 ?% s% T1 U
* b* M3 A8 G7 v
%存取角点坐标信息
. W. F9 ^* E& c5 V' @; e' Ssave corner.mat x0 y00 v6 F- d( P P
: C, F) b$ f# _8 o$ n% U: Y9 ~%开始撷取其中一条实线上的点,按你需要的精度,点取任意多的点,回车结束! I2 H9 y$ Y( `+ ^
[x1,y1] = ginput;
1 N+ f8 W6 X+ R! O. P+ b2 y
1 {# F# g, ^, \+ [& }) X
5 K# D/ [. r" ]%存取曲线1的点源信息5 Q, a9 D$ ]5 i; |1 k
save line1.mat x1 y1
+ F" _$ f: ^. d. U' h1 r# I
( r. F) l9 ]' e%其余曲线类推
. j4 ?% X8 X5 A9 C# ^& Y) x% n! ^1 Y5 F/ C' {, x% b6 l
%重画
8 M% `4 S1 e$ O7 H R! A- \0 m% ]%因为屏幕坐标是从左上角为坐标原点开始的,需要做些变换5 E3 h/ I6 h7 Q u; Q8 V; e c
%四个角点对应的坐标为(0,0) (0,4),(8,4),(8,0)$ F" h; q( o$ q9 ~( K4 T5 [
x1 = (x1-min(x0))*8.0/(max(x0)-min(x0));, p$ P7 W. n0 I0 a2 J. C. D. A5 v
y1 = (y1-max(y1))*4.0/(min(y0)-max(y0));3 F* }/ d! r3 a- W2 r. E) |3 a
plot(x1,y1,'k.','Markersize',5);! s0 F K. k: s- u, G2 F0 O9 m
axis equal;
8 q, B( A' m+ e! M2 Daxis([0 8 0 4]);
9 b) B6 B/ M7 z: ?9 {3 b8 r. lset(gcf,'outerposition',get(0,'screensize'));4 p1 e, ?1 R, k9 W
|
|