【发布时间】:2018-10-17 18:51:43
【问题描述】:
我有一个关于 4 维对象乘以 1 维对象的问题。 实际上,我有一个大小为 (15,15,3,5) 的 4D 对象。 我想通过使用 5x1 向量来乘以第 4 维,将最后一个维度折叠为 1。然后我想使用挤压来获得 (15,15,3) 大小的对象,再次将其乘以 3x1 向量,留下我使用 15x15 矩阵。
我可以循环执行此操作,但这非常昂贵。谁能给我建议如何在没有循环的情况下做到这一点?
现在循环:
expectationCalc = reshape(mValueFunction(age+1, :, :, :, :), nGridAssets, nGridHumanCapital, nNetInterestRate, nShockstoHumanCapital);
for i = 1:nGridAssets
for j = 1:nGridHumanCapital
expectation(i,j) = mTransitionNetInterestRate(nNetIntRate, :)*(squeeze(expectationCalc(i,j,:,:))*mTransitionShockHumanCapital(ShockHcapital, :)');
end
end
【问题讨论】:
-
您可以通过预分配
expectation并在内部循环中循环第一个维度 (i) 来加速循环。
标签: matlab matrix matrix-multiplication