matlab を使用してマトリックスに csv ファイルをロードしたいと考えています。
次のコードを使用しました。
formatSpec = ['%*f', repmat('%f',1,20)];
fid = fopen(filename);
X = textscan(fid, formatSpec, 'Delimiter', ',', 'CollectOutput', 1);
fclose(fid);
X = X{1};
csv ファイルには 1000 行と 21 列があります。ただし、生成された行列 X には 2000 列と 20 列があります。
'\t' や '\n' などのさまざまな区切り文字を使用してみましたが、変わりません。X を表示すると、正しい csv ファイルが表示されますが、2 行ごとに 0 の余分な行が表示されることに気付きました。
「HeaderLines」パラメータも追加してみました:
`X = textscan(fid, formatSpec1, 'Delimiter', '\n', 'CollectOutput', 1, 'HeaderLines', 1);`
しかし今回は、結果は空の行列です。
何か不足していますか?
編集:@horchler
「test.csv」ファイルは問題なく読み取ることができました。各行の終わりに余分なコンマはありません。Pythonスクリプトを使用してcsvファイルを生成しました。別のcsvファイルの行を読み取り、これらを変更し(一部を選択して算術演算を実行)、別のcsvファイルに新しい行を書き込みました。これを行うために、最初のcsvファイルの各要素をfloatに変換しました...
新しい編集: textscan のドキュメントをより注意深く読むと、入力ファイルがテキストファイルでも str でもなく、float を含むファイルであることが問題だと思います
編集:ファイルから3行
0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,2 1,-0.3834323,-1.92452324171,- 1.2453254094,0.43455627857,-0.24571121,0.4340657,1,1,0,0,0,0.3517396202,1,0,0,0.3558122164,0.2936975319,0.4105696144,0,1,0 -0.78676,-1.09767,0.765554578,0.76579043,0.76, 1,0,0,323124.235998,1,0,0,0,1,0,0,1,0,0,0,2