Симбиология Matlab — изменение области параметров от реакции к модели

#matlab #simulation #simulink

#matlab — математическая лаборатория #Симуляция #симулинкъ #matlab #simulink

Вопрос:

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

 sbioloadproject('Comex Model 171016')
m1
m1.Parameters

for i = 1:numel(m1.Reactions) 
    p = m1.Reactions(i).KineticLaw.Parameters; 
    copyobj(p,m1) 
    delete(p)
end

m1.Parameters
  

Этот код от кого- то с такой же проблемой (http://uk.mathworks.com/matlabcentral/newsreader/view_thread/319663 ) и для них это сработало. Однако, когда я применяю это к своему проекту, я получаю следующую ошибку:

 No method 'copyobj' with matching signature found for class 'SimBiology.Parameter'.
Error in untitled3 (line 11)
    copyobj(p,m1)  
  

Я думаю, что это может быть особенностью более новой версии Matlab, которую я использую — есть ли у кого-нибудь какие-либо предложения относительно того, как я могу обойти это, возможно, альтернативу copyobj?

Спасибо за ваше время,

Лора

Ответ №1:

Функция copyobj работает только с одним параметром за раз. Я предполагаю, что вы получаете эту ошибку, потому что у вас реакция с более чем одним параметром. Попробуйте вместо этого следующий код:

 sbioloadproject('Comex Model 171016')
m1
m1.Parameters

for i = 1:numel(m1.Reactions) 
    p = m1.Reactions(i).KineticLaw.Parameters; 
    for j = 1:numel(p)
        copyobj(p(j),m1) 
        delete(p(j))
    end
end

m1.Parameters
  

Комментарии:

1. У меня действительно есть реакции с несколькими параметрами. Это устранило проблему, спасибо!