Изменить функцию Matlab в цикле - PullRequest
3 голосов
/ 09 сентября 2010

Я хочу внести небольшое изменение в функцию MATLAB на каждом шаге цикла for. Моя функция слишком сложна, чтобы писать как анонимную. Есть ли способ изменить функцию m-файла на каждом шаге?

Дополнительная информация: Моя функция - это уравнения с 8 входами и бесконечным числом решений. Я хочу установить 7 входов, а затем использовать fsolve, чтобы найти 8-й. измените некоторые из этих 7 фиксированных входов в цикле for, чтобы я мог построить график решений этого уравнения.

1 Ответ

5 голосов
/ 09 сентября 2010

Давайте сделаем пример с двумя входами, из которых вы хотите изменить один.Поскольку вы утверждаете, что ваша функция действительно сложна, давайте запишем ее в файл с именем complicated.m, который мы сохраним по пути Matlab.

function out = complicated(v1,v2,x)

out = v1*x-v2*x.^2;

Скажем, мы хотим изменить v1 и v2 вкаждую итерацию в цикле и найти корень многочлена и построить его

figure,hold on
for v1 = 1:5
   for v2 = 1:5
      %# define the function
      myFun = @(x)complicated(v1,v2,x);
      %# find the roots
      fzero(myFun,1)
      %# plot the function
      plot(-5:0.1:5,myFun(-5:0.1:5))
   end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...