Matlab数据导入导出方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
功能 csvread 读入以逗号分隔的数据 csvwrite 将数据写入文件,数据间以逗号分隔 dlmread 将以 ASCII 码分隔的数值数据读入到矩阵中 dlmwrite 将矩阵数据写入到文件中,以 ASCII 分隔 textread 从文本文件中读入数据,将结果分别保存 textscan 从文本文件中读入数据,将结果保存为单元数组
13.2 文本文件的读写 在上一节中介绍的函数和命令主要用于读写 mat 文件,而在应用中,需要读
写更多格式的文件,如文本文件、word 文件、xml 文件、xls 文件、图像文件和 音视频文件等。本节介绍文本文件(txt)的读写。其他文件的读写,用户可以参 考 MATLAB 帮助文档。
MATLAB 中实现文本文件读写的函数如表 13-1 所示。 表 13-1 MATLAB 中文本文件读写函数 函数
下面详细介绍这些函数。
1. csvread、csvwrite
csvread 函数的调用格式如下:
● M = csvread('filename'),将文件 filename 中的数据读入,并且保存为 M,
filename 中只能包含数字,并且数字之间以逗号分隔。M 是一个数组,行数与
filename 的行数相同,列数为 filename 列的最大值,对于元素不足的行,以 0
image
csvwrite('D:\matlab.txt',I_matlab);
% write the data into a text
file
sub_MATLAB= csvread('D:\matlab.txt',100,100);% read in part of the
data
sub_MATLAB= uint8(sub_matlab);
该命令执行后,可以在工作区浏览器中看见这些变量,如图 13-1 所示。
图 13-1 导入变量后的工作区视图 接下来用户可以访问这些变量。 >> num_of_cluster num_of_cluster = 3 MATLAB 中,另一个导入数据的常用函数为 importdata,该函数的用法如下:
● importdata('filename'),将 filename 中的数据导入到工作区中; ● A = importdata('filename'),将 filename 中的数据导入到工作区中,并保 存为变量 A; ● importdata('filename','delimiter'),将 filename 中的数据导入到工作区 中,以 delimiter 指定的符号作为分隔符; 例 13-2 从文件中导入数据。
其中参数 delimiter 用于指定文件中的分隔符,其他参数的意义与 csvread
函数中参数的意义相同,这里不再赘述。dlmread 函数与 csvread 函数的差别在
于,dlmread 函数在读入数据时可以指定分隔符,不指定时默认分隔符为逗号。
dlmwrite 函数用于向文档中写入数据,其功能强于 csvwrite 函数。dlmwrite
工作区中,如果需要访问其中的内容,需要以不同的格式进行。
例 13-3 open 与 load 的比较。 >> clear >> A = magic(3); >> B = rand(3); >> save Saving to: matlab.mat >> clear >> load('matlab.mat') >> A A= 816 357 492 >> B B= 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 >> clear >> open('matlab.mat') ans = A: [3x3 double] B: [3x3 double] >> struc1=ans; >> struc1.A ans = 816 357 492 >> struc1.B ans = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214
% convert the data to uint8
figure,imshow(sub_matlab,'InitialMagnification',100);
% show
the new image
在命令窗口中运行该脚本,输出图形如图 13-2 所示。
(a)
(b)
图 13-2 例 13-3 的运行结果
Matlab 数据导入方法
在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文 件。MATLAB 使用多种格式打开和保存数据。本章将要介绍 MATLAB 中文件的读写 和数据的导入导出。
13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。
13.1.1 文件的存储 MATLAB 支持工作区的保存。用户可以将工作区或工作区中的变量以文件的
● load filename -regexp expr1 expr2 ...:通过正则表达式指定需要导入的
变量。
● load -ascii filename:无论输入文件名是否包含有扩展名,将其以 ASCII
格式导入;如果指定的文件不是数字文本,则返回 error。
● load -mat filename:无论输入文件名是否包含有扩展名,将其以 mat 格式
>> imported_data = importdata('matlab.mat') imported_data =
ans: [1.1813 1.0928 1.6534] A: [2x3 double]
I_q: [415x552x3 uint8] num_of_cluster: 3 与 load 函数不同,importdata 将文件中的数据以结构体的方式导入到工作 区中。 13.1.3 文件的打开 MATLAB 中可以使用 open 命令打开各种格式的文件,MATLAB 自动根据文件的 扩展名选择相应的编辑器。 需要注意的是 open('filename.mat')和 load('filename.mat')的不同,前者 将 filename.mat 以结构体的方式打开在工作区中,后者将文件中的变量导入到
补充。
● M = csvread('filename', row, col),读取文件 filename 中的数据,起始
行为 row,起始列为 col,需要注意的是,此时的行列从 0 开始。
● M = csvread('filename', row, col, range),读取文件 filename 中的数
形式保存,以备在需要时再次导入。保存工作区可以通过菜单进行,也可以通过 命令窗口进行。
1. 保存整个工作区 选择 File 菜单中的 Save Workspace As„命令,或者单击工作区浏览器工 具栏中的 Save,可以将工作区中的变量保存为 MAT 文件。 2. 保存工作区中的变量 在工作区浏览器中,右击需要保存的变量名,选择 Save As„,将该变量保 存为 MAT 文件。 3. 利用 save 命令保存 该命令可以保存工作区,或工作区中任何指定文件。该命令的调用格式如下: ● save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为 matlab.mat,MAT 文件可以通过 load 函数再次导入工作区,MAT 函数可以被不同 的机器导入,甚至可以通过其他的程序调用。 ● save('filename'):将工作区中的所有变量保存为文件,文件名由 filename 指定。如果 filename 中包含路径,则将文件保存在相应目录下,否则默认路径 为当前路径。 ● save('filename', 'var1', 'var2', ...):保存指定的变量在 filename 指 定的文件中。 ● save('filename', '-struct', 's'):保存结构体 s 中全部域作为单独的变 量。 ● save('filename', '-struct', 's', 'f1', 'f2', ...):保存结构体 s 中的 指定变量。 ● save('-regexp', expr1, expr2, ...):通过正则表达式指定待保存的变量 需满足的条件。 ● save('..., 'format'),指定保存文件的格式,格式可以为 MAT 文件、ASCII 文件等。 13.1.2 数据导入 MATLAB 中导入数据通常由函数 load 实现,该函数的用法如下: ● load:如果 matlab.mat 文件存在,导入 matlab.mat 中的所有变量,如果不 存在,则返回 error。 ● load filename:将 filename 中的全部变量导入到工作区中。 ● load filename X Y Z ...:将 filename 中的变量 X、Y、Z 等导入到工作区 中,如果是 MAT 文件,在指定变量时可以使用通配符“*”。
例 13-4 函数 csvread 和 csvwrite 的应用。
本例首先将 MATLAB 的图标转化为灰度图,将数据存储在文本文件中,再将
其部分读出,显示为图形。
编写 M 文件,命名为 immatlab.m,内容为:
% the example of functions csvread and csvwrite
I_MATLAB= imread('D:\matlab.bmp');
% read in the image
I_MATLAB= rgb2gray(I_matlab);
% convert the image to gray
image
figure,imshow(I_matlab,'InitialMagnification',100); % show the
据,起始行为 row,起始列为 col,读取的数据由数组 range 指定,range 的
格式为:[R1 C1 R2 C2],其中 R1、C1 为读取区域左上角的行和列,R2、C2 为
读取区域右下角的行和列。
csvwrite 函数的调用格式如下:
● csvwrite('filename',M),将数组 M 中的数据保存为文件 filename,数据间
以逗号分隔。
● csvwrite('filename',M,row,col),将数组 M 中的指定数据保存在文件中,
数据由参数 row 和 col 指定,保存 row 和 col 右下角的数据。
● csvwrite 写入数据时每一行以换行符结束。另外,该函数不返回任何值。
这两个函数的应用见下面的例子。
I_qΒιβλιοθήκη Baidu
415x552x3
687240 uint8 array
ans
1x3
24 double array
num_of_cluster
1x1
8 double array
Grand total is 687250 elements using 687320 bytes
将该文件中的变量导入到工作区中:
>> load matlab.mat
导入;如果指定的文件不是 MAT 文件,则返回 error。
例 13-1 将文件 matlab.map 中的变量导入到工作区中。
首先应用命令 whos –file 查看该文件中的内容:
>> whos -file matlab.mat
Name
Size
Bytes Class
A
2x3
48 double array
用格式如下:
● M = dlmread('filename')
● M = dlmread('filename', delimiter)
● M = dlmread('filename', delimiter, R, C)
● M = dlmread('filename', delimiter, range)
该例中涉及到了少量的图像处理内容,超出本书的范围,感兴趣的读者可以
查阅 MATLAB 帮助文档中关于 Image Processing Toolbox 的介绍。
2. dlmread、dlmwrite(个人觉得这个比较好用)
dlmread 函数用于从文档中读入数据,其功能强于 csvread。dlmread 的调