爲了減少Matlab代碼中循環的使用,我嘗試使用元素乘法來計算矩陣值。以下是我最初的代碼Matlab基於元素的矩陣乘法
for doc = 1:docs
for word = 1:words
den =0;
for topic = 1:topics
posterior(topic,doc,word) =prior(1,topic)*expDoc(doc,topic)*expWord(word,topic);
den = den + posterior(topic,doc,word) ;
end
end
end
參照similar問題。以下是我的嘗試
posterior(1:topics,1:docs,1:words) = prior(1,1:topics).*expDoc(1:docs,1:topics).*expWord(1:words,1:topics);
den = sum(posterior(:,:,:));
posterior(:,:,:) = posterior(:,:,:)/(den);
但是,按照元素操作的要求,如何確保乘法使用相同維數的矩陣完成?
你的嘗試不會工作,因爲'prior','expDoc'和'expWord'都是二維數組,所以你不能使用元素乘法來獲得一個3D數組。仔細想想什麼是在一起倍增。 – David 2014-10-28 03:33:07
好吧,那麼如何優化for循環呢? – 2014-10-28 03:50:18