Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Arrays 如何将结构数组保存到文本文件_Arrays_Matlab_Text Files_Structure - Fatal编程技术网

Arrays 如何将结构数组保存到文本文件

Arrays 如何将结构数组保存到文本文件,arrays,matlab,text-files,structure,Arrays,Matlab,Text Files,Structure,在MATLAB中,如何将结构数组保存到文本文件中,以便它显示结构数组在命令窗口中显示的所有内容?您必须首先为文件定义格式 保存到MATLAB工作区文件(.MAT) 如果您不关心格式,只是希望能够在以后加载数据,请使用,例如: save 'myfile.mat' structarr 它将结构数组structarr存储在名为“file.MAT”的二进制MAT文件中。要将其读回您的工作区,您可以使用: 另存为逗号分隔的值(.CSV) 如果要将结构数组保存在文本文件中,作为逗号分隔的值对,其中每对值都

在MATLAB中,如何将结构数组保存到文本文件中,以便它显示结构数组在命令窗口中显示的所有内容?

您必须首先为文件定义格式

保存到MATLAB工作区文件(.MAT) 如果您不关心格式,只是希望能够在以后加载数据,请使用,例如:

save 'myfile.mat' structarr
它将结构数组
structarr
存储在名为“file.MAT”的二进制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);

此解决方案假定每个字段都包含标量值或字符串,但您当然可以根据需要扩展它。

我知道此线程很旧,但我希望它仍能帮助某些人:

我认为这是一个较短的解决方案(每个结构字段都可以包含标量、数组或字符串):


现在,结构数组存储在data.csv文件中。列名是结构的字段名,行是结构数组的不同单个结构

要将任何数据类型转换为MATLAB命令窗口中显示的字符向量,请使用函数

str = matlab.unittest.diagnostics.ConstraintDiagnostic.getDisplayableString(yourArray);
然后可以将内容写入文件

fid = fopen('myFile.txt', 'w'); 
fwrite(fid, str, '*char');
fclose(fid);
str = matlab.unittest.diagnostics.ConstraintDiagnostic.getDisplayableString(yourArray);
fid = fopen('myFile.txt', 'w'); 
fwrite(fid, str, '*char');
fclose(fid);