Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何从复杂的mat中提取数据并将其保存到乘法表中_Matlab - Fatal编程技术网

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

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

我对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
但有一个错误:

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