Help with the fscanf function
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
AMZ
le 10 Nov 2022
Modifié(e) : Walter Roberson
le 10 Nov 2022
Hello Community,
I have been trying to figure out how I can use the fscanf functions to input data:
4 6
5.2 1.3
6.2 8.8
4.9 6.9
10.2 1.2
In this format:
A B
K1 J1
K2 J2
K3 J3
K4 J4
i.e. A = 4, B = 6, K1 = 5.2 etc..
0 commentaires
Réponse acceptée
Walter Roberson
le 10 Nov 2022
Call fscanf() with size parameter [2, inf] and use .' to transpose the output to N x 2
S = ...
"4 6" + newline + ...
"5.2 1.3" + newline + ...
"6.2 8.8" + newline + ...
"4.9 6.9" + newline + ...
"10.2 1.2"
data = sscanf(S, '%f %f', [2 inf]) .'
2 commentaires
Walter Roberson
le 10 Nov 2022
Modifié(e) : Walter Roberson
le 10 Nov 2022
%in your real code you would use a real file name
filename = tempname() + ".txt";
%preparation -- need to write some data into the file in order
%to illustrate reading data from a file
%this section exists only for demonstration purposes.
%in your real code you would skip this section and just assign to the
%filename and then do the fopen and so on
S = ...
"4 6" + newline + ...
"5.2 1.3" + newline + ...
"6.2 8.8" + newline + ...
"4.9 6.9" + newline + ...
"10.2 1.2";
fid = fopen(filename, 'w');
fwrite(fid, S);
fclose(fid);
%now the actual work that you would have in your real file
fid = fopen(filename, 'r');
data = fscanf(fid, '%f %f', [2 inf]) .';
fclose(fid);
data
and if using fscanf() is not a hard requirement being imposed by someone else, then skip the fopen() and so on, and just use
data = readmatrix(filename)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Whos dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!