function [t,y,y_theta] = mtt_stime(system_name,theta,indices); ## usage: [t,y,y_theta] = mtt_stime(system_name,theta); ## ## Simulate system with name system_name and parameter vector theta ## The order of components in theta is determined in system_numpar.txt: ## y_theta contains the corresponding sensitivity functions ## Assumes system generated by the sBG approach ## Copyright (C) 1999 by Peter J. Gawthrop ## $Id$ ## Simulate using mtt-generated function if nargin<3 indices = ones(size(theta)) endif N = length(theta); if N!=length(indices) error(sprintf("The length (%i) of indices must be the same as that of theta (%i)",length(indices),N)); endif y_theta = []; for i=1:length(theta) if indices(i) args=""; for j=1:length(theta) i_sensitivity=(j==i); args = sprintf("%s%i %g ",args, i_sensitivity, theta(j)); endfor args command = sprintf("./%s_ode2odes.out %s > mtt_data.dat\n", system_name, args); system(command); ## Retrieve data load -force mtt_data.dat t = mtt_data(:,1); y = mtt_data(:,2); y_theta = [y_theta mtt_data(:,3)]; endif endfor endfunction