我试图向量化某个加权总和,但无法弄清楚如何去做。我在下面创建了一个简单的最小工作示例。我猜这个解决方案涉及到bsxfun或重塑和克罗内克产品,但我仍然没有设法使它工作。三重加权总和
rng(1);
N = 200;
T1 = 5;
T2 = 7;
T3 = 10;
A = rand(N,T1,T2,T3);
w1 = rand(T1,1);
w2 = rand(T2,1);
w3 = rand(T3,1);
B = zeros(N,1);
for i = 1:N
for j1=1:T1
for j2=1:T2
for j3=1:T3
B(i) = B(i) + w1(j1) * w2(j2) * w3(j3) * A(i,j1,j2,j3);
end
end
end
end
A = B;
对于二维情况,有一个智能答案here。
你需要推广?因为如果是这样的话,我会把你的N,T1,T2,T3换成一个数组。 –
我其实只是想要三维的情况。但泛化可能对其他人有用:) – phdstudent
以下概括:) –