In an effort to reduce usage of loops in my Matlab code, I'm trying to use elementwise multiplication to compute matrix values. Following is the code I initially had
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
With reference to a similar question. Following is my attempt
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);
However, as required for elementwise operations, how do I ensure that the multiplcation is done with matrices of same dimensions?
prior,expDocandexpWordare all 2D arrays, so you can't use element-wise multiplication to get a 3D array. Think carefully about what is being multiplied together. - David