Matlab 如何从复杂的mat中提取数据并将其保存到乘法表中
我对Matlab是新手 我想把垫子保存到表格文件中。我有一个像这样的垫子。有1*55结构,存储在“数据”字段中。 我想在这些结构中保存“轨迹”字段。我的代码是:Matlab 如何从复杂的mat中提取数据并将其保存到乘法表中,matlab,Matlab,我对Matlab是新手 我想把垫子保存到表格文件中。我有一个像这样的垫子。有1*55结构,存储在“数据”字段中。 我想在这些结构中保存“轨迹”字段。我的代码是: 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 但有一个错误: Expec
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
'''
“data.data.track”中的所有55个表
我试着不用循环就保存它:
my_track_data = data.data.track
writetable(my_track_data, my_output_file)
它只保存第一个表。Matlab循环不能像Python循环那样工作(也就是说,它们不会从结构中请求迭代器)。因此,您应该使用传统的索引: i=1的
:numel(data.data)
my_data=data.data(i);
可写(my_data.track、my_output_文件)
终止
(事实上,您可以使用“迭代器样式”,但for的
迭代的是列,而不是行,因此结果最终取决于数据的形状,很可能不是您想要的)。数据。数据包含55个结构。55个结构中的每一个都包含一个字段轨迹
。您对data.data.track
的预期结果是什么?您希望访问55个字段中的哪一个?您必须选择一个。我想用TXT格式将每个55结构中的“track”字段保存到不同的文件。对于此错误消息,您没有回答最重要的问题:您希望data.data.track的结果如何?数据中没有曲目
。数据
。数据中有55个结构。data
。我希望它是一个包含55个表的列表。我可以看到Matlab显示data.data.track。但是如果您希望data.data.track
包含55个表,那么它只返回我的一个表。我不理解这个问题。我以为数据。数据包含55个结构。为什么data.data.track
也应该包含55个结构?如果您提供一个。我在“data.data.track”中添加大括号,它就可以循环了。非常感谢。d=data.data的和可写(d.track,my_output_file)
有什么问题?我认为d
仍然是一个复杂的结构。通过使用大括号,如{data.data.track}
可以将其转换为单元格类型。单元格类型可以循环。
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