csvデータシートの抽出

11 次查看(过去 30 天)
Jo Sasaki
Jo Sasaki 2018-8-16
現在CNN入力層にcsvの一次元データを適用した解析を行っています。
csvを読み込む関数をreadDatastoreCSVと定義し
function data = readDatastoreCSV(filename)
data = csvread(filename);
data = reshape(data, [1 x 1 1]); %xはデータの数
と定義しています。 この関数はcsvファイルのA列のみ使用した関数なのですが、今回使用するcsvファイルのデータシートは1~2401行、A~OI列(縦2401横399)まで存在するcsvを扱います。
このcsvデータのA列、B列...を各々1データとして取り扱いたいのですが、関数readDatastoreでどういった処理を行えばよいでしょうか?

采纳的回答

Hirokazu Tanaka
Hirokazu Tanaka 2018-8-17
「このcsvデータのA列、B列...を各々1データとして取り扱いたい」というところもう少し詳しく教えてください。
CNNということはデータは imageDatastore で処理されてますか?imageDatastore でカスタムの読み込み関数を定義して、csv ファイルを読み込んでいるということでしょうか?
また、csvファイルには 399 列のデータがあり、それぞれを別々の入力データとして学習させることが目的ですか?例えば、1つのファイルを列毎に別々の csvファイル 399個に分割して学習させる必要があるかもしれないところを、カスタムの読み込み関数をうまく定義して避けたいということでしょうか?
  2 个评论
Jo Sasaki
Jo Sasaki 2018-8-17
readDatastoreCSVとは、CNNにおけるimageDatastore内のReadFcn: @readDatastoreImageの部分で画像の代わりにcsvデータを読み込むための関数です。
いままでは加速度計の値を読み込んでいたためエクセルファイルのA列にのみ数値が存在していました。 ですが、波形処理後のデータを入力データとして扱うため今回使用するcsvデータは399列のデータが存在しています。 この399列のデータそれぞれ1列ずつ抽出してを入力層に入力させたいと考えています。
なので、 csvファイルには 399 列のデータがあり、それぞれを別々の入力データとして学習させることが目的ですか?例えば、1つのファイルを列毎に別々の csvファイル 399個に分割して学習させる必要があるかもしれないところを、カスタムの読み込み関数をうまく定義して避けたいということでしょうか?
この目的であっています。 こちらでcsvの分割するのは、データの数が多いのでこの関数の中で完結させたいと考えています。 この方法以外になにかいい手法や提案がありましたら教えていただければありがたいです。
Hirokazu Tanaka
Hirokazu Tanaka 2018-8-17
编辑:Hirokazu Tanaka 2018-8-17
imageDatastore の今の機能では難しそうですね・・。 ファイルの分割自体は比較的単純なスクリプトで実現(読み込んで、1列毎に保存)できると思いますので、まずは分割してしまうのが近道かとは思いますが、どうでしょうか。

请先登录,再进行评论。

更多回答(1 个)

Jo Sasaki
Jo Sasaki 2018-8-17
编辑:Jo Sasaki 2018-8-17
難しそうですか。。。 いまエクセルのマクロで分割コードを実行して、各列のcsvを連続で保存していたのですがどうしても遅さが気になってしまいますね。 こういった各列のデータを連続でcsvとして出力は可能でしょうか? 参考になるドキュメントなどあったら教えていただきたいです。。。
  3 个评论
Jo Sasaki
Jo Sasaki 2018-8-18
実践したところMATLAB約25秒、マクロ10分以上と大きく差がでました。 マクロ自体最適化されたコードかどうかも微妙なのですが、断然MATLABのほうが早そうですね。 ご回答ありがとうございました。
Hirokazu Tanaka
Hirokazu Tanaka 2018-8-18
良かったです。そんなに差が出るもんなんですね。

请先登录,再进行评论。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!