2014-11-16 2 views
0

Я новичок в Matlab и буду признателен за любую помощь!Использование Parfor для создания матрицы из вектора

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

Например, при первом запуске моделирования, уровень фактора коагуляции плазмы может изменяться в течение 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]

я столкнулся с проблемами, начиная от «В присваивания А (I) = В, число элементов в 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) 

ответ

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

сохранить каждый 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

Уважаемый Lanpa, большое спасибо за ваше предложение! Я попробую, как только моя текущая симуляция закончится! –

Смежные вопросы