从Matlab的Fig图片中提取数据,并保存成csv文件
从Matlab的Fig图片中提取数据,并保存成csv文件
- 1.Fig图像是由单条曲线绘制
- 2.Fig图像是由双条曲线绘制
- 3.小结
本人亲自实测有效,但能力有限,目前仅用代码测试了 Figure图片单线条和双线条的提取(多线条可模仿双线条代码)。很多帖子的代码不是不全就是仅限于单线条提取的,自己摸索了两天才弄出来。 提取数据目的:通过从Matlab中的Figure图片提取数据,再利用python进行重新绘制,使得科研论文图片效果更佳。
1.Fig图像是由单条曲线绘制
前提:要从Matlab中的Fig图片提取数据,首先会用Matlab中画出Fig图片,然后保存成fig文件,记得文件格式后缀是".fig"。
正文:
- Matlab中的Fig图像曲线在工作空间是以矩阵形式保存的,在工作区可以查看,这里不细讲。
- 将曲线数据提取,也就是将x和y轴的数据分成两列保存到表格中,可以保存为excel和csv格式,这里保存为csv是本人工作需要。
- 单条曲线的提取还是比较简单,本人将代码详细贴出来,请参考:
%%将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图像是由双条曲线绘制
正文:请配合本人代码食用效果更佳
- 在上面有说到,Fig数据在Matlab中以数组形式存放,一条曲线的数据存放在一个方格,对于双线条而言,在Matlab的工作区里有两格存放,也就是有两个m*n的矩阵。
- handle就是数据的句柄,也就是指向,handle(1)指向第一个方格的矩阵,handle(2)指向第二个方格的矩阵。
- 关于双曲线的表格首行称呼问题,这也是其他帖子没有说到的问题,两条曲线也就代表着表格里有四列数据,如何使每条曲线的x和y按列导出到csv或excel呢?关键是data_cell_1和data_cell_2分割功能,然后用title_1和title_2表示称呼,再使用result_1和result_2将每条曲线x和y数据写成一个类似的二维数组(每列数据首行是"称呼"),最后保存的时候记得保存,只需将每条曲线的数据保存到统一文件下就行。
- '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文件相关推荐
- python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据
文章目录: 1 数据说明 2 把数据集文件信息使用python pandas保存成csv文件 3 使用python pandas 读取csv的每行.每列数据 1 数据说明 1.在test_data目录 ...
- 和讯网债券数据Python爬取保存成CSV文件之一
本文讲述国债数据使用python爬取的方式,并将得到的数据保存成CSV文件以日期命名,方便后期处理. 具体代码如下所示: import requests from bs4 import Beautif ...
- Unity3d 提取mesh并保存成asset文件
Unity3d 提取mesh并保存成asset文件 应用背景 下载链接 使用步骤 贴出脚本 应用背景 有些FBX文件过大,但是只用其中的一个mesh时,我们可以考虑把这个mesh单独提取出来保存问as ...
- 从json提取数据,保存成txt格式
前段时间有一个需求做文本语义匹配,但是公司的标注数据不够无监督学习效果不够好,只能使用开源的数据集.开源的数据集清洗成json格式,我们从json提取数据保存成txt格式方便后续的使用.JSON数据格 ...
- 爬取去哪儿网旅游数据并且保存为csv文件
参考用Python分析元旦旅游热门城市,告诉你哪些景点性价比更高''一文,我们可以到去哪儿网站上爬取某个城市,比如厦门的旅游数据,并且在此基础上进行数据分析.下面简单总结一下爬取的过程. 一.获取js ...
- Qt如何将数据保存成CSV文件
一.csv文件 csv文件是逗号分隔值(Comma-Separated Values,CSV)文件的缩写,其文件以纯文本形式存储表格数据(数字和文本),各个字段用逗号进行分割,采用回车进行换行.由于采 ...
- 几行Python代码生成饭店营业额模拟数据并保存为CSV文件
CSV文件是一种通用的.简单的文件格式,以纯文本形式存储表格数据(数字和文本),在多个领域都有广泛应用,经常用来在不同程序之间交换数据. 下面的代码使用Python标准库datetime和random ...
- 【python处理过程中的数据另保存为CSV文件】
##保存csv文件1 dataframe = pd.DataFrame({'ID':test_index,'PRICE': y_pred}) # dataframe = pd.DataFrame({' ...
- (超详细)读取mnist数据集并保存成图片
mnist数据集介绍.读取.保存成图片 1.mnist数据集介绍: MNIST数据集是一个手写体数据集,简单说就是一堆这样东西 MNIST的官网地址是 MNIST; 通过阅读官网我们可以知道,这个数 ...
最新文章
- 数据分析之Pandas缺失数据处理
- ABAP:判断是否汉字
- 利用Cydia Substrate进行Android HOOK (1)
- CSS基础(part17)--vertical-align垂直对齐
- mysql decimal(6_MySQL(六) decimal数据默认处理
- 用户反馈KB3189866累积更新出现卡在95%进度情况
- 卷积神经网络(CNN)中卷积的实现
- Android NDK JNI C++ 3
- 重装ubuntu系统后VS Code远程连接失败
- unity 1 学习 物体旋转和通过脚本调用单击事件函数,find函数找物体的方法
- Java Web ——基于Jsp+Servlet的学生上课签到打卡系统/上课考勤管理系统
- 快速提取年龄,身份证提取年龄的公式
- 如何让虚拟机中乌版图系统变大?
- 奇数阶魔方阵算法分析
- 【CTR预估】The Wide and Deep Learning Model(译文+Tensorlfow源码解析)
- 集线器、中继器、网桥、交换机、网关、路由器——今天必把你们区分开
- 单相半波可控整流电路仿真设计(任务书+lunwen+MATLAB仿真源文件)
- 穷人冲冲冲:7个有钱人买,穷人不买的东西
- [附源码]Python计算机毕业设计Django的高校资源共享平台
- 冯唐和蔡康永给新养医美做广告