Arrays 访问嵌套结构中的数据

Arrays 访问嵌套结构中的数据,arrays,matlab,structure,Arrays,Matlab,Structure,好吧,我找到了一个更好的方式来访问我的文件,但我还是有点卡住了 到目前为止,我的代码是: clc % clear window clear %clear workspace numfiles = 21; data = cell(1, numfiles); obsdata = dir('*.mat'); numfiles = length(obsdata); data = cell(1, numfiles); for k = 1:numfiles data{k} = load(obs

好吧,我找到了一个更好的方式来访问我的文件,但我还是有点卡住了

到目前为止,我的代码是:

clc % clear window
clear %clear workspace

numfiles = 21;
data = cell(1, numfiles);

obsdata = dir('*.mat'); 
numfiles = length(obsdata);
data = cell(1, numfiles);

for k = 1:numfiles 
  data{k} = load(obsdata(k).name); 
end
这会整理我的数据。 共有21个单元格包含J6文件,如图所示。左侧可以看到文件列表: 单击每个单元格将显示一个结构: 每个都包含我想要访问的数据

我不确定如何编写代码,以便将最后一部分中的数据存储到两个阵列中波长和强度

试试这个。我使用deal将每个obsdata.name复制到一个名为names的单元格数组中。对于变量来说,这可能是一个糟糕的名称选择,因为您已经有了一个名为name的变量,但无论如何

obsdata = dir('*.mat'); 
numfiles = length(obsdata);
data = cell(1, numfiles);
names = cell(1,numfiles);
names = cell(1,numfiles);
[names{:}] = deal(obsdata.name);
for k = 1:numfiles
  data{k} = load(names{k}) 
end

了解更多关于如何存储数据的信息会有所帮助,但通常情况下,工作将在用于加载文件的循环中完成。一个好的起点可能是将数据从结构中取出并放入单元数组:

for k = 1:numfiles 
  data{k} = struct2cell(load(obsdata(k).name)); 
end
我相信这已经有一段时间了,我再也无法访问matlab,21个单元中的每一个都将包含一个单元数组,存储您感兴趣的矩阵。也许这就足够了?从这一点上,我认为您可以访问如下数据:

data{file_num}{struct_field_num}(x,y)
其中x和y是矩阵中的索引,这些索引过去作为字段存储在结构中

如果要连接这些矩阵中的每一个,以便得到21个单元,每个单元都有一个mx2矩阵,则可以修改循环:

for k = 1:numfiles 
  tmp = load(obsdata(k).name); 
  data{k} = vertcat(tmp{:});
end

关于如何组织数据的更多信息,我们可以优化答案。

这将为我提供一个名称文件,其中包含所有名称的列表。。但是,它不允许我存储每个J6文件中的文件。如果答案显而易见,我表示歉意,但我仍在努力理解它是如何工作的。我想你必须给出一个清楚的例子,说明你的数据实际上是什么。事实上,我只是在猜测。你的.mat文件的内容是什么?这是半工作状态!耶!但问题是。。我有一个类似这样的for循环:对于n=56:59 F=getfielddata{1,1}{1,1},sprintf'order_u%d',n;现在结束。。这只从{1,1}获取数据,但我希望它访问1:21个单元格中的每个单元格。我怎么才能让它这么做?我目前无法访问所有数据。。代码正在处理一些文件,所以我希望解决这个问题会起作用。我不太确定你想用这个循环做什么——我需要更多的上下文。但你最初的问题得到了回答吗?如果是这样的话,你可以把它标记为已回答并发布一个新的。