我是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