2.8 储存及读取数据
我们在使用MATLAB过程中,免不了希望将运算过程中的某些数据「储存」起来,以便下次使用再「读取」利
用。「储存」和「读取」的指令分别是save及load,而save的数据型态又分为:(1)双位元格式
(binary format) 的 MAT-file,(2) ASCII 格式的 ASCII-file。MAT-file
是以双位元字元储存,可让电脑在读出/入(input/output) 速率加 快,其格式为test.mat(test为档名),MATLAB将档案的型态预设为MAT-file;而ASCII-file则是以可辨识的字元
储存,但会降低电脑在读出/入的速率,其格式为test.dat(test为档名)。如果你的数据是只在MATLAB中产生
及被使用,那最好使用MAT-file。ASCII-file则必须用在当数据档要为其它不是MATLAB的应用软体读取时。
另外要注意,当save成MAT档是储存变数本身,而非直接储存变数的数据;而save成ASCII档则是直接储存变数的数值。
这二者储存的差异,造成在读取MAT档和ASCII档的数据有所不同,详见以下的范例。
须注意的是在储存及读取数据时,MAT-file或是ASCII-file的档最好为矩阵型态,否则可能在读取时有困难。数
据储存成矩阵的大小可以为m×n,其中m是列的数目,n则为行的数目。
以下就是几个save, load的使用范例
>> x=1:5; y=11:15; % 先产生二个列阵列 (row array} x, y
>> save data1 x y % 是将 x,y 二个变数的数值存入 data1 这个MAT-file,
%即data1其实是data1.mat。data1.mat 的内容为变数x, y,而非(1:5, 11:15) 的数据
>> save data2.dat x y -ascii % 如果要将data1改以ASCII格式储存,则须加上-ascii
% 的选项。data2.dat 的内容为(1:5, 11:15) 的数据
>> type data2.dat % type 指令可以将
data2.dat 的内容列出
>> load data1 % 读取 data1.mat 档
>> x, y % 叫出 data1.mat中的变数来读取其内容(1:5,
11:15)
>> load data2.dat % 读取 data2.dat 档
>> x2=data2(1,:); y2=data2(2,:); % 将data2中的第一及第二列数据分别以x2及y2
%变数读入,之后在运算中即可使用这二列数据
>> x=21:25; y=31:35;
>> save data3.dat x y -ascii
>> load data3.dat;
>> x3=data3(1,:); y3=data3(2,:); % 将data3中的第一及第二列数据分别以x3及y3 变数读入
%,之后在运算中即可使用这二列数据
>> A=[1 2 3; 4 5 6];
>> save data4.dat A -ascii %是将A阵列的数值存入data4这个ASCII-file
>> load data4.dat
>> x4=data4(:,1); % 令 x4 为 data4 的第一行数据
>> y4=data4(:,2); % 令 y4 为 data4 的第二行数据
>> z4=data4(:,3); % 令 z4 为 data4 的第三行数据