discretizeの使い方について
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
shoki kobayashi
il 30 Mar 2021
Risposto: Hernia Baby
il 31 Mar 2021
現在discretizeを用いてbinにグループ化使用としています。
その時多次元の各列を1つのデータだと思ってbinにグループ化したいです。
ドキュメンテーションの方法をそのまま用いると
>> a = rand(10):
>> [y, e] = discretize(a,3)
y =
3 1 2 2 2 1 2 3 1 1
3 3 1 1 1 2 1 1 3 1
1 3 3 1 2 2 2 3 2 2
3 2 3 1 2 1 2 1 2 2
2 3 2 1 1 1 3 3 3 3
1 1 2 3 2 2 3 1 1 1
1 2 2 2 2 3 2 1 2 2
2 3 1 1 2 1 1 1 2 2
3 2 2 3 2 2 1 2 1 1
3 3 1 1 2 1 1 2 2 1
e =
0 0.4000 0.8000 1.2000
となります。
これを
y =
3
3
1
1
2
3
2
1
1
1
のようにしたいです。
どのようにすればよいでしょうか。
1 Commento
Shunichi Kusano
il 31 Mar 2021
「その時多次元の各列を1つのデータだと思ってbinにグループ化したい」の部分が具体的にどのような処理になるか、教えていただけますでしょうか。各列に対して1つの出力が出るようになるんだなというのは理解できるのですが、具体的に3311232111の出力が導き出される過程が掴みきれませんでした。
Risposta accettata
Hernia Baby
il 31 Mar 2021
質問の回答
discretizeはあくまで数字をある閾値で分割してグループ分けするだけです。
次元を変えることはできないと思います。
たぶん解決案
おそらくdiscretize関数を使った後に、
それぞれの列ごとに変数を格納したいのだと思い解決案を以下に記します。
処理を行った後にcell型に格納することをお勧めします。
clear
a = rand(10);
[y, e] = discretize(a,3);
for i = 1:length(y(1,:))
bin{i} = y(:,i);
end
bin{1}
上記コードでは1列目だけを出力しています。
ans =
2
1
2
2
2
2
2
1
1
1
おまけ
ちなみにcell型にするとcellfun関数を用いて一括処理することも可能です。
ここでは各列のmaxを算出しています。
>> bin_max = cellfun(@max,bin)
bin_max =
2 3 3 3 3 3 3 2 3 3
cellfunはこちら
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!