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

조회 수: 18 (최근 30일)
chihiro kanada
chihiro kanada 2019년 6월 2일
댓글: Kenta 2019년 6월 3일
##やりたいこと
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 使用

채택된 답변

Kenta
Kenta 2019년 6월 2일
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
chihiro kanada
chihiro kanada 2019년 6월 2일
詳細が不明瞭にもかかわらず、アドバイスいただきありがとうございます!!
インデックスを作って、条件に合うものを抽出するということですね。
Kenta
Kenta 2019년 6월 3일
はい、その通りです。お役に立てて幸いです。

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Yoshio
Yoshio 2019년 6월 2일
こちらが参考になるかと思います。
これを踏まえた上で、以下のようなやり方では、いかがでしょうか。
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
chihiro kanada
chihiro kanada 2019년 6월 2일
初心者にて、ダミーコードを付けるという考えに至りませんでした^^;
次回以降、気を付けたいと思います。
汎用性の高そうな手法をご教示いただきありがとうございます。
Itakuraさんの案と合わせて使わせていただきますm(__)m

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 MATLAB 入門에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!