MATLAB Answers

how to save Struct to txt file

598 views (last 30 days)
Mr. Unkown
Mr. Unkown on 16 Apr 2015
Edited: Rob Campbell on 14 Apr 2020
hello,
I have my data saved in struct format like this
===
MyData=
1x405 struct array with fields
Distance
Binary
Angle
===
my question is: how to save these cell arrays to text files please?

  0 Comments

Sign in to comment.

Answers (3)

Guillaume
Guillaume on 16 Apr 2015
Assuming the fields are scalar, the simplest way is to convert the structure to a table and then use writetable:
writetable(struct2table(MyData), 'somefile.txt')

  2 Comments

Mr. Unkown
Mr. Unkown on 16 Apr 2015
Thanks Guillaume, I have tried this and got undefined function or variable 'struct2table'
Guillaume
Guillaume on 17 Apr 2015
You must have an old version of matlab then. struct2table has existed since R2013b.

Sign in to comment.


Adam
Adam on 16 Apr 2015
Edited: Adam on 16 Apr 2015
doc fprintf
You will have to put the code together yourself to use fprintf as there is no builtin function that can magically save an arbitrary struct to a text file.
I assume you want to use the file outside of Matlab otherwise just saving to a .mat file would be far better.

  2 Comments

Mr. Unkown
Mr. Unkown on 16 Apr 2015
Thanks Adam, Yes I need to use it outside the Matlab. Can please expand your solution? what do you mean by doc fprintf?
Adam
Adam on 16 Apr 2015
doc fprintf
just takes you to the help page for the function you need to use. There are examples there, but for your own struct you have to work out how to format the text file yourself.

Sign in to comment.


Rob Campbell
Rob Campbell on 14 Apr 2020
Edited: Rob Campbell on 14 Apr 2020
This might do what you want: https://github.com/ewiger/yamlmatlab
It handles nested structures too. For example, if I define a structure like this:
settings.main.medFiltRawImage = 5;
settings.main.doTiledMerge=true;
settings.main.tiledMergeThresh=1.05;
settings.main.secondExpansion=false;
settings.main.defaultThreshSD=7;
settings.mainBin.removeNoise = true;
settings.mainBin.medFiltBW = 5;
settings.mainBin.primaryShape = 'disk';
settings.mainBin.primaryFiltSize = 50;
settings.mainBin.expansionShape = 'square';
settings.mainBin.doExpansion = true;
settings.mainBin.expansionSize = 600;
settings.mainGetBB.minSizeInSqMicrons = 15000;
settings.mergeO.mergeThresh=1.3;
settings.stackStr.rescaleTo=50;
settings.autoThresh.skipMergeNROIThresh=10;
settings.autoThresh.doBinaryExpansion=false;
Then it will be saved to disk with yaml.WriteYaml whereupon it will look like:
main: {medFiltRawImage: 5.0, doTiledMerge: true, tiledMergeThresh: 1.05, secondExpansion: false,
defaultThreshSD: 7.0}
mainBin: {removeNoise: true, medFiltBW: 5.0, primaryShape: disk, primaryFiltSize: 50.0,
expansionShape: square, doExpansion: true, expansionSize: 600.0}
mainGetBB: {minSizeInSqMicrons: 15000.0}
mergeO: {mergeThresh: 1.3}
stackStr: {rescaleTo: 50.0}
autoThresh: {skipMergeNROIThresh: 10.0, doBinaryExpansion: false}

  0 Comments

Sign in to comment.

Tags


Translated by