|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
7 o0 M# v' ?+ F1 M" \5 R( A6 ~
一次,在一篇paper上看到一张图,可惜里面的曲线数据没有提供。- W7 K6 U1 `! V, Q9 S
那么如何利用这张图,自己获取数据呢?
1 w1 K5 f" V" H" h2 h7 n! A比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来:5 U7 }; |$ Y/ v7 P# t2 U6 d
- N0 G8 m0 ~5 a7 u4 nclear all;! O* m" m/ C* u E/ e; I
clc;
9 L9 q# T6 e# fy=imread('./input.JPG'); %读取该图6 e* V/ m+ y9 e' \6 B
imshow(y); %显示该图4 Q. D. i9 S' M3 R# w
set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点
9 X' \2 l5 r) p, |% j& G/ a7 q
3 [8 N( v. s" Y[x0,y0] = ginput; %利用鼠标取点,按回车键结束。
* K6 ~+ l8 `+ k& ?# V%这个时候可以顺序点取图中坐标轴的,左下,左上,右上,右下四个点。
& z, q9 I0 u: c; K- c( c" P( X/ p; @7 i& \. H
%存取角点坐标信息
1 M) M. Q5 A% E; m0 q; @save corner.mat x0 y0
+ [$ j) x Z, ^' a3 r" X" \
/ N1 P1 ?9 {- G) M8 m& S4 N8 ^%开始撷取其中一条实线上的点,按你需要的精度,点取任意多的点,回车结束
; R0 ?& u; X4 S3 |[x1,y1] = ginput;. d: ^( a" L8 V4 Y2 m. b: d! {5 y
: ]# S1 X2 ]9 E& H/ X. z/ {
! U4 |0 N3 K. P- u. f
%存取曲线1的点源信息. Y3 n9 P0 b0 }, ^$ D H" `% O
save line1.mat x1 y1) R" x1 | }7 Y5 }9 H
" [+ s# Y6 g: |5 @2 w- N, l/ d
%其余曲线类推
' g) u& P( q h' U1 f6 v+ N2 X. T6 g
%重画5 i5 T4 Q9 i$ X4 ~. X
%因为屏幕坐标是从左上角为坐标原点开始的,需要做些变换! i/ U3 A" C8 D4 p C
%四个角点对应的坐标为(0,0) (0,4),(8,4),(8,0)
/ R0 y) F. `& G( s3 Q$ ?- ~x1 = (x1-min(x0))*8.0/(max(x0)-min(x0));; c; d) ^! w4 Q/ Y# W9 {) D
y1 = (y1-max(y1))*4.0/(min(y0)-max(y0));
# a' q4 G8 ~, ^" Cplot(x1,y1,'k.','Markersize',5);
& Z4 k# _7 J! s9 t& j0 [axis equal;
/ F4 V$ f2 B& a# paxis([0 8 0 4]);" B0 f7 A& T; a% L
set(gcf,'outerposition',get(0,'screensize'));
_% `" g2 T( z3 Z" I0 w4 {- V
|
|