Использование Parfor для создания матрицы из вектора

Я новичок в Matlab и буду признателен за любую возможную помощь!

Я запускаю симуляцию, и поэтому результаты меняются с каждым прогоном симуляции. Я хочу собрать результаты для анализа.

Например, во время первого прогона моделирования уровень фактора свертывания плазмы может изменяться в течение 5 часов, как таковой:
R (1) = [1,0 0,98 0,86 0,96 0,89]

Во втором прогоне уровни в каждый период времени могут немного отличаться, например.
R (2) = [1,0 0,95 0,96 0,89 0,86]

Я хотел бы (возможно, с помощью функции parfor) для создания матрицы, например.
R = [1,0 0,98 0,86 0,96 0,89
1,0 0,95 0,96 0,89 0,86]

Я столкнулся с проблемами, начиная от «В назначении A (I) = B, количество элементов в B и я должен быть одинаковым» до получения матрицы нулей или единиц (в зависимости от того, что я использую для предварительного распределения).

Мне нужно будет запустить симуляцию около 10000 раз, чтобы собрать значимое количество результатов.

Кто-нибудь может подсказать, как этого можно достичь? Подробное руководство или (полу) полный код был бы очень признателен за кого-то нового в Matlab, как я.

Заранее спасибо!

Это мой настоящий код, и, как вы можете видеть, есть 4 переменные, которые меняются в течение 744 часов (31 день), которые я хотел бы собрать по отдельности:

Iterations = 10000;
PGINR = zeros(Iterations, 744);
PGAmount = zeros(Iterations, 744);
CAINR = zeros(Iterations, 744);
CAAmount = zeros(Iterations, 744);

for iii = 1:Iterations
[{PGINR(iii)}, {PGAmount(iii)}, {CAINR(iii)}, {CAAmount(iii)}] = ChineseTTRSimulationB();
end

filename = 'ChineseTTRSimulationResults.xlsx';
xlswrite(filename, PGINR, 2)
xlswrite(filename, PGAmount, 3)
xlswrite(filename, CAINR, 5)
xlswrite(filename, CAAmount, 6)

0

Решение

Вы ищете что-то подобное?
Я немного упростил ваш код для лучшего понимания и добавил несколько фиктивных данных, функцию.

main.m

Iterations  = 10;
PGINR       = zeros(Iterations, 2);
PGAmount    = zeros(Iterations, 2);

%fake data
x = rand(Iterations,1);
y = rand(Iterations,1);

parfor iii = 1:Iterations
[PGINR(iii,:), PGAmount(iii,:)] = ChineseTTRSimulationB(x(iii), y(iii));
end

ChineseTTRSimulationB.m

function [PGINRi, PGAmounti] = ChineseTTRSimulationB(x,y)
PGINRi       = [x + y, x];
PGAmounti    = [x*y, y];
end
0

Другие решения

сохранить каждый результат parfor в ячейках и объединить их позже.

Iterations = 10000;
PGINR = cell(1, Iterations);
PGAmount = cell(1, Iterations);
CAINR = cell(1, Iterations);
CAAmount = cell(1, Iterations);

parfor i = 1:Iterations
[PGINR{i}, PGAmount{i}, CAINR{i}, CAAmount{i}] = ChineseTTRSimulationB();
end

PGINR = cell2mat(PGINR); % 1x7440000 vector
%and so on...
0

По вопросам рекламы [email protected]