MATLAB GUI设计入门与实战
上QQ阅读APP看书,第一时间看更新

2.1 Mat文件的读取与写入

MATLAB数据保存文件后缀名默认为.mat,因此对于.mat文件的操作是必须掌握的。本节主要讲叙Mat文件的读取与写入操作方法。

2.1.1 Mat文件的写入

MATLAB默认保存的数据为.mat格式,具体如图2-1所示。

图2-1 .mat文件生成

具体如何保存为.mat文件呢?MATLAB有很多不同的保存数据的方式,具体如下。

(1)首先产生数据,代码如下:

    clc,clear,close all        % 清理命令区、清理工作区、关闭显示图形
    warning off                 % 消除警告
    x = randn(1000,1);       % 产生数据

(2)进行数据的保存。

    save x.mat x  % 数据保存

save函数将x数据保存到x.mat文件中,同样也可以采用如下保存方式:

    save y.mat x  % 数据保存

这句代码的意思是将x这个数据保存到y.mat中。

相应的MATLAB工作路径文件夹下出现.mat数据文件,具体如图2-2所示。

图2-2 mat文件

(3)当有多个数据时,同样可以采用save一次性保存,具体如下:

    % Designed by Yu Shengwei From SWJTU University
    clc,clear,close all        % 清理命令区、清理工作区、关闭显示图形
    warning off                 % 消除警告
    feature jit off          % 加速代码运行
    format short                % 数据类型
    x=rand(10,1);              % 产生数据
    y = x;                      % 赋值
    save xy.mat x y            % 保存数据

读者只需要在第一数据后面添加要保存的数据名称即可,不同数据间采用空格隔开。

(4)MATLAB工作区存储着不同名称对应的数据包,用户可以通过鼠标右键保存,具体如图2-3所示。

图2-3 保存数据

用户单击如图2-3所示的【另存为…】命令,即弹出如图2-4所示数据保存界面。

图2-4 保存数据包

MATLAB默认的数据保存文件名为matlab.mat,当然用户可以对该名称进行修改,例如修改为ysw,单击【保存】按钮,在工作文件夹路径下可得到ysw.mat文件,如图2-5所示。

图2-5 ysw.mat

(5)同样,对于工作区的数据,也可以选择多个数据包,一起打包保存,具体如图2-6所示。

图2-6 多个数据包打包保存

因此,总的说来,MATLAB数据保存是比较容易的。

2.1.2 Mat文件的读取

如图2-7所示为一个数据加载过程示意图。

图2-7 数据加载示意图

首先进行MATLAB工作区和命令窗口的清理工作,代码如下:

    clc,clear,close all        % 清理命令区、清理工作区、关闭显示图形
    warning off                 % 消除警告
    feature jit off             % 加速代码运行

(1)加载数据文件,采用load函数进行加载,具体代码如下:

    load('ysw.mat')           % 加载数据

当然MATLAB也提供了另外一种加载方式,其代码如下:

    load ysw.mat                % 加载数据

用户也可以双击选择的数据文件,则MATLAB命令窗口自动生成代码:

    load('data.mat')          % 加载数据

具体加载数据的方式,使用较多的则是通过脚本文件进行加载,即采用load('data.mat')代码形式。

(2)同样用户也可以用鼠标右键菜单命令进行数据导入,具体如图2-8所示。

图2-8 数据导入

单击【导入数据…】命令,弹出导入向导,如图2-9所示。

图2-9 导入向导

如图2-9所示,用户可以知道要导入的数据的大小、字节以及数据类型,也可以生成完成这个导入过程的MATAB代码,直接单击【完成】按钮,即可导入数据。

如果用户勾选【生成MATLAB代码】,则自动生成一个Untitled.m脚本文件,程序如下:

    function importfile(fileToRead1)
    %IMPORTFILE(FILETOREAD1)
    %  从指定文件中导入数据
    %  FILETOREAD1:  要读取的文件
    
    %  由 MATLAB 于 04-Jan-2015 19:38:37 自动生成
    
    % 导入文件
    newData1 = load('-mat', fileToRead1);     % 加载.mat后缀的文件
    
    % 在基础工作区中从这些字段创建新变量。
    vars = fieldnames(newData1);              % 变量名称
    for i = 1:length(vars)                   % 长度
        assignin('base', vars{i}, newData1.(vars{i})); % 进行base空间设置,赋值
    end

具体如图2-10所示。

图2-10 生成导入数据函数文件

此时用户可以直接在MATLAB命令行输入:

    >> importfile('data')  % 导入数据

即完成数据加载。

(3)load加载数据,能够节约程序执行时间,例如对一个图像进行读取,程序如下:

    clc,clear,close all        % 清理命令区、清理工作区、关闭显示图形
    warning off                 % 消除警告
    feature jit off          % 加速代码运行
    format short                % 数据类型
    tic                         % 运算计时
    I = imread('me.jpg');    % 读图
    toc                      % 计时结束

运行程序输出执行时间如下:

    时间已过 0.260756 秒。

当采用load函数时,即直接加载保存的图像数据时,程序如下:

    clc,clear,close all        % 清理命令区、清理工作区、关闭显示图形
    warning off                 % 消除警告
    feature jit off            % 加速代码运行
    format short                % 数据类型
    tic                         % 运算计时
    load('I.mat')
    toc  % 计时结束

运行程序输出执行时间如下:

    时间已过 0.009754 秒。

对比系统执行时间可知,采用load加载已经读取的数据,有助于提高系统执行效率,节约CPU损耗时间,特别是在循环读取图像数据时,可以事先将很多图像数据保存在一个cell细胞体中。