確率
조회 수: 5 (최근 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개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!