データはこんな感じ
5.1,3.5,1.4,0.2,Iris-setosa
これを使って読みながら
data = fscanf(file, '%f,%f,%f,%f,%s');
data
float と string の組み合わせではなく、float の配列であることが判明しました。では、txt からこのデータを読み取るにはどうすればよいでしょうか。
データはこんな感じ
5.1,3.5,1.4,0.2,Iris-setosa
これを使って読みながら
data = fscanf(file, '%f,%f,%f,%f,%s');
data
float と string の組み合わせではなく、float の配列であることが判明しました。では、txt からこのデータを読み取るにはどうすればよいでしょうか。
fscanf の Matlab ドキュメントから:
出力引数
A: 配列です。
フォーマットに以下が含まれている場合:
数値指定子のみ。A は数値です。...文字または文字列指定子 (%c または %s) のみ。A は文字配列です。...
数値指定子と文字指定子の組み合わせ。A は double クラスの数値です。MATLAB は、各文字を対応する数値に変換します。この変換は、形式がすべての数値を明示的にスキップする場合でも発生します (たとえば、'%*d %s' の形式)。
したがって、最善の策は、すべてを文字列として読み取り、str2num や str2double などを使用して数値文字列を数値に変換することです。
または、浮動小数点値を実際に格納する 4 つの浮動小数点値があり、残りは文字列の ASCII 数値を格納することがわかっているため、いつでもデータを分割し、文字列であることがわかっている部分を文字。何かのようなもの:
flt = データ (1:4); str = char(データ(5:終了));