フィルターのクリア

Using sscanf and NaN

3 ビュー (過去 30 日間)
Sebastian Ciuban
Sebastian Ciuban 2014 年 6 月 6 日
コメント済み: Geoff Hayes 2014 年 6 月 9 日
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?

採用された回答

Geoff Hayes
Geoff Hayes 2014 年 6 月 6 日
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 件のコメント
Sebastian Ciuban
Sebastian Ciuban 2014 年 6 月 9 日
I don't know how to thank you for your patience and help!
Geoff Hayes
Geoff Hayes 2014 年 6 月 9 日
It was fun!

サインインしてコメントする。

その他の回答 (1 件)

Star Strider
Star Strider 2014 年 6 月 6 日
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 件のコメント
Sebastian Ciuban
Sebastian Ciuban 2014 年 6 月 6 日
Thank you for your answer!
Star Strider
Star Strider 2014 年 6 月 6 日
My pleasure!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeWorkspace Variables and MAT-Files についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by