Это простой вопрос, я не вижу лучшего ответа, и, возможно, кто-то другой сможет! Вот код:
Пример переменных
nSim = 3000;
nRow = 10000;
data = zeros(1, 5, nRow);
data (:, 1:4, :) = rand(4, nRow)*0.5; % 4 columns of duration values
data (:, 5, :) = 1000; % 1 column of actual value
basis.increaseRate = 1 + (rand(nSim, 4)*0.1);
Пример расчета
dataWithSim = repmat(data(:, 1:4,:),nSim, 1, 1);
increaseFactors = bsxfun(@power, basis.increaseRate, dataWithSim);
Values = bsxfun(@times, data(:,5,:), prod(increaseFactors,2));
Необходимость повторного матирования кажется неправильной, но я не вижу способа избежать этого.
фактически я делаю увеличение ^ данных, и мне действительно не хотелось перебирать два измерения (строки sims
или data
). Фиктивные данные могут быть упорядочены любым способом, который я выберу, но выходные значения должны быть матрицей nSim
на nRow
.
Любые идеи приветствуются. Спасибо.