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

0

Я новичок в 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 и я должно быть одинаковым", чтобы получить матрицу нулей или единиц (в зависимости от того, что я использую для preallocation).

Мне понадобится симуляция для запуска около 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)
Теги:
for-loop
iteration
parfor

2 ответа

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
    Уважаемый Арпи, большое спасибо за ваше предложение! Я попробую это, как только моя текущая симуляция закончилась!
0

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

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
    Уважаемый Lanpa, большое спасибо за ваше предложение! Я попробую это, как только моя текущая симуляция закончилась!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню