首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >matlab导出csv文件多种方法实现

matlab导出csv文件多种方法实现

作者头像
演化计算与人工智能
发布于 2020-08-14 02:39:10
发布于 2020-08-14 02:39:10
8.3K00
代码可运行
举报
运行总次数:0
代码可运行

matlab导出csv文件多种方法实现

觉得有用的话,欢迎一起讨论相互学习~

  • 作为一名python 粉丝,csv是我最喜欢的文件格式。那么 如何将matlab中的变量保存为csv?

示例

  • 有一个51*2的矩阵,我们将其列表头分别记为Obj1和Obj2,而行表头为1-51。将这个矩阵输出到csv中。
  • 数据和代码下载地址[1]

csvwrite方法

  • 挺好用的
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% Write a comma-separated value file.
csvwrite(FILENAME,M);% writes matrix M into FILENAME as comma-separated values.
csvwrite(FILENAME,M,R,C);%writes matrix M starting at offset row R, and column C in the file.

R,C分别表示写入的行数R和列数C,并且左上角被认为是(0,0)csvwrite('1.csv',data)

  • 如果1.csv不存在会建立一个这样的文件

csvwrite('1.csv',data,1,1)

dlmwrite方法

  • 好用,并且能够在不覆盖原有数据的方式,在行后进行添加
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dlmwrite('test.csv',data(1,:),'delimiter',',');
dlmwrite('test.csv',data(2,:),'delimiter',',','-append');
dlmwrite('test.csv',data(3,:),'delimiter',',','-append','roffset',2,'coffset',2);
  • 分别表示
    • 将第一行加到test.csv中,并且以逗号为分隔符
    • 将第二行加到test.csv中,并且从行后添加
    • 将第三行加到test.csv中,并且以相对于已有数据偏移的方式

writetable方法

  • writetable方法给予了很大的发展空间,按列进行保存。好用!
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% 可以设置行名称
% 首先创建一个1-n的列向量,具体为行向量的转置
BD1=1:51;
BD2=BD1.';

% 列名称
title={'NO','obj1','obj2'};

%生成表格,按列生成
% VariableNames 参数用于设置列头
result_table=table(BD2,data(:,1),data(:,2),'VariableNames',title)

% 保存数据
writetable(result_table, '2.csv');

fprintf方法

  • fprintf函数不仅可以向csv文件中输入数据,可以向各种文件中输入数据,是最万能的方法!也是灵活程度最高的方法。

踩雷

fprintf 不支持元组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% 注意fprintf不支持元胞数组
title={'NO','obj1','obj2'};%这样写会报错
fprintf(fid,'%s,%s,%s\n',title(1),title(2),title(3));
% 参数3有误
  • 为此将其元组转换为矩阵试试
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% 注意fprintf不支持元胞数组
title={'NO','obj1','obj2'};%这样写会报错
% fprintf(fid,'%s,%s,%s\n',title(1),title(2),title(3));
fprintf(fid,'%s,%s,%s\n',cell2mat(title(1)),cell2mat(title(2)),cell2mat(title(3)));
  • 将元组转换为矩阵真好
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% Create a csv file
fid=fopen('test2.csv','a');
BD1=1:size(data,1);% size(x,1)表示行数,size(x,2)表示列数
if fid<0
 errordlg('File creation failed','Error');
end

% 注意fprintf不支持元胞数组
title={'NO','obj1','obj2'};
% fprintf(fid,'%s,%s,%s\n',title(1),title(2),title(3)); % 这样写会保错
fprintf(fid,'%s,%s,%s\n',cell2mat(title(1)),cell2mat(title(2)),cell2mat(title(3)));
% 一共有51for i=1:size(data,1)
 fprintf(fid,'%d,%d,%d\n',BD1(i),data(i,1),data(i,2));
end
fclose(fid);

fprintf字符串矩阵

  • 对于注意fprintf不支持元胞数组,还有一种思路,就是使用字符串矩阵表示表头
  • 刚开始我是下面这样写的
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
title=['NO','obj1','obj2'];
fprintf(fid,'%s,%s,%s\n',title(1),title(2),title(3));
  • 可以看到这种方式把title当做整个字符串,而title(1),title(2),title(3)其实是前三个字母

因此以下才是正确的处理方式

  • 更改fprint中的索引title=['NO','obj1','obj2']; fprintf(fid,'%s,%s,%s\n',title(1:2),title(3:6),title(7:10));
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% Create a csv file
fid=fopen('test2.csv','a');
BD1=1:size(data,1);% size(x,1)表示行数,size(x,2)表示列数
if fid<0
 errordlg('File creation failed','Error');
end

% 注意fprintf不支持元胞数组
title=['NO','obj1','obj2'];
fprintf(fid,'%s,%s,%s\n',title(1:2),title(3:6),title(7:10));
% 一共有51for i=1:size(data,1)
 fprintf(fid,'%d,%d,%d\n',BD1(i),data(i,1),data(i,2));
end
fclose(fid);

参考资料

[1]

数据和代码下载地址: https://github.com/Asurada2015/learn_and_test_matlab/tree/master/res/save_as_csv

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DrawSky 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Matlab保存数据到csv文件的方法分享
一个同学咨询了一个问题,如何把matlab变量区的数据保存到csv文件里面,故此分享一下Matlab保存数据到csv文件的方法。csv其实也是一个txt,只不过csv是带特定格式的txt而已,举个例子,编辑一个txt文件,内容如下
用户9925864
2022/07/27
6.6K0
Matlab保存数据到csv文件的方法分享
matlab批量处理excel(CSV)文件数据
今天是2019-1-29,参加完2019年美国大学生数学建模竞赛,小伙伴都回家了,就我一个人在寝室,太无聊了,就把在比赛中遇到的excel批处理,写一下思路(ps:其实我在比赛中 利用的是SQLServer数据库和matlab相结合的数据处理方法,但是一般情况下遇到的都是matlab对excel数据批处理,所以降低要求写了matlab对excel数据批处理,此思路都是小编凭感觉自己摸索出来的,如有错误欢迎指出)。
全栈程序员站长
2022/09/14
1.2K0
matlab批量处理excel(CSV)文件数据
在线matlab代码学习神器Octave Online
Octave与MATLAB完全兼容,免安装使用方便。注册和非注册功能会有不同,如下:
zhangrelay
2019/01/23
6.9K0
【MATLAB 从零到进阶】day5 数据的导入与导出
importdata 从文本文件或特殊格式二进制文件(如图片,avi 视频等)读取数据
Ai学习的老章
2019/04/10
1.5K0
【MATLAB 从零到进阶】day5  数据的导入与导出
Matlab实现数据导出
MATLAB 允许你使用数据在另一个应用程序读取 ASCII 文件,MATLAB提供了多种数据输出选项。
用户9925864
2022/07/27
1.1K0
Matlab实现数据导出
matlab
对于一些nc数据或者遥感影像处理时,虽然一些第三方软件可以出图,但我们往往需要借助python或者matlab软件进行数据处理,但最后保存下来数据如何导入arcgis进行分析呢?
用户6841540
2024/08/05
6390
matlab复杂数据类型(二)
感谢大家关注matlab爱好者,今天大家介绍matlab复杂数据类型第二部分,有关表的使用以不同数据类型的识别与转换。最后补充有关函数句柄转字符和字符转函数句柄的相关内容。在公众号聊天栏输入“014”、 "表" 或“转换” 即可快速获取本篇内容。欢迎大家分享本文。
巴山学长
2019/07/15
6.5K0
读取SEG2格式地震勘探数据的MATLAB实现
参考 读取 地震勘探数据seg2 youwenfan.com/contenttea/66097.html
用户4006703
2025/07/22
870
MATLAB中的数据预处理-从清洗到转换的全流程
数据预处理是数据分析和机器学习中至关重要的一步,确保数据质量是模型性能的关键。本文将详细介绍MATLAB中数据预处理的全流程,包括数据清洗、数据转换和数据标准化等步骤,并提供相关的代码示例以帮助理解。
一键难忘
2025/01/18
5740
Matlab中读取txt文件的几种方法[通俗易懂]
2、importdata——只读取数据,自动省略数据格式前后的字符,超大文件不适合;
全栈程序员站长
2022/10/03
21.2K0
Matlab文本操作
fid=fopen(’filename’,’permission’)或者fid=fopen(’filename’)
根究FPGA
2020/06/29
9090
matlab—特殊变量类型与档案存取
这里举个例子,有一个学生structure,包含姓名、邮箱、学号、成绩,应该如何创建这个structure
mathor
2018/07/24
1K0
matlab—特殊变量类型与档案存取
matlab读取txt文件数据_matlab怎么输入数据
大家好,又见面了,我是你们的朋友全栈君。 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下:  ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。  ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。  ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。  ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。  ‘a’:在打开的文件末端添加数据。文件不存在则创建。  ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 >> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen(‘d:\test.bin’,’wb’) %以二进制数据写入方式打开文件 fid = 3 %其值大于0,表示打开成功 >> fwrite(fid,a,’double’) ans = 9 %表示写入了9个数据 >> fclose(fid) ans = 0 %表示关闭成功 2)读二进制文件 fread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为: [A,COUNT]=fread(fid,size,precision) 说明:其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。precision用于控制所写数据的精度,其形式与fwrite函数相同。 3、文本文件的读写操作 1)读文本文件 fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为: [A,COUNT]=fscanf(fid,format,size) 说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。size为可选项,决定矩阵A中数据的排列形式,它可以取下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。 2)写文本文件 fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为: fprintf(fid,format,A) 说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。 例6.9 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。 >> a=’string’; >> fid=fopen(‘d:\char1.txt’,’w’); >> fprintf(fid,’%s’,a); >> fclose(fid); >> fid1=fopen(‘d:\char1.txt’,’rt’); >> fid1=fopen(‘d:\c
全栈程序员站长
2022/10/04
1.8K0
Matlab系列之文件操作
首先介绍下文件操作的相关概念吧,文件一般指存储在外部介质上的数据的集合,即一般数据是以文件的形式存储在外部介质上,这个介质可以是我们的硬盘也可以是其他的具有存储能力的物体。
狂人V
2020/07/20
2.5K0
关于MATLAB读取txt文件的方法[通俗易懂]
一、如何读取一个文档下,多个txt文件? 一般读取的文件,命名都具有一定的规律,除去相同部分,剩下的变化按照时间、序号、某一特定的标志符等进行排列。 下面我们举个例子来操作。
全栈程序员站长
2022/10/04
2K0
通过案例讲解MATLAB中的数据类型
在matlab中,数据的基本单位是数组(array),数组就是组织成行和列的数据值的组合,单个的数据值是通过数组名和圆括号中的下标来进行访问的,下标用来确定某个值的行和列。在matlab中,标量也被看成数组来处理,即一行一列的数组。其中数组又可以分为向量(vector)和矩阵(matrix),向量是指只有一维的数组,矩阵是指二维及二维以上的数组。
mindtechnist
2024/08/08
7910
通过案例讲解MATLAB中的数据类型
Kaggle入门泰坦尼克号乘客生还预测
Kaggle是由联合创始人、首席执行官安东尼·高德布卢姆(Anthony Goldbloom)2010年在墨尔本创立的,主要为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台。该平台已经吸引了80万名数据科学家的关注,这些用户资源或许正是吸引谷歌的主要因素。
里克贝斯
2021/05/21
5680
Kaggle入门泰坦尼克号乘客生还预测
MATLAB中的高维数据操作与异构数据结构管理
在MATLAB中,数据处理是科学计算和工程模拟的核心组成部分。MATLAB提供了强大的数组和数据结构处理能力,尤其适用于高维数据的存储、操作与分析。本篇文章将深入探讨MATLAB中的多维数组和复杂数据结构的处理方法,并通过代码实例展示如何高效地进行相关操作。
一键难忘
2025/02/08
9490
Matlab读取txt数据的实用方法[通俗易懂]
有个朋友需要我帮忙写个matlab脚本读取100个txt文档的实验数据,这些文档的结构相同,分为四列,从第一列到第四列依次是时间、位置、速度、加速度。读取完数据之后需要对数据进行处理,具体的处理方式是:提取以0.002为采样周期的数据,分类存储起来。 文件内容是这样的:
全栈程序员站长
2022/10/04
2.1K0
Matlab读取txt数据的实用方法[通俗易懂]
MATLAB 对文件输入输出
在科研中经常采用MATLAB对文件(文本数据)进行操作,因此首先遇到的问题是如何采用MATLAB对文件进行读取,然后以一种特定的格式输出。
联远智维
2022/01/20
7350
相关推荐
Matlab保存数据到csv文件的方法分享
更多 >
交个朋友
加入北京开发者交友群
结识首都开发者 拓展技术人脉
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入前端工作实战群
前端工程化实践 组件库开发经验分享
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验