【发布时间】:2016-08-12 19:16:41
【问题描述】:
我正在寻找一种快速灵活的方法来在 Matlab 中计算以下内容,而无需使用循环:
c = 1:5;
A = reshape(1:5^3,5,5,5);
res= c(1)*A(:,:,1)+...+c(5)*A(:,:,5)
我认为,与
合作sum(A,3)
只要我能够沿第三维执行乘法,这可能是一个不错的方法。一种解决方案(但带有循环)是:
val = zeros(length(c),length(c))
for i = 1:length(c)
val = val+c(i)*A(:,:,i)
end
我只是想知道这是否可以通过一种更简单(更优雅)的方式来避免循环。
【问题讨论】:
-
把你的问题澄清一点。你想要多个什么?
-
我想在一天结束时获得 res.. 所以换句话说,我想将整个矩阵 A(:,:,1) 与标量 c(1) 相乘,整个矩阵 A(:,:,2) 与标量 c(2) 等等......最后我想总结这五个矩阵中的每一个,这样 res 就是一个矩阵。
标签: matlab multidimensional-array vectorization matrix-multiplication