確率
9 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
現在1×100のデータがありその中身は、0~7のいずれかの数字になっています。
100個の数字のうち0の箇所がいくつかあります。
0の数字がある割合は100個のうちいくつか
1の数字の割合・・・これを7個分の割合を出したいです。
例)1 2 2 0 2 3 0 2 2 1
上記の2の割合は0.5
可能でしたらスクリプトを共有していただきたいです。
よろしくお願いいたします。
下記のdata1は1×100のデータ出すまでのスクリプトになります。
rng(1,'philox')
X = randi([0 1], 3, 3, 100);
% 対角部分は同じ数字になるようにする
a = tril(ones(3), -1) == 1;
a = repmat(a, 1, 1, 100);
X(a) = 0;
X = X + permute(X,[2 1 3]);
%対角線部分は全て1とする
a = eye(3) == 1;
a = repmat(a, 1, 1, 100);
X(a) = 1;
A = reshape(permute(X, [2 1 3]), 1, [], 100);
B = squeeze(A)';
data=B(:,[4,7,8]);
data1= data * 2.^(0:2).'
0 Commenti
Risposta accettata
Hernia Baby
il 27 Ott 2021
インデックスから個数を出して、それを全体で割ってあげると可能です。
前準備
rng(1,'philox')
X = randi([0 1], 3, 3, 100);
% 対角部分は同じ数字になるようにする
a = tril(ones(3), -1) == 1;
a = repmat(a, 1, 1, 100);
X(a) = 0;
X = X + permute(X,[2 1 3]);
%対角線部分は全て1とする
a = eye(3) == 1;
a = repmat(a, 1, 1, 100);
X(a) = 1;
A = reshape(permute(X, [2 1 3]), 1, [], 100);
B = squeeze(A)';
data=B(:,[4,7,8]);
data1= data * 2.^(0:2).';
計算
for i = 0:7
P(i+1)=sum(data1==i)/numel(data1);
end
P
1 Commento
Akira Agata
il 27 Ott 2021
+1
関数 accumarray をうまく使って、以下のようにしても可能です。
count = accumarray(data1+1,1);
P = count/numel(data1);
>> P
P =
0.1500
0.1400
0.1000
0.1000
0.1900
0.1000
0.1300
0.0900
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!