- ベストアンサー
MATLAB(マトラボ)とcsvファイルについて
マトラボで、文字列を含む、csvファイルを読み込み、データをプログラムに使用したいのですが、どうしたらいいですか? csvread('filename')ではできませんでした。 どなたか、ご教授くださいませ。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Excelで読み込んで、xlsファイルにセーブして、 xlsreadでmatlabに読み込むとか。 http://dl.cybernet.co.jp/matlab/support/manual/r13/toolbox/matlab/ref/?/matlab/support/manual/r13/toolbox/matlab/ref/xlsread.shtml
その他の回答 (2)
- sgwjn
- ベストアンサー率70% (47/67)
#2です。 先ほどの手順(4)の部分で、読み込んだのが数値しかないと分かっている行に対してなら、 str = strrep(line, ',', ' ') data = sscanf(str, '%f') と書いた方がシンプルで良いかもしれませんね。
お礼
何度もご回答をいただき、本当にありがとうございます。
- sgwjn
- ベストアンサー率70% (47/67)
(1)fid = fopen(path, 'r')でファイルを開く (2)line = fgets(fid)でファイルから1行取得 (3)index = findstr(line, ',')でカンマ位置を取得 (4)カンマ位置でlineを分割 文字列はそのまま取得、数値はstr2num()でキャストしてから取得 例)カンマがN-1個ある場合 data1 = line(1:(index(1) - 1)) data2 = line((index(1) + 1):(index(2) - 1)) data3 = line((index(2) + 1):(index(3) - 1)) : dataN = line((index(N-1) + 1):end) (5)手順(2)~(4)をEOFまで繰り返す (6)fclose(fid)でファイルを閉じる このような手順で大丈夫だと思います。 ただし、ファイル構造が分かっていること、区切り文字以外でカンマが使用されていないことが条件です。 まぁ、構造が分からないファイルからデータを読み込むことなんてできませんが。
お礼
こちらからのご連絡が遅くなりまして、大変失礼いたしました。 今回は、ご丁寧なご回答、誠にありがとうございました。
お礼
この度は、ご丁寧にご回答を頂戴いたしまして、誠にありがとうございました!!!