You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:03:11