textscan を使用して、テキスト ファイルから固定幅 (9 文字) のデータを読み取っています。次の文字列を含む特定の行で Textscan が失敗します。
' 9574865.0E+10 '
これから2つの数字を読みたい:
957486 5.0E+10
問題は次のように再現できます。
dat = textscan(' 9574865.0E+10 ','%9f %9f','Delimiter','','CollectOutput',true,'ReturnOnError',false);
次のエラーが返されます。
Error using textscan
Mismatch between file and format string.
Trouble reading floating point number from file (row 1u, field 2u) ==> E+10
驚いたことに、マイナスを追加すると、エラーにはなりませんが、間違った結果が得られます。
dat = textscan(' -9574865.0E+10 ','%9f %9f','Delimiter','','CollectOutput',true,'ReturnOnError',false);
現在、データ{1}は次のとおりです。
-9574865 0
明らかに、両方のケースが機能する必要があります。私の現在の回避策は、フィールド間にコンマを追加し、テキストスキャンでコンマを区切り文字として使用することですが、それは遅く、良い解決策ではありません。textscan または別の組み込みの (パフォーマンス上の理由から) MATLAB 関数を使用して、この文字列を正しく読み取る方法はありますか?