How to load .mat data from another folder?

92 次查看(过去 30 天)
Hey,
I have several mat files located in a folder called "matFile". the script is located in the uperfolder of this matFile folder. I mean Folder1 incluses the script and matFile folder. Using following lines I try to access to the mat files. Each mat file is a 1-by-190 cell array
matpath = 'C\...\matFile';
matfiles = dir(fullfile(matpath ,'*'));
N1 = setdiff({matfiles.name},{'.','..'});
then N1 give me all the data in matFile folder, i.e.,
{'time1.mat'} {'time2.mat'} {'time3.mat'} {'time4.mat'}
{'location1.mat'} {'location2.mat'} {'location3.mat'} {'location4.mat'}
{'space1.mat'} {'space2.mat'} {'space3.mat'} {'space4.mat'}
However, when I call load(N1{1}) I got the error that this file is not in the directory. Any idea? Is there a way that I can load data in a for loop?
Thanks in advance!
  3 个评论
VBBV
VBBV 2021-8-17
%if true
 matpath = 'C\...\matFile\';
matfiles = dir(fullfile(matpath ,'*.mat'));
N1 = setdiff({matfiles.name},{'.','..'});

Also do these changes

请先登录,再进行评论。

采纳的回答

Kelly Kearney
Kelly Kearney 2021-8-17
The dir command returns the path to each file in the folder field, so you need to append that to recreate the full path names for your files:
N1 = fullfile(matfiles(1).folder, setdiff({matfiles.name},{'.','..'}));
Although in this case, seeing that you're only looking for .mat files, I suggest using a more specific filter and eliminating the setdiff call:
matfiles = dir(fullfile(matpath, '*.mat'));
N1 = fullfile({matfiles.folder}, {matfiles.name});

更多回答(1 个)

Jeff Miller
Jeff Miller 2021-8-17
You need the folder name at the beginning of the string you pass to load, maybe something like this:
for iFile = 1:numel(N1)
s = [matpath '\' N1{iFile}];
load(s);
end
  2 个评论
Stephen23
Stephen23 2021-8-17
编辑:Stephen23 2021-8-17
It is recommended to use FULLFILE:
F = fullfile(matpath,N1{iFile});
and to load into an output variable:
S = load(F);
Susan
Susan 2021-8-17
编辑:Susan 2021-8-17
Thanks for your response.
for iFile = 1:numel(N1)
F = fullfile(matpath,N1{iFile});
S{iFile} = load(F);
end
read through the first mat file to the fifth one and then gives and error that
Error using load
Cannot read file C:\...\matFile\location2.mat.
Any idea? However, I can load ('C:\...\matFile\location2.mat') but when it runs a for loop I get this error. I think its because of running out of memory. I tried "fopen('all')" which replys [].

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by