找回密码
 注册
关于网站域名变更的通知
查看: 377|回复: 1
打印 上一主题 下一主题

Matlab手动点取图形曲线数据并重画

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-16 09:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2020-3-16 16:40 | 只看该作者
Matlab手动点取图形曲线数据并重画
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-20 15:55 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表