tebleにフィルターをかけるには
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 使用
0 Kommentare
Akzeptierte Antwort
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
Weitere Antworten (1)
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の生成コード)を入れていただけると助かります。
ご参考まで。
Siehe auch
Kategorien
Mehr zu Logical 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!