How to read text line and assign value to variable?

5 ビュー (過去 30 日間)
John
John 2018 年 10 月 15 日
編集済み: Stephen23 2018 年 10 月 16 日
Many tech files have header like this:
int display_order = 1;
int bigendian = 0;
float imagescale = 1.000000000;
float psi = 359.9580;
float phi = 0.0000;
float theta = 90.0000;
float orientation[] = {-1.0000,0.0007,-0.0000,-0.0000,-0.0000,1.0000,0.0007,1.0000,0.0000};
How can each line be assigned to the variable with value (after fgetl)?
For example: the line float
psi = 359.9580;
becomes
psi = float(359.9580);
  1 件のコメント
dpb
dpb 2018 年 10 月 15 日
float is not valid Matlab data type; either single or double; double is default and Matlab also is un-typed for numeric classes; integers are by default stored as double as well.
You could almost turn it into an m-file as is simply by dropping the first word of each line and rewriting; the empty [] in the array are the only thing preventing that in that sample although the curlies "{}" instead of parenetheses would create a cell array instead of a base numeric array.

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

採用された回答

KSSV
KSSV 2018 年 10 月 16 日
fid = fopen('data.txt','r') ;
S = textscan(fid,'%s','delimiter','\n') ;
fclose(fid) ;
% GEt the line where psi lies
S = S{1} ;
idx = contains(S,'psi') ;
S = S(idx) ;
S = strsplit(S{1}) ;
psi = str2num(S{4})
  2 件のコメント
John
John 2018 年 10 月 16 日
Thanks, KSSV!
How can we assign the 'psi' which it may not be known ahead as variable name 'psi' (and all other names) ?
Stephen23
Stephen23 2018 年 10 月 16 日
編集済み: Stephen23 2018 年 10 月 16 日
@John: In general it is a bad idea to magically access a variable name. Read this to know why:
You could write a function and use inputname.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeText Files についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by