function [y,u,t,par_names,Q,extras] = idRC_ident_numpar; ## usage: [y,u,t,par_names,Q,extras] = idRC_ident_numpar; ## Edit for your own requirements ## Created by MTT on ## This section sets up the data source ## simulate = 0 Real data (you supply idRC_ident_data.dat) ## simulate = 1 Real data input, simulated output ## simulate = 2 Unit step input, simulated output simulate = 0; ## System info [n_x,n_y,n_u,n_z,n_yz] = idRC_def; simpars = sidRC_simpar; ## Access or create data if (simulate<2) # Get the real data if (exist("idRC_ident_data.dat")==2) printf("Loading idRC_ident_data.dat\n"); load idRC_ident_data.dat else printf("Please create a loadable file idRC_ident_data.dat containing y,u and t\n"); return endif else switch simulate case 2 # Step simulation t = [0:simpars.dt:simpars.last]'; u = ones(size(t)); otherwise error(sprintf("simulate = %i not implemented", simulate)); endswitch endif if (simulate>0) par = idRC_numpar(); x_0 = idRC_state(par); dt = t(2)-t(1); simpars.dt = dt; simpars.last = t(length(t)); y = idRC_sim(zeros(n_x,1), par, simpars, u); endif ## Default parameter names - Put in your own here sympar = idRC_sympar; # Symbolic params as structure par_names = struct_elements (sympar); # Symbolic params as strings [n,m] = size(par_names); # Size the string list ## Sort by index for [i,name] = sympar par_names(i,:) = sprintf("%s%s",name, blanks(m-length(name))); endfor par_names = "r"; # Estimate r only ## Output weighting vector Q = ones(n_y,1); ## Extra parameters extras.criterion = 1e-5; extras.emulate_timing = 0; extras.max_iterations = 10; extras.simulate = simulate; extras.v = 1e-2; extras.verbose = 1; extras.visual = 1; endfunction