你可能打算做
b = a.^2;
代替
b = a^2;
如果没有.
,则乘法是“矩阵乘法”(实际上,mpower
顾名思义,它实际上是矩阵的求幂);与.
,它是“逐个元素的乘法”。我猜矩阵乘法对分布式矩阵不起作用(根本?) - 另一方面,根据这个链接,它实际上是隐式发生的,不需要分布。
它留下了一个问题:您打算进行矩阵乘法还是逐元素乘法?
编辑
您在评论中指出您提出问题的原因是您正在评估一个函数:
function g = sigmoid2(z)
g = distributed.zeros(size(z));
%g = arrayfun(@(x) (1 / (1+(exp^-(x)))),z);
for idx = 1: numel(z)
g(idx) = 1 / (1+ (exp(1).^-z(idx)));
end
end
并且想知道是否有更快的方法来做到这一点。确实有。不要循环遍历 idx,而是使用单矩阵运算
g = 1./(1+exp(-z));
作为您的函数定义 - 它会快很多倍。Matlab 功能强大,但执行每一行都会产生很多开销——所以如果可以的话,请避免循环。了解 Matlab 中的矢量化(查找)。分发并不总能加快速度——这取决于矩阵的操作和大小。使用分析工具找出哪条线路花费的时间最多 - 然后使用这些知识来集中精力加快速度。祝你好运!