如何在MATLAB中从其他目录加载数据集以调用pca函数?
在MATLAB中从指定目录加载数据集并运行PCA
我来帮你梳理下在MATLAB里从指定目录加载数据集跑PCA的方法,分两种常见场景来说:
1. 加载.mat格式的数据集(比如你示例里的hald)
这种是MATLAB最常用的数据集格式,有两种简便的加载方式:
方式一:先切换到数据集所在目录
先通过cd命令切换到目标文件夹,再加载文件,适合你需要在该目录下操作多个文件的情况:
% 替换成你的数据集实际路径,Windows用反斜杠,Mac/Linux用正斜杠 cd('C:\Your\Dataset\Folder'); % 加载hald数据集(.mat后缀可以省略) load hald; % 运行PCA,这里的ingredients是hald.mat里自带的变量 coeff = pca(ingredients);
方式二:直接指定完整路径加载
不想切换目录的话,直接把完整路径传给load函数就行,还可以用变量接收数据,避免污染工作区:
% 直接加载指定路径下的hald.mat文件 data = load('C:\Your\Dataset\Folder\hald.mat'); % 从加载的结构体中取出ingredients变量运行PCA coeff = pca(data.ingredients);
2. 加载图像数据集(比如指定文件夹里的一堆图片)
如果是图像数据集,需要先批量读取图像并转换成适合PCA的特征矩阵(把每张图像拉平成一维向量),示例代码如下:
% 指定图像文件夹的路径 imgFolder = 'C:\Your\Image\Dataset\Folder'; % 获取文件夹下所有jpg格式的图像(可改成png、bmp等格式) imgFiles = dir(fullfile(imgFolder, '*.jpg')); % 先读取第一张图像,确定特征向量的长度 firstImg = imread(fullfile(imgFolder, imgFiles(1).name)); % 把图像尺寸转换成一维的长度(比如256*256的灰度图就是65536) featureLength = prod(size(firstImg)); % 初始化特征矩阵,每行对应一张图像的特征向量 featureMatrix = zeros(length(imgFiles), featureLength); % 循环读取所有图像并处理 for i = 1:length(imgFiles) % 拼接当前图像的完整路径 imgPath = fullfile(imgFolder, imgFiles(i).name); img = imread(imgPath); % 可选:如果是彩色图像,可以转成灰度图再拉平(去掉下面注释即可) % img = rgb2gray(img); % 把图像拉平成一维向量,存入特征矩阵 featureMatrix(i, :) = img(:); end % 对特征矩阵运行PCA coeff = pca(featureMatrix);
小提示
- 如果你的图像尺寸不一致,记得先统一尺寸(可以用
imresize函数),不然没法拼成统一的特征矩阵; - 彩色图像可以选择转灰度后再处理,或者直接把RGB三个通道的像素值全部拉平作为特征,根据你的任务需求来选。
内容的提问来源于stack exchange,提问作者Nomad
相关产品推荐
相关产品推荐

