#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. У меня действительно есть реакции с несколькими параметрами. Это устранило проблему, спасибо!