Only Save the New Numerical Data to Text File

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

0 votes

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

I
I le 6 Avr 2022
I added fclose(fileid) as the last line of code in the functing and the output looks the same. I am still saving my original data and then adding my new data behind my original data.
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 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 Data Import and Export dans Centre d'aide et File Exchange

Produits

Version

R2020b

Question posée :

I
I
le 5 Avr 2022

Commenté :

I
I
le 7 Avr 2022

Community Treasure Hunt

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

Start Hunting!

Translated by