Removendo quatro loops aninhados no Matlab

Eu tenho os seguintes quatro loops aninhados no Matlab:

timesteps = 5;
inputsize = 10;
additionalinputsize = 3;
outputsize = 7;

input = randn(timesteps, inputsize);
additionalinput = randn(timesteps, additionalinputsize);
factor = randn(inputsize, additionalinputsize, outputsize);

output = zeros(timesteps,outputsize);
for t=1:timesteps
    for i=1:inputsize
        for o=1:outputsize
            for a=1:additionalinputsize
                output(t,o) = output(t,o) + factor(i,a,o) * input(t,i) * additionalinput(t,a);
            end
        end
    end
end

Existem três vetores: um vetor de entrada, um vetor de entrada adicional e um vetor de saída. Todos estão conectados por fatores. Todo vetor tem valores em intervalos de tempo determinados. Preciso da soma de todas as entradas combinadas, entradas e fatores adicionais a cada passo dado. Mais tarde, preciso calcular da saída para a entrada:

result2 = zeros(timesteps,inputsize);
for t=1:timesteps
    for i=1:inputsize
        for o=1:outputsize
            for a=1:additionalinputsize
                result2(t,i) = result2(t,i) + factor(i,a,o) * output(t,o) * additionalinput(t,a);
            end
        end
    end
end

Em um terceiro caso, preciso do produto de todos os três vetores somados em cada passo de tempo:

product = zeros(inputsize,additionalinputsize,outputsize)
for t=1:timesteps
    for i=1:inputsize
        for o=1:outputsize
            for a=1:additionalinputsize
                product(i,a,o) = product(i,a,o) + input(t,i) * output(t,o) * additionalinput(,t,a);
            end
        end
    end
end

Os dois trechos de código funcionam, mas são incrivelmente lentos. Como posso remover os loops aninhados?

Editar: valores adicionados e pequenas alterações alteradas para que os trechos sejam executáveis

Edit2: Adicionado outro caso de uso

questionAnswers(1)

yourAnswerToTheQuestion