discretizeの使い方について

4 次查看(过去 30 天)
shoki kobayashi
shoki kobayashi 2021-3-30
現在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 个评论
Shunichi Kusano
Shunichi Kusano 2021-3-31
「その時多次元の各列を1つのデータだと思ってbinにグループ化したい」の部分が具体的にどのような処理になるか、教えていただけますでしょうか。各列に対して1つの出力が出るようになるんだなというのは理解できるのですが、具体的に3311232111の出力が導き出される過程が掴みきれませんでした。

请先登录,再进行评论。

采纳的回答

Hernia Baby
Hernia Baby 2021-3-31
質問の回答
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 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB 入門 的更多信息

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!