[問題] 關於陣列mismatch的問題 已回收
我正在實作Gaussian mixture learning
程式裡面包含了下面這段code (只有寫到E step)
randorder = randperm(m);
mean = zeros(k,n);
for i=1:k
mean(i,:)=m_in(randorder(i),:);
end
%the random chosen k means(μi=centroid(i))
sigma=zeros(k,n,n);
for i=1:k
sigma(i,:,:)=cov(m_in);
end
%the covariances
pi_k=ones(1,k);
pi_k=pi_k./k;
garma_z= zeros(m,k);
for i=1:m
for j=1:k
garma_z(i,j) = pi_k(j)*mvnpdf(m_in(i,:),mean(j,:),sigma(j,:,:));
sum_tmp=0;
for l=1:k
sum_tmp=sum_tmp + pi_k(l)*mvnpdf(m_in(i,:),mean(l,:),sigma(l,:,:));
end
garma_z(i,j)=garma_z(i,j)/sum_tmp;
end
end
%Evaluate the responsibilities using the current parameter values
其中m_in是我的輸入值
m是資料量,k是要把資料分成多少類,n是每筆資料的feature數量
但是問題是在使用mvnpdf的那行會出現dimension mismatch的錯誤
最奇怪的地方是
我如果把sigma變成二維陣列並這樣做
sigma=cov(m_in);
mvnpdf(m_in(i,:),mean(j,:),sigma)
這樣的話就沒有錯誤了
但是因為我需要計算K個sigma的關係,一定要宣告成三維才行
想請問一下為什麼會這樣呢?
sigma(j,:,:)應該也是一個二維陣列不是嗎?
為什麼改成這樣就不能用了呢?
是我的語法有誤,還是處理的時候漏了什麼呢?
先感謝各位的回答
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 70.162.57.56
※ 編輯: hcl012 來自: 70.162.57.56 (04/17 16:05)
推
04/17 16:04, , 1F
04/17 16:04, 1F
→
04/17 16:04, , 2F
04/17 16:04, 2F
→
04/17 16:11, , 3F
04/17 16:11, 3F