从Matlab的Fig图片中提取数据,并保存成csv文件

  • 1.Fig图像是由单条曲线绘制
  • 2.Fig图像是由双条曲线绘制
  • 3.小结

本人亲自实测有效,但能力有限,目前仅用代码测试了 Figure图片单线条和双线条的提取(多线条可模仿双线条代码)。很多帖子的代码不是不全就是仅限于单线条提取的,自己摸索了两天才弄出来。 提取数据目的:通过从Matlab中的Figure图片提取数据,再利用python进行重新绘制,使得科研论文图片效果更佳。

1.Fig图像是由单条曲线绘制

前提:要从Matlab中的Fig图片提取数据,首先会用Matlab中画出Fig图片,然后保存成fig文件,记得文件格式后缀是".fig"。
正文

  1. Matlab中的Fig图像曲线在工作空间是以矩阵形式保存的,在工作区可以查看,这里不细讲。
  2. 将曲线数据提取,也就是将x和y轴的数据分成两列保存到表格中,可以保存为excelcsv格式,这里保存为csv是本人工作需要。
  3. 单条曲线的提取还是比较简单,本人将代码详细贴出来,请参考:
%%将matlab的fig文件提取到csv或者excel中,且保留行列格式
%%单曲线单坐标情况%图1
open('图片.fig')%打开fig格式图片
handle = findobj(gca,'Type','line');%获取曲线的handle,如果图中有多条曲线,handle为一个数组
xdata = get(handle,'XData');%将handle的x数据赋给xdata一维数组
ydata = get(handle,'YData');%将handle的y数据赋给ydata一维数组
data = [xdata',ydata'];  % 将数据组集到data,将x和y数据写进一个二维数组
[m, n] = size(data);    %得到数据的数据长度
data_cell = mat2cell(data, ones(m,1), ones(n,1));  % 将data切割成m*n的cell矩阵
title = {'x列数据的称呼','y列数据的称呼'};     % 添加变量名称,csv首行的每一列的名称,单曲线只有x和y名称
result = [title; data_cell];           % 将变量名称和数值组集到result
s = xlswrite('图片.csv', result);     %保存为csv格式文件,名字为“图片”

2.Fig图像是由双条曲线绘制

正文:请配合本人代码食用效果更佳

  1. 在上面有说到,Fig数据在Matlab中以数组形式存放,一条曲线的数据存放在一个方格,对于双线条而言,在Matlab的工作区里有两格存放,也就是有两个m*n的矩阵。
  2. handle就是数据的句柄,也就是指向,handle(1)指向第一个方格的矩阵,handle(2)指向第二个方格的矩阵。
  3. 关于双曲线的表格首行称呼问题,这也是其他帖子没有说到的问题,两条曲线也就代表着表格里有四列数据,如何使每条曲线的x和y按列导出到csv或excel呢?关键是data_cell_1和data_cell_2分割功能,然后用title_1和title_2表示称呼,再使用result_1和result_2将每条曲线x和y数据写成一个类似的二维数组(每列数据首行是"称呼"),最后保存的时候记得保存,只需将每条曲线的数据保存到统一文件下就行。
  4. 'C1:D5’的意思是表格的C列第一格,D列的第五格,这是因为我的第二条曲线是散点图,只有四个点,加上称呼,所以长度是两列五行。
%%将matlab的fig文件提取到csv或者excel中,且保留行列格式
%%双曲线单坐标情况open('图片1.fig')
handle = findobj(gca,'Type','line');%获取曲线的handle,如果图中有多条曲线,handle为一个数组
xdata1 = get(handle(1),'XData');%handle是1*2数组,handle(1)是第一个位置,存储一个矩阵
ydata1 = get(handle(1),'YData');
xdata2 = get(handle(2),'XData');%handle是1*2数组,handle(2)是第二个位置,存储一个矩阵
ydata2 = get(handle(2),'YData');
data1 = [xdata1',ydata1'];  % 将数据组集到data1
data2 = [xdata2',ydata2'];  % 将数据组集到data2
[m, n] = size(data1);
data_cell_1 = mat2cell(data1, ones(m,1), ones(n,1));  % 将data1切割成m*n的cell矩阵
[m, n] = size(data2);
data_cell_2 = mat2cell(data2, ones(m,1), ones(n,1));  % 将data2切割成m*n的cell矩阵
title_1 = {'x1列数据的称呼','y1列数据的称呼'};     % 添加变量名称
title_2 = {'x2列数据的称呼','y2列数据的称呼'};     % 添加变量名称
result_1 = [title_1; data_cell_1];    % 将变量名称和数值组集到result
result_2 = [title_2; data_cell_2];    % 将变量名称和;数值组集到results = xlswrite('图片1.csv', result_1); %将 result_1写到表格前两列
s = xlswrite('图片1.csv', result_2,'C1:D5');%将 result_2写到表格后两列

3.小结

上述如有不当之处,请大家提出指正,欢迎交流。
如需转载,请标明出处,谢谢各位!

从Matlab的Fig图片中提取数据,并保存成csv文件相关推荐

  1. python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据

    文章目录: 1 数据说明 2 把数据集文件信息使用python pandas保存成csv文件 3 使用python pandas 读取csv的每行.每列数据 1 数据说明 1.在test_data目录 ...

  2. 和讯网债券数据Python爬取保存成CSV文件之一

    本文讲述国债数据使用python爬取的方式,并将得到的数据保存成CSV文件以日期命名,方便后期处理. 具体代码如下所示: import requests from bs4 import Beautif ...

  3. Unity3d 提取mesh并保存成asset文件

    Unity3d 提取mesh并保存成asset文件 应用背景 下载链接 使用步骤 贴出脚本 应用背景 有些FBX文件过大,但是只用其中的一个mesh时,我们可以考虑把这个mesh单独提取出来保存问as ...

  4. 从json提取数据,保存成txt格式

    前段时间有一个需求做文本语义匹配,但是公司的标注数据不够无监督学习效果不够好,只能使用开源的数据集.开源的数据集清洗成json格式,我们从json提取数据保存成txt格式方便后续的使用.JSON数据格 ...

  5. 爬取去哪儿网旅游数据并且保存为csv文件

    参考用Python分析元旦旅游热门城市,告诉你哪些景点性价比更高''一文,我们可以到去哪儿网站上爬取某个城市,比如厦门的旅游数据,并且在此基础上进行数据分析.下面简单总结一下爬取的过程. 一.获取js ...

  6. Qt如何将数据保存成CSV文件

    一.csv文件 csv文件是逗号分隔值(Comma-Separated Values,CSV)文件的缩写,其文件以纯文本形式存储表格数据(数字和文本),各个字段用逗号进行分割,采用回车进行换行.由于采 ...

  7. 几行Python代码生成饭店营业额模拟数据并保存为CSV文件

    CSV文件是一种通用的.简单的文件格式,以纯文本形式存储表格数据(数字和文本),在多个领域都有广泛应用,经常用来在不同程序之间交换数据. 下面的代码使用Python标准库datetime和random ...

  8. 【python处理过程中的数据另保存为CSV文件】

    ##保存csv文件1 dataframe = pd.DataFrame({'ID':test_index,'PRICE': y_pred}) # dataframe = pd.DataFrame({' ...

  9. (超详细)读取mnist数据集并保存成图片

    mnist数据集介绍.读取.保存成图片 1.mnist数据集介绍: MNIST数据集是一个手写体数据集,简单说就是一堆这样东西  MNIST的官网地址是 MNIST; 通过阅读官网我们可以知道,这个数 ...

最新文章

  1. 数据分析之Pandas缺失数据处理
  2. ABAP:判断是否汉字
  3. 利用Cydia Substrate进行Android HOOK (1)
  4. CSS基础(part17)--vertical-align垂直对齐
  5. mysql decimal(6_MySQL(六) decimal数据默认处理
  6. 用户反馈KB3189866累积更新出现卡在95%进度情况
  7. 卷积神经网络(CNN)中卷积的实现
  8. Android NDK JNI C++ 3
  9. 重装ubuntu系统后VS Code远程连接失败
  10. unity 1 学习 物体旋转和通过脚本调用单击事件函数,find函数找物体的方法
  11. Java Web ——基于Jsp+Servlet的学生上课签到打卡系统/上课考勤管理系统
  12. 快速提取年龄,身份证提取年龄的公式
  13. 如何让虚拟机中乌版图系统变大?
  14. 奇数阶魔方阵算法分析
  15. 【CTR预估】The Wide and Deep Learning Model(译文+Tensorlfow源码解析)
  16. 集线器、中继器、网桥、交换机、网关、路由器——今天必把你们区分开
  17. 单相半波可控整流电路仿真设计(任务书+lunwen+MATLAB仿真源文件)
  18. 穷人冲冲冲:7个有钱人买,穷人不买的东西
  19. [附源码]Python计算机毕业设计Django的高校资源共享平台
  20. 冯唐和蔡康永给新养医美做广告

热门文章

  1. python爬虫公众号所有信息,并批量下载公众号视频
  2. 不使用数学函数开方运算的情况下,求解开方运算
  3. Android实现流光效果、光影移动效果
  4. 新手运营适合哪个跨境电商平台
  5. 磁盘剩余容量不足解决办法
  6. FL Studio 21水果编曲DAW宿主软件新版本
  7. FL STUDIO水果编曲20.8mac/ Windows应用
  8. 论文阅读-基于RA的NAS
  9. 数据透视表——pivot_table学习(特征工程)
  10. iphone开发收藏