【发布时间】:2014-10-28 03:05:45
【问题描述】:
为了减少我的 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都是 2D 数组,因此您不能使用逐元素乘法来获得 3D 数组。仔细考虑相乘的是什么。 -
好的,那么你将如何优化 for 循环?
标签: matlab