Writematrix loses precision with string present in data
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Martin
am 18 Mär. 2025
Beantwortet: Walter Roberson
am 18 Mär. 2025
I am saving a matrix to file and need full precision in the data. I am using the writematrix function, and my problem can be shown in this minimal example:
writematrix([1;0.123456789],"./testA.txt")
writematrix(["Test";0.123456789],"./testB.txt")
Then testA.txt:
1
0.123456789
And testB.txt
Test
0.12346
Is there a way to have strings (such as a header row) in my matrix but retain the full precision in the data?
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 18 Mär. 2025
writematrix(["Test";compose("%.999g", 0.123456789)],"./testB.txt")
dbtype testB.txt
Retains full precision.
0 Kommentare
Weitere Antworten (1)
dpb
am 18 Mär. 2025
Verschoben: dpb
am 18 Mär. 2025
["Test";0.123456789]
The problem, if there is one, is in combining the string and the numeric into one array; MATLAB can have only one data type in an array other than a cell array and so the numeric value was coerced to a string before it was written; ergo, it isn't writematrix that is the issue here, it's trying put a square peg in a round hole; mixing data types inappropriately.
Probably the easiest workaround with the minimal example would to use a table instead...
tT=table(0.123456789,'VariableNames',"Test")
writetable(tT,"testB.txt",'WriteVariableNames',1)
type testB.txt
0 Kommentare
Siehe auch
Kategorien
Mehr zu Text Files finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!