如何在matlab中加载和运行多个.mat文件
我正在尝试在matlab中运行多个.mat文件。到目前为止,我有3个.mat文件,每个文件都包含相同的变量。我想运行一个.mat文件,然后切换到下一个文件。它们的名称如下:如何在matlab中加载和运行多个.mat文件,matlab,loops,mat-file,Matlab,Loops,Mat File,我正在尝试在matlab中运行多个.mat文件。到目前为止,我有3个.mat文件,每个文件都包含相同的变量。我想运行一个.mat文件,然后切换到下一个文件。它们的名称如下: file2019_1.mat %day 1 file2019_2.mat %day 2 file2019_3.mat %day 3 我尝试运行的代码适用于第一个.mat文件,但它不会切换到第二个。理想情况下,我尝试连续运行所有3个文件,因为在未来我可能有100个 这是我迄今为
file2019_1.mat %day 1
file2019_2.mat %day 2
file2019_3.mat %day 3
我尝试运行的代码适用于第一个.mat文件,但它不会切换到第二个。理想情况下,我尝试连续运行所有3个文件,因为在未来我可能有100个
这是我迄今为止尝试的代码:
% set up folder for .mat files containing variables of interest
myFolder = ('filepath');
filePattern = fullfile(myFolder, 'file2019_*.mat');
fileList = dir(filePattern);
% set up variable data (here it is daily mean velocity value)
% hourly, m/s (one mat file one day)
number_mat = length(fileList);
for i = 1:number_mat
load(['file2019_' num2str(i) '.mat'])
%%%% run model in here
end
任何关于我如何让它在每个mat文件中连续运行的帮助都将是非常好的。
谢谢。这是一个非常简单的方法,只需选择所有文件(Ctrl+A)-将它们拖放到命令窗口中(请确保拖动第一个文件,以相同的顺序加载它们) 或者你可以用这个
% Read files mat1.mat through mat20.mat
for k = 1 : 20 % or whatever your numbers of files
% Create a mat filename, and load it into a structure called matData.
matFileName = sprintf('mat%d.mat', k);
if isfile(matFileName)
matData = load(matFileName);
else
fprintf('File %s does not exist.\n', matFileName);
end
end
或
不确定会出现什么问题,但这里有一个简明的方法来读取
.mat
文件:。我能看到的唯一可能导致问题的地方是没有将文件夹连接到正在加载的文件。@MichaelTr7谢谢,我尝试了你的代码,但当它应该切换到第二个.mat文件时,它仍然停止。我的模型正在跟踪粒子,并且有一个时间戳,因此不确定这是否是问题所在,或者它完全重新启动,因为现在我的错误与数组大小有关。数组大小可能有问题。我认为你的.mat
文件加载非常好。这可能与for循环中的代码有关。请随意根据问题添加任何代码、错误或问题。我需要它在每个问题之间循环,因为它们具有相同的变量名,最终我将有很多文件,因此为了节省内存,我不想将环境中的所有变量都保留在同一位置。我编辑了答案,希望我能很好地理解您。注意,,您可以在您的案例中使用file2019\uuu%d.mat
,而不是mat%d.mat
。
% Get a list of all txt files in the current folder, or subfolders of it.
fds = fileDatastore('*.txt', 'ReadFcn', @importdata)
fullFileNames = fds.Files
numFiles = length(fullFileNames)
% Loop over all files reading them in and plotting them.
for k = 1 : numFiles
fprintf('Now reading file %s\n', fullFileNames{k});
% Now have code to read in the data using whatever function you want.
% Now put code to plot the data or process it however you want...
end