在MatLab中动态调用聚集函数

xa9qqrwz  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(164)

我正在尝试动态调用MatLab中的gather()函数。
我目前正在做这样的事情:

for index_1 = 1:1:document_count
  current_filename = "random_file"+index_1+".mat";
  data = load(current_filename);
  pci= gather(datasets.current_filename.pci.dist);
end

在上面的代码中,虽然Gather函数失败了,但数据还是加载了,我认为这是因为我在中间向它传递了一个字符串。我不确定有什么变通办法。

6ljaweal

6ljaweal1#

将字符串(CURRENT_FILENAME)用作struct的字段名时,需要将其放在括号中。请参见here

for index_1 = 1:1:document_count
   current_filename = "random_file"+index_1+".mat";
   data = load(current_filename);
   pci= gather(datasets.(current_filename).pci.dist);
 end

也就是说,我猜您需要去掉文件名的扩展名(.mat)才能正常工作。例如,您真的有datasets.random_file1.mat.pci.dist吗?

fhg3lkii

fhg3lkii2#

我这样做的方式是:

fields = fieldname(data)
data = getfield(data,fields{1})

我使用这种技术来遍历子字段

pci_field = getfield(data, fields{1})
pci = gather(pci_field.dist)

相关问题