如何从复杂的mat中提取数据并将其保存到乘法表中

  • 本文关键字:保存 数据 复杂 提取 mat matlab
  • 更新时间 :
  • 英文 :


我是Matlab新手。

我想保存一个mat到表文件。我有一个像这样的锉刀。有一个1* 55的结构体,存储在"data"字段中。表

的数据结构我想在这些结构中保存"track"字段。我的代码:

data = load('G:/my_file.mat');
my_output_file = 'G:/my_output.txt'
for my_track_data = data.data.track
writetable(my_track_data, my_output_file)
end

但是有一个错误:

Expected one output from a curly brace or dot indexing expression, but there 55 results.

顺便说一下,当我输入时,我可以看到Matlab显示所有结果:"‘data.data.track"

中的所有55个表I just save it without a loop:

my_track_data = data.data.track
writetable(my_track_data, my_output_file)

它只保存第一个表。

Matlab循环不像Python循环那样工作(即它们不从结构中请求迭代器)。因此,您应该使用传统的索引:

for i = 1:numel(data.data)
my_data = data.data(i);
writetable(my_data.track, my_output_file)
end

(实际上,您可以使用"迭代器样式",但是for上迭代,而不是行,所以结果最终取决于数据的形状,很可能不是你想要的)。

data = load('G:/my_file.mat');
# the braces is very important. It can convert 'data.data.track' to cell type for looping
required_data={data.data.track};
for k = 1:length(required_data)
my_output_file = ['G:/test_' num2str(k) '.txt'];
temp = requireddata(k);
tt = cell2table(temp);
writetable(tt.temp{1, 1}, my_output_file);
end

最新更新