Функция цикла в 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