2013-06-10 2 views
-3

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

У меня есть функция y = f (t), которая описывает рост каждого человека. y = f (t) имеет 8 переменных, которые являются постоянными, но различны для каждого человека. Кривая скорости получается путем дифференцирования функции y = f (t). изображение кривой роста и скорости можно увидеть ниже. Красная кривая - это кривая роста, а синяя - кривая скорости.

Функция описывается формулой y (t) = m1 * (1-1/(1+ (m2 * (m0 + m8))^m5 + (m3 * (m0 + m8))^m6 + (m4 * (m0 + m8))^m7)). t здесь независимая переменная. m1-m8 - переменные, которые являются постоянными для каждого человека, но отличаются друг от друга.

Я хотел бы получить это

  • точек перегиба (как т и Р (т) значения) функции роста
  • асимптотического значения функции роста
  • соответствующего максимальной высота дифференцированной функции
  • минимальная высота дифференцированной функции до максимальной высоты

    % s et variabelen syms t; m1 = xlsread ('jongens0', 'A1: A10'); m2 = xlsread ('jongens0', 'B1: B10'); m3 = xlsread ('jongens0', 'C1: C10'); m4 = xlsread ('jongens0', 'D1: D10'); m5 = xlsread ('jongens0', 'E1: E10'); m6 = xlsread ('jongens0', 'F1: F10'); m7 = xlsread ('jongens0', 'G1: G10'); m8 = xlsread ('jongens0', 'H1: H10');

    % Набор петель для г = 1: 10

    % определяют функцию и дифференцированные функции у (I) = m1 (I). (1-1./(1+(m2(i). (t + m8 (i))).^M5 (i) + (m3 (i). (t + m8 (i))).^m6 (i) + (m4 (i). (t + m8 (i))).^m7 (i))); dy (i) = diff (y (i)) ./ dt;

    % добыча информации a = max (dy (i)); b = fminsearch (dy (i), x0, [0, a]); c = max (y (i)); d = предел (y (i), inf); e = inflect_pt ((y (i)));

    А = [A B C D е]

    % информации записи, чтобы преуспеть xlswrite ('output0', А)

+3

Это довольно простой MATLAB. Прочитали ли вы какие-либо учебники или попробуйте [искать ответ в Интернете] (http://goo.gl/aDZz4) в первую очередь? –

+0

У меня было ощущение, что это очень простой вопрос, но я продолжал делать те же ошибки, поэтому я надеялся найти здесь несколько ответов. – user1719126

+1

Взгляните на эту [ссылку] (http://www.mathworks.com/help/matlab/matlab_prog/loop-control-statements.html), она должна помочь вам лучше узнать петли MATLAB. –

ответ

0

Вы используете неправильный синтаксис MATLAB.

for(i=0,t++,i<50) 

ближе к синтаксису C++, чем MATLAB.(Хотя это не правильный синтаксис C++, как указал @John)

Я не уверен, что вы пытаетесь достичь с помощью этого кода:

fori=1:50,; 
i; 
end; 

, но это не правильно. , после 1:50 не должен быть там. Вы не хотите ; в конце строки for i=1:50, а не после end. (; используется для подавления вывода, и эти линии не дают какой-либо)

Трудно точно сказать, что вы хотите достичь, но я думаю, что-то вроде этого близко:

y = zeros(size(t,1),50); 

for i = 1:50 
    y(i,:) = m1(i).(1-1./(1+(m2(i).(t+m8(i))).^m5(i) ... 
     +(m3(i).(t+m8(i))).^m6(i)+(m4(i).(t+m8(i))).^m7(i))); 
end 

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

  • Нет связанных вопросов^_^