MATLAB之将mat中的数据导出到Excel文件

原始文档: https://www.yuque.com/lart/tools/cnedve

文章目录

MATLAB之将mat中的数据导出到Excel文件

动机

环境

方法

代码

参考链接

动机

部分项目的测试代码使用的还是matlab, 但是由于excel处理数据的便利, 以及对于手工输入数据的厌恶, 我研究了下如何将计算得到的保存在mat文件中的数据导出到xls或者xlsx文件里.

环境

Ubuntu 18.04, MATLAB R2018a.

方法

首先不得不说, matlab的帮助文档真的是很详细, 很全面, 尤其是最近的几个版本, 中文文档也愈发的齐全起来, 没事多查文档还是很有用的.

首先分析下我们的数据, 从我实际使用来看, 其实主要有字符串, 数字这两种类型的数据., 为了方便整合, 以及一次性写入, 我们可以使用matlab的元胞数组来构造整体表格数据.

元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。元胞数组通常包含不同长度的字符向量列表,或字符串和数字的混合,或不同大小的数值数组。

通过将索引括在圆括号 () 中可以引用元胞集。使用花括号 {} 进行索引来访问元胞的内容。

通过逐行构造数据, 我们最终可以得到一个包含了所有想要的数据的元胞数组, 这里有模型名字, 有模型结果, 也有不同指标的名字. 我们需要做的就是将这个数组写入xls或者xlsx文件中.

我们可以到文档中搜索与 excel 相关的内容.

这里推荐我们使用 writetable 函数.

为了了解该函数的用法, 我们直接看他的文档 (这里贴的是R2019a的文档, 因为可以直接在浏览器里收到, 基本内容没变)可以了解到, 他是把一个表数据写入到文件中.

writetable 根据指定扩展名确定文件格式。扩展名必须是下列格式之一:

.txt、.dat 或 .csv(适用于带分隔符的文本文件)

.xls、.xlsm 或 .xlsx(适用于 Excel 电子表格文件)

.xlsb(适用于安装了 Windows Excel 的系统上支持的 Excel 电子表格文件)

而我们现在的数据是元胞数组, 并不能直接写入, 会提示你如下错误:

Undefined function 'write' for input arguments of type 'cell'.

Error in writetable (line 124)

write(a,filename,varargin{:})

所以我们需要将元胞数组转化为表数据. 在页面https://ww2.mathworks.cn/help/matlab/tables.html中可以看到, 这里展示了关于表数据的各种操作, 其中就有使用元胞数组创建表数据, 也就是使用函数 cell2table .

可以了解到, 表数据是以列为基准的, 所以对于每一列, 会指定对应的名字. 如果不指定, 会按照默认的格式创建. 我们因为数据的第一行实际上就可以认为是列数据的名字, 所以可以参考给出的示例里的 将列标题转换为变量名称 这一小节的代码.

将元胞数组转换为表,然后包括元胞数组的第一行作为表的变量名称。

创建一个元胞数组,其中第一行包含用于标识列标题的字符向量。

示例代码如下:

Patients = {'Gender' 'Age' 'Height' 'Weight' 'Smoker';...

'M' 38 71 176 true;...

'M' 43 69 163 false;...

'M' 38 64 131 false;...

'F' 38 64 131 false;...

'F' 40 67 133 false;...

'F' 49 64 119 false}

C = Patients(2:end,:);

T = cell2table(C)

T.Properties.VariableNames = Patients(1,:)

即先按照正常的方式转换数据, 这里把第一行排除掉了, 最后通过修改表的属性来讲第一行替换为原始的数据.由此, 我们可以得到真正可以写入表格的数据了.

代码

data_name = 'DUT-OMRON';

output_folder = './Results/';

mat_path = [output_folder, data_name, '/'];

fprintf("Dataset Name: %s\n", data_name);

fprintf("Output Folder Name: %s\n", output_folder);

fprintf("Mat File Path: %s\n", mat_path);

if(isfolder(mat_path) && ~isempty(mat_path))

mat_list = dir(mat_path);

mat_list = mat_list(3:end, 1);

else

fprintf("%s should be a folder that has some files\n", mat_path);

end

num_model = length(mat_list);

output_data = cell(num_model + 1, 7);

output_data(1, :) = {'Model', 'MaxF', 'MeanF', 'WFm', 'Emeasure', 'Smeasure', 'MAE'};

for i = 1 : num_model

mat_data = load([mat_path, mat_list(i).name]);

model_name = strsplit(mat_list(i).name, '.');

output_data(i + 1, :) = { ...

model_name{1}, ...

mat_data.MaxFmeasure, ...

mat_data.mean_Fmeasure(3), ...

mat_data.wFmeasure, ...

mat_data.Emeasure, ...

mat_data.S_measure, ...

mat_data.MAE

};

end

output_data_model = output_data(2:end, :);

output_table = cell2table(output_data_model);

output_table.Properties.VariableNames = output_data(1, :);

filename = [output_folder, 'record.xls'];

% 这里针对不同的sheet使用对应的data_name作为名字

writetable(output_table, filename, 'Sheet', data_name, 'Range', 'A1')

参考链接

https://ww2.mathworks.cn/help/index.html

文档版本切换: https://ww2.mathworks.cn/help/doc-archives.html

matlab将求解值导出数据,MATLAB之将mat中的数据导出到Excel文件相关推荐

  1. 【GA TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1337期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab遗传算法求解旅行商问题[含Matlab源码 1337期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  2. 【GA TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1909期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[GA TSP]基于matlab遗传算法求解旅行商问题[含Matlab源码 1909期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

  3. 使用Properties集合存储数据,遍历取出Properties集合中的数据

    package com.learn.demo07.Prop;import java.io.FileOutputStream; import java.io.FileReader; import jav ...

  4. 取出json中的数据php,怎么从Json中取出数据放到一个新组中

    如何从Json中取出数据放到一个新组中 JSON数据如下: { "CommunityModel": [ { " UUID ": "xxxxxx-xxx ...

  5. 【OpenCV3】cv::Mat中的数据按行列写入txt文件中

    在使用opencv进行图像处理的过程中,经常会涉及到将文件中的数据读入到cv::Mat中,或者将cv::Mat中的数据写入到txt文件中. 下面就介绍一种我常用的将cv::Mat中的数据写入到txt文 ...

  6. ajax异步获取数据后动态向表格中添加数据的页面

    因为某些原因,项目中突然需要做自己做个ajax异步获取数据后动态向表格中添加数据的页面,网上找了半天都没有 看到现成的,决定自己写个例子 1.HTML页面 [html] view plaincopyp ...

  7. ajax异步获取数据后动态向表格中添加数据(行)

    因为某些原因,项目中突然需要做自己做个ajax异步获取数据后动态向表格中添加数据的页面,网上找了半天都没有 看到现成的,决定自己写个例子 1.HTML页面 [html] view plaincopyp ...

  8. 坎蒂雷赋权法 matlab,多重网格法求解雷诺方程的MATLAB编程

    这是MATLAB有限差分法求解雷诺方程,可以参考下.希望对你有用 function [Fx,Fy]=FDM_circular(X,Y,X_dot,Y_dot) Fx=0; Fy=0; epsilon= ...

  9. matlab算幅值裕量,matlab计算相角裕度

    问题: 如图所示的系统, 画出当K=45时 的伯德图, 并确定增益裕度和相位裕度. 计算使系统稳定的最大K值, 并用劳斯阵 列验证其结果. R + ? - K 1 (...... (0 1) 从 而可 ...

最新文章

  1. 3D目标检测深度学习方法中voxel-represetnation内容综述(三)
  2. Android源代码下载与编译 - 2019
  3. python opencv 内存泄露_解决python中显示图片的plt.imshow plt.show()内存泄漏问题
  4. Prism安装、MVVM基础概念及一个简单的样例
  5. scala逻辑运算符的一览图和代码案例
  6. Python学习笔记(二) 第一个Python程序 、 Python基础
  7. pdf编辑软件adobe acrobat_分享一款PDF编辑和阅读软件Acrobat
  8. 无法打开登录所请求的数据库 sa。登录失败。 用户 sa 登录失败。
  9. 数据结构笔记(十七)--矩阵的压缩存储
  10. 自定义AlertDialog
  11. 拓端tecdat|R语言复杂网络分析:聚类(社区检测)和可视化
  12. 思科 mds 虚拟服务器,Cisco MDS系列交换机VSAN功能简介
  13. C语言自学笔记(16)
  14. 使用sqlmap进行SQL注入检测
  15. 关于Kindle的生词提示功能不显示
  16. php公众号模板消息重复3,如何利用微信公众号模板消息实现每天多次群发
  17. Echars 旭日图 鼠标浮动 显示value值
  18. HBuilder X右端预览点击无反应(解决方法)
  19. StringUtil 简单用法
  20. 某银行开发一个信用卡管理系统CCMS

热门文章

  1. html不同显示器布局全乱了,不同显示器分辨率,调用不同的css文件方法[经验总结]...
  2. 通过patch-package创建补丁修改node_modules依赖下的源码
  3. chatgpt系列文章-23.2.15(主要还在发现chatgpt的不足,偏探索,像报告)
  4. python drf_drf,_Python教程 | 登博教程
  5. 关于HTTP请求返回415错误UnsupportedMediaType定位问题
  6. linux搭建SVN教程
  7. 在html上绑定touch,实现html元素跟随touchmove事件的event.touches[0].clientX移动
  8. 【树】哈夫曼树及其构造
  9. 拼多多员工淘宝账号遭阿里封禁,凸显出后者感受到巨大威胁
  10. C++画一条指定度数的线段