Using sscanf and NaN

7 Ansichten (letzte 30 Tage)
Sebastian Ciuban
Sebastian Ciuban am 6 Jun. 2014
Kommentiert: Geoff Hayes am 9 Jun. 2014
Greetings,
So if i have the following:
a = '21414839.260 112535757.19909 2294.184 21414838.320 87690207.10148 1787.672'
Using:
A=sscanf(a,'%f')
Will return:
A =
1.0e+08 *
0.2141
1.1254
0.0000
0.2141
0.8769
0.0000
But if If the last 3 numbers are missing from the line :
a = '21414839.260 112535757.19909 2294.184 '
I want this to be returned:
A =
1.0e+08 *
0.2141
1.1254
0.0000
NaN
NaN
NaN
How can I make this possible?

Akzeptierte Antwort

Geoff Hayes
Geoff Hayes am 6 Jun. 2014
If you know that sscanf of the input string is to return 6 numbers, and A is only populated with three, then you could do the following
A = [A; repmat(NaN,6-length(A),1)];
  16 Kommentare
Sebastian Ciuban
Sebastian Ciuban am 9 Jun. 2014
I don't know how to thank you for your patience and help!
Geoff Hayes
Geoff Hayes am 9 Jun. 2014
It was fun!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Star Strider
Star Strider am 6 Jun. 2014
Use sscanf with two output arguments:
% Known input length
L = 6;
a = '21414839.260 112535757.19909 2294.184'
[A, knt] = sscanf(a, '%f');
A(knt+1:L) = NaN;
produces:
A =
21.4148e+006
112.5358e+006
2.2942e+003
NaN
NaN
NaN
  2 Kommentare
Sebastian Ciuban
Sebastian Ciuban am 6 Jun. 2014
Thank you for your answer!
Star Strider
Star Strider am 6 Jun. 2014
My pleasure!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements 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!

Translated by