Функция цикла в Matlab, чтобы повторить функцию

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

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

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

То, что я хотел бы получить, это

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

    % установленного вариабелена syms t; m1=xlsread('jongens0','A1:A10'); м2=xlsread('jongens0','В1: В10'); м3=xlsread('jongens0','С1: С10'); m4=xlsread('jongens0','D1:D10'); m5=xlsread('jongens0','Е1: Е10'); m6 = xlsread ('jongens0', 'F1: F10'); m7 = xlsread ('jongens0', 'G1: G10'); m8 = xlsread ('jongens0', 'H1: H10');

    % заданного цикла для i = 1: 10

    % определяют функцию и дифференцированную функцию 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))); ду (я) = Diff (у (я))./ дт;

    % извлечения информации a = max (dy(i)); б = fminsearch (ду (я), х0,[0, а]); с = макс (у (I)); д = предел (у (я), инф); е =inflect_pt((у (я)));

    A = [abcde]

    % записи информации в Excel xlswrite('output0',A)

1 ответ

Решение

Вы используете неправильный синтаксис 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
Другие вопросы по тегам