1

50たとえば行を含む.csvファイルがあります。

各行の先頭には、次の形式のファイル名があり、001_02_03.bmpその後にコンマで区切られた値が続きます。このようなもの :

001_02_03.bmp,20,30,45,10,40,20

データから最初の列を読み取る方法を教えてもらえますか?

2列目以降のデータの取得方法を知っています。私はcsvreadこのような機能を使用していますX = csvread('filename.csv', 0, 1);。同じ方法で最初の列を読み込もうとすると、csvreadは文字列形式をサポートしていないというエラーが出力されます。

4

1 に答える 1

2

使用textscan、すなわち:

fid1 = fopen(csvFileName);
X = textscan(fid1, '%s%f%f%f%f%f%f', 'Delimiter', ',');
fclose(fid1);
FirstCol = X{1, 1};

もう少し詳しく?csvread純粋な数値データでのみ機能するため、.bmpまたはアンダースコアを使用してデータを取得するために使用することはできません。したがって、を使用しますtextscan。変な見た目のフォーマット文字列入力は、列が順番にstring型であり、次の6列がdouble型textscanであると言っているだけです(または、整数データ型を反映するようにこれを変更することもできます-個人的には、私が個人的に気にすることはめったにありません。データの量が膨大であるか、浮動小数点の精度が問題です)。%s%f%f%f%f%f%f

最初の列を取得して残りを無視したい場合は、フォーマット文字列を。に置き換えることができます%s% %*[^\n]。最後に、csvファイルにヘッダー行がある場合は、へのHeaderLinesオプションの入力を使用してスキップできますtextscan

于 2012-10-02T08:22:17.093 に答える