声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

声振论坛 展示 科学计算 matlab 查看内容

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

2016-4-29 09:41| 发布者: Pparis| 查看: 1113| 评论: 0|原作者: 不详|来自: 新浪hahaer的博客

摘要: 一次,在一篇paper上看到一张图,可惜里面的曲线数据没有提供。 那么如何利用这张图,自己获取数据呢? 比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来: font color=#000000clear all; clc; ...
一次,在一篇paper上看到一张图,可惜里面的曲线数据没有提供。
那么如何利用这张图,自己获取数据呢?
比如有下面这么一张图,我们要用鼠标取得曲线的数值,并记录下来:

[attach]73461[/attach]
  1. <font color="#000000">clear all;
  2. clc;
  3. y=imread('./input.JPG'); %读取该图
  4. imshow(y); %显示该图
  5. set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点

  6. [x0,y0] = ginput;  %利用鼠标取点,按回车键结束。
  7. %这个时候可以顺序点取图中坐标轴的,左下,左上,右上,右下四个点。

  8. %存取角点坐标信息
  9. save corner.mat x0 y0

  10. %开始撷取其中一条实线上的点,按你需要的精度,点取任意多的点,回车结束
  11. [x1,y1] = ginput;


  12. %存取曲线1的点源信息
  13. save line1.mat x1 y1

  14. %其余曲线类推

  15. %重画
  16. %因为屏幕坐标是从左上角为坐标原点开始的,需要做些变换
  17. %四个角点对应的坐标为(0,0) (0,4),(8,4),(8,0)
  18. x1 = (x1-min(x0))*8.0/(max(x0)-min(x0));
  19. y1 = (y1-max(y1))*4.0/(min(y0)-max(y0));
  20. plot(x1,y1,'k.','Markersize',5);
  21. axis equal;
  22. axis([0 8 0 4]);
  23. set(gcf,'outerposition',get(0,'screensize')):</font>
复制代码

[attach]73462[/attach]

最新评论

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-11 00:16 , Processed in 0.136738 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部