Bu "senaryo" matrisinin aktarımı için unique
'u kullanabilir ve işlev çağrısının üçüncü çıktısını inceleyebilirsiniz. Üçüncü çıktı, matriste görülen her olası benzersiz duruma benzersiz bir kimlik atar. Tüm satırları tek bir örnek olarak değerlendirmek için 'rows'
bayrağını da belirtmek istersiniz. 'rows'
belirtmezseniz, matrisinizdeki her bir öğe, tüm sütunun (veya dönüştürülen matrisin satırının) tek bir örnek olmasını istediğiniz tek bir örnek olarak kabul edilir. Ayrıca, sütunlar boyunca unique
ile çalışamıyoruz maalesef bunun yerine matrisi dönüştürmeniz gerekiyor.
Ayrıca, her bir kimliğin her bir benzersiz olayla nasıl eşleştiğini incelemek için de ilk çıktıyı da isteyeceksiniz. Çıktıların sütunlarla eşleşmesi için bu çıkış değişkenini sonuna kadar transpoze ettiğinizden emin olun. Daha sonra her bir "senaryonun" ortaya çıkışını belirlemek için histc
veya histcounts
'u kullanabilir ve böylece bir eşdeğer durumun üstlenilmesi olasılığını bulabilirsiniz.
İşte hızlı bir örnek. Biz 7 etkinlik varken senaryonun boyutluluğu 3 olduğunu görüyoruz
>> A = [0 0 0; 1 1 1; 1 0 0; 0 0 1; 0 0 0; 0 0 1; 1 1 1].'
A =
0 1 1 0 0 0 1
0 1 0 0 0 0 1
0 1 0 1 0 1 1
: Ben A
saklanan bu olaylar matrisi olduğunu varsayalım. Ben unique
ile söylediklerini yapmak verir:
>> [un, ~, id] = unique(A.', 'rows'); %'
>> un = un.' %'
un =
0 0 1 1
0 0 0 1
0 1 0 1
>> id
id =
1
4
3
2
1
2
4
Biz kolon [0; 0; 0]
ID 1 ait olduğunu görebiliyorum, kolon kimliği 2-[0; 0; 1]
harita, kolon kimliği 3'e [1; 0; 0]
harita ve kimliği 4'e nihayet [1; 1; 1]
haritalar. un
tüm benzersiz sütunları saklarken, id
bize bu eşleştirmeyi sağlar. id
değişkenine başvurup yukarıda gördüğümüz haritayı incelediğinizde, her bir sütunu karşılık gelen kimlikleriyle değiştirebilirsiniz.
Biz daha sonra her oluşum olasılıkları belirleyebilir:
N = size(un,2); %// Get total number of unique scenarios
M = size(A,2); %// Get total number of scenarios
prob = histc(id, 1 : N)/M; %// Finding probabilities
Biz alıyorum:
>> prob
prob =
0.2857
0.2857
0.1429
0.2857
Bu bizim verilerle kabul eder. [0; 0; 0]
, [0; 0; 1]
ve sütunları için, her sütunun iki oluşumu vardır ve bu nedenle olasılıklar 2/7 = 0.2857
olur. [1; 0; 0]
'un diğer sütununun yalnızca bir oluşumu vardır ve bu nedenle olasılık 1/7 = 0.1429
olur. senin matris varsayarak bu nedenle kolayca hamur kopyalayabilirsiniz listeleme tam kodu için
,
A
depolanır:
[un, ~, id] = unique(A.', 'rows'); %'// Assigning each event a unique ID
un = un.'; %'// Transpose to ensure compatibility
N = size(un,2); %// Get total number of unique scenarios
M = size(A,2); %// Get total number of scenarios
prob = histc(id, 1 : N)/M; %// Finding probabilities