Удаление четырех вложенных циклов в Matlab

У меня есть следующие четыре вложенных цикла в 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

Существует три вектора: один входной вектор, один дополнительный входной вектор и выходной вектор. Все они связаны факторами. Каждый вектор имеет значения на заданных временных шагах. Мне нужна сумма всех объединенных входов, дополнительных входов и факторов на каждом заданном временном шаге. Позже мне нужно рассчитать от вывода до ввода:

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

В третьем случае мне нужно, чтобы произведение всех трех векторов суммировалось по каждому временному шагу:

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

Два фрагмента кода работают, но невероятно медленные. Как я могу удалить вложенные циклы?

Редактировать: Добавлены значения и изменены второстепенные вещи, чтобы фрагменты были исполняемыми

Edit2: добавлен другой вариант использования

Ответы на вопрос(1)

Ваш ответ на вопрос