在 MATLAB 中,如何将结构体数组保存到文本文件中,以便显示结构体数组在命令窗口中显示的所有内容?
问问题
22026 次
3 回答
7
我知道这个线程很旧,但我希望它仍然可以帮助某人:
我认为这是一个较短的解决方案(每个结构字段可以包含标量、数组或字符串的约束):
%assume that your struct array is named data
temp_table = struct2table(data);
writetable(temp_table,'data.csv')
现在您的结构数组存储在 data.csv 文件中。列名是结构的字段名,行是结构数组的不同单结构
于 2015-08-03T15:34:15.800 回答
4
您必须首先为您的文件定义格式。
保存到 MATLAB 工作区文件 (.MAT)
如果您不关心格式,而只是希望以后能够加载数据,请使用save
,例如:
save 'myfile.mat' structarr
它将结构数组存储structarr
在名为“file.mat”的二进制 MAT 文件中。要将其读回您的工作区,您可以使用load
:
load 'myfile.mat'
保存为逗号分隔值 (.CSV)
如果要将结构数组保存为文本文件中的逗号分隔值对,其中每对包含字段名称及其值,您可以按照以下方式进行操作:
%// Extract field data
fields = repmat(fieldnames(structarr), numel(structarr), 1);
values = struct2cell(structarr);
%// Convert all numerical values to strings
idx = cellfun(@isnumeric, values);
values(idx) = cellfun(@num2str, values(idx), 'UniformOutput', 0);
%// Combine field names and values in the same array
C = {fields{:}; values{:}};
%// Write fields to CSV file
fid = fopen('myfile.csv', 'wt');
fmt_str = repmat('%s,', 1, size(C, 2));
fprintf(fid, [fmt_str(1:end - 1), '\n'], C{:});
fclose(fid);
此解决方案假定每个字段都包含一个标量值或字符串,但您当然可以根据需要对其进行扩展。
于 2013-03-17T13:17:09.347 回答
1
要将任何数据类型转换为 MATLAB 命令窗口中显示的字符向量,请使用函数
str = matlab.unittest.diagnostics.ConstraintDiagnostic.getDisplayableString(yourArray);
然后,您可以将内容写入文件
fid = fopen('myFile.txt', 'w');
fwrite(fid, str, '*char');
fclose(fid);
于 2017-11-17T15:27:31.107 回答