matlab中輸入一組資料怎麼求每個資料的機率
- 2021-09-26
A陣列是個例子,程式你看一下吧,有什麼不懂的再問吧!
clear;clc
A=[1 1 1 1 1 3 3 3 3 5 5 5]
B=unique(A)
c=zeros(size(B));
for i=1:length(B)
c(i)=length(find(A==B(i)));
end
c
p=c。/sum(c)
用蒙特卡洛模擬:
n=10000 %試驗次數,越大越精確
c=zeros(n,1); %儲存每次試驗的結果
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%開始試驗
for k=1:n
%按a的密度分佈對a抽樣
r=rand; %產生一個服從u(0,1)的隨機數;
if r<0。3
a=0;
elseif r<0。3+0。3
a=0。1;
else
a=0。15;
end
%對b抽樣
r=rand; %產生一個服從u(0,1)的隨機數;
if r<0。2
b=0;
elseif r<0。2+0。3
b=0。1;
else
b=0。15;
end
c(k)=a+b;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%試驗結果分析%%%%%%%%%%%%%%%
w=unique(c) %c的所有值
n=length(w);
num=zeros(n,1); %用於儲存c的所有值的頻數
for k=1:n
num(k)=sum(c==w(k));
end
num %頻數
p=num/n %頻率
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%