確率
5 views (last 30 days)
Show older comments
現在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 Comments
Accepted Answer
Hernia Baby
on 27 Oct 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 Comment
Akira Agata
on 27 Oct 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
More Answers (0)
See Also
Categories
Find more on Operating on Diagonal Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!