Help with the fscanf function
1 view (last 30 days)
Show older comments
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 Comments
Accepted Answer
Walter Roberson
on 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 Comments
Walter Roberson
on 10 Nov 2022
Edited: Walter Roberson
on 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)
More Answers (0)
See Also
Categories
Find more on Whos in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!