Matlab 矢量化算术运算

Matlab 矢量化算术运算,matlab,vectorization,Matlab,Vectorization,我试图通过在Matlab中将一些迭代转换为矩阵运算来提高代码的性能。其中之一是下面的代码,我需要弄清楚如何避免在操作中使用循环 这里gamma_ic和bow是二维矩阵。 c&z是从外部迭代设置的变量 for z=1:maxNumber, for c=1:K, n = 0; for y2=1:number_documents, n = n+(gamma_ic(y2,c)*bow(y2,z)); end

我试图通过在Matlab中将一些迭代转换为矩阵运算来提高代码的性能。其中之一是下面的代码,我需要弄清楚如何避免在操作中使用循环

这里gamma_ic和bow是二维矩阵。 c&z是从外部迭代设置的变量

for z=1:maxNumber,
    for c=1:K,
        n = 0;
        for y2=1:number_documents,
            n = n+(gamma_ic(y2,c)*bow(y2,z));
        end
        mu(z,c) = n / 2.3;
    end
end
谢谢你的帮助


编辑。添加了c和z的循环。迭代一直进行到gamma_ic和bow中的最大指数。添加了mu,这是另一个二维矩阵,用于显示n的用法。

这应该可以帮助您获得
mu
,这似乎是所需的输出-

mu = bow(1:number_documents,1:maxNumber).'*gamma_ic(1:number_documents,1:K)./2.3

c
z
是否分别迭代了
gamma_ic
bow
的所有可能索引?我认为值得展示它们是如何迭代的,以及如何使用
n
。此外,如果您共享
c
z
的循环代码,我们可能也能帮助您摆脱这些循环,那么您对向量化的任何想法或理解(对代码进行向量化可能很容易,也可能很难,但最好能理解是什么阻碍了您,并尝试解决这个问题)。但是对于给定的代码,您可以尝试-
n=sum(gamma_ic(1:number_文档,c)。*bow(1:number_文档,z))
我已经用外部循环的相关部分更新了代码。您得到的确切信息是什么或如何得到的
maxNumber
K
?maxNumber和K是传递给函数的常量我有点困惑,尺寸是否同意执行元素操作?请注意,
K
可能不等于
maxNumber
。编辑:明白了,我想这就是你为什么要转置的原因吧?一开始就忽略了它