【发布时间】:2015-10-28 19:21:11
【问题描述】:
鉴于我们有:
- x 是二维矩阵,大小为 [numSamples x numFeatures]
- A 是 2d 方阵,大小为 [numFeatures x numFeatures]
- B 是大小为 [1 x numFeatures] 的一维向量
我想在没有循环的情况下评估以下代码:(或以更快的方式)
out = zeros(1,numSamples);
for i = 1:numSamples
res = sum(repmat(B - x(i,:), numSamples, 1)*A.*(x - repmat(x(i,:), numSamples, 1)), 2).^2;
out(i) = var(res);
end
如果您对上述更快的改进有其他建议,也非常欢迎。
【问题讨论】:
-
让我们退后一步。当您在测试数据上运行此代码时,它的速度有多快?你对时间不满意吗?
-
很遗憾没有。对于大量样本,它变得非常慢。
-
除了上面的评论之外,您是否尝试实施特定的公式?
-
没什么名气。这是整个公式的简化部分,其余的是规范化表达式,我觉得包括它们只会使事情复杂化。我觉得如果你能帮我解决这个简化的表达式,我确信我可以推断出更一般的表达式。
标签: matlab vectorization