tebleにフィルターをかけるには

23 Ansichten (letzte 30 Tage)
chihiro kanada
chihiro kanada am 2 Jun. 2019
Kommentiert: Kenta am 3 Jun. 2019
##やりたいこと
MatlabでCSVを取り込み、データセットに分けて解析をしたいと思っていますが、
データセットに分けるところで苦戦をしています。
具体的には以下のような操作を考えています。
db =
date color name field number
______ ______ ____ ___ __
2016/10/13 グリーン tanaka 1号 3.4848
2016/10/17 グリーン tanaka 1号 17.576
2016/10/22 グリーン tanaka 2号 14.697
2016/10/25 グリーン tanaka 2号 28.939
2016/10/29 グリーン tanaka 2号 56.818
.....(略)
fieldlst = [1号, 2号, 3号.....]
while fieldlst(i)
  sample = 「field == fieldlst(i)となるような行だけを抽出したもの」
  .....分析処理......
  i = i+1
↑上記"sample"の作り方がわかりません。
##試したこと
公式ドキュメントのtableは参照しましたが、該当ページを見つけることができませんでした。
*公式ドキュメント
https://jp.mathworks.com/help/matlab/tables.html?s_tid=CRUX_lftnav
##補足情報(FW/ツールのバージョンなど)
R2019 使用

Akzeptierte Antwort

Kenta
Kenta am 2 Jun. 2019
clear;clc
load tbl
field=tbl.field;
for i=1:max(field)
field_idx=find(field==i);
tbl_extracted=tbl(field_idx,:);
name=sprintf('%d_data.mat',i);
save(name, 'tbl_extracted')
end
上の具体例の表に似たものをtblとして保存しています。
tbl.(ドット)という形でfieldにアクセスして、ループ内で、条件に合うものを探していけばよいと思います。
詳細な形式がわからないので、このまま使えるかは不明ですが、おおよそこのような形で望むデータが得られると思います。
  2 Kommentare
chihiro kanada
chihiro kanada am 2 Jun. 2019
詳細が不明瞭にもかかわらず、アドバイスいただきありがとうございます!!
インデックスを作って、条件に合うものを抽出するということですね。
Kenta
Kenta am 3 Jun. 2019
はい、その通りです。お役に立てて幸いです。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Yoshio
Yoshio am 2 Jun. 2019
こちらが参考になるかと思います。
これを踏まえた上で、以下のようなやり方では、いかがでしょうか。
fieldlst = [1号, 2号, 3号.....]
for i = 1:length(fieldlst)
j = find(db.field == fieldlst(i)) % dbでfieldlst(i)に該当する 行を見つける(複数)
for k = 1:length(j)
sample = db(j(k),:) % ここでは該当する一行毎の処理を想定
.....分析処理......
end % of k
end % of i
dbのデータを作っていないので、間違いがあるかも知れません。
次回ご質問際は、簡単に検証できるようなダミーコード(今回ですとdbの生成コード)を入れていただけると助かります。
ご参考まで。
  1 Kommentar
chihiro kanada
chihiro kanada am 2 Jun. 2019
初心者にて、ダミーコードを付けるという考えに至りませんでした^^;
次回以降、気を付けたいと思います。
汎用性の高そうな手法をご教示いただきありがとうございます。
Itakuraさんの案と合わせて使わせていただきますm(__)m

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB 入門 finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!