Запуск 3 для циклов параллельно в Matlab - PullRequest
0 голосов
/ 23 октября 2018

У меня есть три оператора мобильной связи O1, O2 и O3, каждый из которых имеет свой собственный мобильный телефон (N_M_O1, N_M_O2 и N_M_O3), они совместно используют базовые станции (B1 и B2), представленные (conter_B1, conter_B2), которые мне нужныассоциировать каждый мобильный телефон, который принадлежит (оператор (O1) или оператор (O2) или оператор (O3)) с базовыми станциями (B1 и B2) независимо, однако каждый мобильный телефон должен сначала запросить базовые станции (B1, B2), еслиconter_B1 и conter_B2 более 10, которые они отвергают для связи со следующим мобильным телефоном (номер 11).Проблема заключается в том, что реализация нескольких циклов в Matlab будет последовательно означать, что Matlab запустит loop1, затем завершит все итерации (например, если будет 200 итераций), затем начнет запускать второй цикл (loop2) и обновит результат после этого запускатретий цикл 3
Мне нужно запустить все циклы (loop1, loop2, loop3) одновременно и обновить результат одновременно, имея в виду, что результат обновит один и тот же conter для всех (conter_B1 и conter_B2):Приведенный ниже код следует обычному методу Matlab, а не параллельно, только для примера с несколькими циклами

 N_M_O1=10;
 N_M_O2=12;
 N_M_O3=13;
 conter_B1=0;
 conter_B2=0;
 x=[2 3 5 8 6 3 4 5 8 9];
 y=[2 3 6 5 2 9 4 6 3 5];
 x2=[2 8 5 8 6 3 6 5 6 9 10 12];
 y2=[9 3 6 9 7 9 4 6 8 5 1 23];
 x3=[2 3 1 8 6 3 55 5 6 9 2 3 5];
 y3=[2 4 6 4 6 5 4 6 6 4 12 32 3];
 for m=1:N_M_O1
   z(m)=x(m)+y(m);
     if z(m)>10
         conter_B1=conter_B1+1;
     else 
         conter_B2=conter_B2+1;
     end 
   end 
   for m=1:N_M_O2
   z2(m)=x2(m)+y2(m);
     if z2(m)>10
         conter_B1=conter_B1+1;
     else 
         conter_B2=conter_B2+1;
     end 
   end 
  for m=1:N_M_O3
   z3(m)=x3(m)+y3(m);
     if z3(m)>10
         conter_B1=conter_B1+1;
     else 
         conter_B2=conter_B2+1;
     end 
  end 

1 Ответ

0 голосов
/ 23 октября 2018

Если я понимаю ваш вопрос, вы хотите только:

zz = [x+y,x2+y2,x3+y3];
counter_B1 = sum(zz>10)
counter_B2 = sum(zz<=10)

, который даст тот же результат, что и ваши 3 для циклов.

...