matlab读写数据总结
参考
- 官网:matlab文档
- matlab文档:xlsread
- matlab文档:textread
- matlab文档:dlmwrite
- csdn博客:Matlab使用xlsread读入xlsx文件错误处理
1. 读excel
(1) xlsread
- 扩展名一定要是
.xls
,如果是.xlsx
会报错。 - 如果直接把扩展名为
.xlsx
改成.xls
有可能也会出问题,所以还是另存为一份吧。 - 如果是用
xlsread(filename)
这种普通读入的话,matlab会读直接读数字。如果xls里面某列的数据类型是常规的话,xlsread(filename)
会报错,所以要把数据类型改一下,改成别的,总之不是常规。 - 可以参考Matlab使用xlsread读入xlsx文件错误处理,打开excel修改
com加载项
。 - 实在不行的话,在excel里另存为
csv
,然后在matlab里用csvread(filename)
。
(2) textread
- 扩展名一定要是
.txt
。 - 如果是用
textread(filename)
是普通读入,直接读取数字,跳过字母、空格那些东西。如果数据是按tab或者空格隔开的话,也可以直接用textread(filename)
读入,不用写format
。
(3) 强制类型转换
- 一般直接读进去的话,生成的矩阵的类型是
double
。但是如果全部数据都要更换成整数类型的话,可以用强制类型转换int8
、int16
、int32
之类的。
A = xlsread(filename);
B = int32(A);
(4) 截取矩阵
- 整个读进来之后可能有些行和列是不想要的,那可以直接截取出来。
% 二维
A = textread(filename);
% 截取m行到n行,i列到j列的内容
B = A(m:n,i:j);
- 如果是开头的几行不想要的话,可以在
textread(filename,param,value)
里面设param
为headerline
,value
就是行数。
2. 写数据
(1) dlmwrite
函数
dlmwrite('filename',A,'delimiter','\t','precision','%.f');
filename
就是写入的那个文件,文件路径一定要存在,如果要matlab自动创建文件夹的话要加条别的命令。A
就是要写入的矩阵,一般情况下不用特地表明换行,因为写入的时候就是按行写入的,matlab会自动换行。delimiter
和\t
就是格式,每个元素之间用什么格式分开,如果是空格的话,可以用' '
。其他那些要用转义字符
。precision
和%.f
是精度,%.f
就和C语言里面的用法是一样的,就是保留几位,当然还有别的精度表示方法,dlmwrite里面有详细介绍。
(2) 压缩矩阵
- 如果是比较大的对称矩阵,直接压缩的话会很占空间,可以考虑用压缩矩阵。只存上三角或者上三角,把二维矩阵变成一维行向量来存,会小一点。
- 如果写完之后txt太大不好打开,可以用
gitbash
来打开看。
$ vi filename
- 显示出来之后,用键盘上的
上下左右
来调整位置。 - 发现没问题之后,输入
:q
,就是直接退出
。 - 要修改的话,先输入
i
,进入到插入(insert)模式,然后移动到要改的位置进行修改。修改完后保存退出
,输入:wq
。