Storing values from a loop in a function in Matlab

亡梦爱人 提交于 2019-12-04 05:26:12

问题


I am writing a function in Matlab to model the length of stay in hospital of stroke patients. I am having difficulty in storing my output values. Here is my function:

function [] = losdf(age, strokeType, dest)

% function to mdetermine length of stay in hospitaal of stroke patients
% t = time since admission (days);
% age = age of patient;
% strokeType = 1. Haemorhagic, 2. Cerebral Infarction, 3. TIA;
% dest = 5.Death 6.Nursing Home 7. Usual Residence;

alpha1 = 6.63570;
beta1 = -0.03652;
alpha2 = -3.06931;
beta2 = 0.07153;
theta0 = -8.66118;
theta1 = 0.08801;
mu1 = 22.10156;
mu2 = 2.48820;
mu3 = 1.56162;
mu4 = 0;
nu1 = 0;
nu2 = 0;
nu3 = 1.27849;
nu4 = 0;
rho1 = 0;
rho2 = 11.76860;
rho3 = 3.41989;
rho4 = 63.92514;

for t = 1:1:365
p = (exp(-exp(theta0 + (theta1.*age))));

if  strokeType == 1
    initialstatevec = [1 0 0 0 0 0 0];
elseif strokeType == 2
    initialstatevec = [0 1 0 0 0 0 0];
else
    initialstatevec = [0 0 (1-p) p 0 0 0];
end

lambda1 = exp(alpha1 + (beta1.*age));
lambda2 = exp(alpha2 + (beta2.*age));

Q = [ -(lambda1+mu1+nu1+rho1) lambda1  0  0  mu1  nu1  rho1; 
0  -(lambda2+mu2+nu2+rho2) lambda2 0 mu2 nu2 rho2; 
0 0 -(mu3+nu3+rho3) 0 mu3 nu3 rho3; 
0 0 0 -(mu4+nu4+rho4) mu4 nu4 rho4; 
0 0 0 0 0 0 0; 
0 0 0 0 0 0 0; 
0 0 0 0 0 0 0];

Pt = expm(t./365.*Q);
Pt = Pt(strokeType, dest);
Ft = sum(initialstatevec.*Pt); 
Ft

end
end

Then to run my function I use: losdf(75,3,7)

I want to plot my values of Ft in a graph from from 0 to 365 days. What is the best way to do this?

Do I need to store the values in an array first and if so what is the best way to do this?


回答1:


Many ways to do this, one straightforward way is to save each data point to a vector while in the loop and plot that vector after you exit your loop.

...
Ft = zeros(365,1); % Preallocate Ft as  a vector of 365 zeros
for t = 1:365
...
   Ft(t) = sum(initialstatevec.*Pt); % At index "t", store your output
...
end
plot(1:365,Ft);


来源:https://stackoverflow.com/questions/43258223/storing-values-from-a-loop-in-a-function-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!