
1.2 如何加载MATLAB自带的数据集
【例1-1】 添加MATLAB自带的mnist手写数据集。
mnist数据集是开源手写数据集,其含有0~9总共10种手写数字,分别保存在以数字0~9命名的10个文件夹中,每个文件夹中有1000幅图像,总共10000幅图像。
在安装MATLAB之后,该数据集会被自动加载,其所在的路径如图1-4所示(MATLAB的版本不同,安装的路径不同,mnist数据集所在的路径也会有所不同,请读者以计算机上安装后的实际路径为准)。

图1-4 mnist数据集所在的路径
在命令窗口中输入如下指令,可以加载mnist数据集:

其中,digitDatasetPath存放mnist数据集路径;imageDatastore函数生成一个图像数据存储区结构体,里面包含了图像和每幅图像对应的标签。
上述指令涉及两个函数:fullfile和imageDatastore,下面就对这两个函数进行详细讲解。
1.fullfile函数
功能:创建路径。
用法:f = fullfile(filepart1,…,filepartN)。
输入:filepart1,…,filepartN表示第1层路径(文件夹),…,第N层路径(文件夹或文件名)。
输出:f表示完整的路径。
例如,f = fullfile(' DLTfolder ',' DLTsubfolder ',' DLTfile.m')的功能是生成一个路径f,f ='DLTfolder\DLTsubfolder\DLTfile.m'。
经验分享
在Windows系统中,也可以用fullfile函数创建多个文件的路径。例如,f = fullfile(' c:\',' myfiles','matlab ',{ 'myfile1.m' ;' myfile2.m '}),该命令语句的功能是返回一个元胞数组f,其中包含文件myfile1.m和myfile2.m的路径。
即f=2×1 cell array
'c:\myfiles\matlab\myfile1 .m'
'c:\myfiles\matlab\myfile2 .m'
2.imageDatastore函数
功能:将图像样本存储为可供训练和验证的数据。
用法:
语法①
imds = imageDatastore (location)
输入:location表示图像数据保存的位置。
输出:imds表示可供训练和验证的数据。
语法②
imds = imageDatastore (location,Name,Value)
可以通过指定“名称-取值”对(Name和Value)来配置特定属性(将每种属性名称括在单引号中),具体含义见表1-1。
表1-1 imageDatastore函数的输入参数

在了解了上述两个函数的功能和用法之后,下面详细地看一下这两个命令语句的含义:

上述语句创建了一个路径,在笔者的计算机上,该路径为:

在创建了路径之后,将存储在该路径之下的图像集转化为可用的训练及验证数据集;采用的具体命令语句如下。

例程1-1:读取自带的mnist手写数据集。

读取MATLAB自带的mnist手写数据集,并随机显示其中的20幅图像。请读者结合上述的讲解对程序进行理解。例程1-1的运行效果如图1-5所示。


图1-5 例程1-1的运行效果
在使用imageDatastore函数时,还有一点要注意,如果图像数据集在C盘的\Documents\MATLAB\文件夹下(注:MATLAB安装在不同的位置,路径可能不同),调用该函数时第一个参数可以不加路径,直接写文件夹的名称。如:

上述语句实现的功能为,将存储在C盘的\ Documents\ MATLAB\ MerchData文件夹下的图像集转化为可用的训练及验证数据集。