首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在工作区中加载多个.mat文件

在工作区中加载多个.mat文件
EN

Stack Overflow用户
提问于 2015-04-29 12:08:22
回答 2查看 1.2K关注 0票数 0

我希望将多个.mat文件(大约500个)加载到我的工作区中。这些文件被命名为

代码语言:javascript
运行
复制
omni_AP1_trial_1_loc_1.mat 
omni_AP1_trial_1_loc_2.mat 
omni_AP1_trial_1_loc_3.mat
.
.
omni_AP1_trial_1_loc_57.mat
.
. 
omni_AP1_trial_10_loc_1.mat 
omni_AP1_trial_10_loc_2.mat 
omni_AP1_trial_10_loc_3.mat 
.
.
omni_AP1_trial_10_loc_57.mat

我正在使用给定的代码:

代码语言:javascript
运行
复制
files_1 = dir('omni_AP1_trial_*_loc_1.mat');
NumberOfDataset = length(files_1);

for i = 1:NumberOfDataset  
    %get allfiles matching the pattern 'dataset(i)_*'
    files = dir(sprintf('omni_AP1_trial_%d_loc_*.mat',i));
    for j = 1:length(files)
       fprintf('Current file : %s\n',files(j).name)
       a= load(files(j).name);

    end
end

在执行期间,即使fprintf语句显示正在选择的连续文件,但结构()只保存被拾取的最后一个文件,并且在循环迭代时前一个文件正在被覆盖。

如何将所有文件一起加载到工作区中?请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2015-04-29 12:13:42

您可以为迭代中的结果创建一个结构数组:

代码语言:javascript
运行
复制
a = []; % create empty array
files_1 = dir('omni_AP1_trial_*_loc_1.mat');
NumberOfDataset = length(files_1);

for i = 1:NumberOfDataset  
    %get allfiles matching the pattern 'dataset(i)_*'
    files = dir(sprintf('omni_AP1_trial_%d_loc_*.mat',i));
    for j = 1:length(files)
       fprintf('Current file : %s\n',files(j).name)

       a(end+1)= load(files(j).name); % store data in struct array

    end
end
票数 3
EN

Stack Overflow用户

发布于 2015-04-29 12:17:46

您的a值每次都会被覆盖,但是您可以有一个结构数组:

代码语言:javascript
运行
复制
a(j) = load(files(j).name);

下一个问题通常是如何在多个struct数组元素中索引相同的子元素。如果subelement是存储在文件中的变量的标量字段(如果该变量在每个文件中具有相同的名称),则可以这样做

代码语言:javascript
运行
复制
[a(:).variablename.subelement]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29943311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档