確率
조회 수: 7 (최근 30일)
이전 댓글 표시
現在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
채택된 답변
Hernia Baby
2021년 10월 27일
インデックスから個数を出して、それを全体で割ってあげると可能です。
前準備
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
Akira Agata
2021년 10월 27일
+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
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!