MATLAB 的数据导入与导出
1 数据导入:
%% 高层次读取数据。 importdata 函数是一个高层次的函数 filename = \'weeklydata.txt\'; delimiterIn =\' \'; %delimiter: n. 定界符。将 delimiterIn 解释为 ASCII 文件、文件名或剪贴板数据中的列分隔符。 headerlinesIn = 1; % 从 lineheaderlinesIn+1 开始读取数字数据。 A=importdata(filename,delimiterIn,headerlinesIn); % 开始预览数据 for k =[1:7] disp(A.colheaders{1,k}) %展示每一列的题头 disp(A.data(:,k)) %每一列的所有行 disp(\' \') end
结果:
Matlab低级别的文件 I/O:
%% Matlab低级别的文件 I/O filename = \'myfile.txt\'; % myfile.txt保存在工作目录中。此文件存放三个月的降雨资料: 2012年6月,7月和8月降雨量。 % myfile.txt中的数据在五个地方包含重复的时间,月份和降雨量测量。标题数据存储月数M; 所以有M个集合测量值。 rows = 7 cols = 5 %使用 fopen 函数打开文件并获得文件标识符。 fid = fopen(filename); %读取文件头,找到 M (月份数) % 使用格式说明符描述文件中的数据,例如字符串的%s,整数%d或浮点数%f。 % 要跳过文件中的文字,需将其包含在格式说明中。要跳过数据字段,在说明符中使用星号(*) M=fscanf(fid,\'%*s %*s\n %*s %*s %*s %*s\n M=%d\',1); %要读取头文件,并返回单个的M值 %读取 each set of measurements for n= 1:M % 默认情况下,fscanf会根据格式描述读取数据,直到找不到数据的匹配,或到达文件的末尾。 % 这里使用for循环读取3组数据,每次读取7行和5列。 % 在工作空间中创建一个名为mydata的结构来存储从文件读取的数据。 % 这个结构有三个字段 - 时间,月份和雨天数组。 mydata(n).time=fscanf(fid, \'%s\',1); mydata(n).month = fscanf(fid, \'%s\', 1); mydata(n).raindata=fscanf(fid,\'%f\',[rows,cols]); end for n=1:M disp(mydata(n).time) disp(mydata(n).month) disp(mydata(n).raindata) end %关闭文件 fclose(fid);
结果:
2 数据导出:
使用 save 将工作区变量保存到文件中。
(1)save(
将当前工作区中的所有变量保存在 MATLAB® 格式的二进制文件(MAT 文件)filename
)filename
中。如果 filename
已存在,save
会覆盖该文件。
(2)save(
仅保存 filename
,variables
)variables
指定的结构体数组的变量或字段。
(3)save(
以 filename
,variables
,fmt
)fmt
指定的文件格式保存。variables
参数为可选参数。如果您不指定 variables
,save
函数将保存工作区中的所有变量。
例如,要保存名为 test.mat
的文件,这些语句是等效的:
save test.mat % command form
save(\'test.mat\') % function form
您可以包括先前语法中介绍的任何输入。例如,要保存名为 X
的变量:
save test.mat X % command form
save(\'test.mat\',\'X\') % function form