Only Save the New Numerical Data to Text File

2 vues (au cours des 30 derniers jours)
I
I le 5 Avr 2022
Commenté : I le 7 Avr 2022
I want to save the newly edited data to the same text file after clicking the save button.
I have 10 variables.
This is what I have for my edit data:
function EditButtonPushed(app, event)
app.T.ct(1) = app.ctEditField.Value;
app.T.cr(1) = app.crEditField.Value;
When saving the data:
Q = table2array(app.T(1, :));
fileid = fopen('filename.txt','w');
fprintf(fileid, '%6.5f ', (Q));
The textfile output is:
0.09000 0.45000 45.00000 0.00000 0.00600 0.24200 4.67000 4.00000 0.89925 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000
I edited each number to 2 and for some reason, my old data appears in front of my new data.
How do I only save the newly edited data?

Réponses (1)

Jan
Jan le 5 Avr 2022
If you do not close a file opened by fopen with fclose is stays open.
Solution: Append an fclose(fileid) after the fprintf.
  3 commentaires
Jan
Jan le 6 Avr 2022
Is the file still open? Try to close all open files:
fclose('all')
If you are still appending the data, you either open the file with 'a' instead of 'w', or the data are included in your array Q, although you expect something else.
I
I le 7 Avr 2022
I fried fclose('all') as well. I am assuming that since the initial data is still showing up, then the initial data must be in the array for some reason. This at least helps me know where to look. Here is how I am importing and editing each piece of data:
For the open button:
[filename, path] = uigetfile('*.txt');
figure(app.UIFigure);
app.T = readtable(filename, 'Delimiter', 'space');
And then this is followed by each variable, but I'll just show 2 to be less redundant.
app.ct = app.T(1,1);
app.cr = app.T(1,2);
app.ctEditField.Value = table2array(app.ct(1,1));
app.crEditField.Value = table2array(app.cr(1,1));
The edit button:
app.T.ct(1) = app.ctEditField.Value;
app.T.cr(1) = app.crEditField.Value;
app.ctEditField.Value = app.T.ct(1);
app.crEditField.Value = app.T.cr(1);
I am failing to just replace the new value with the old value somewhere in here?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by