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 に答える