function [A,B,C,D] = go_lin (f,g) ## usage: [A,B,C,D] = go_lin (f,g) ## ## n_x = eval(g_nops(f)); # Number of states n_y = eval(g_nops(g)); # Number of outputs n_u = n_y; ## Create symbolic state list x = "{}"; for i=1:n_x x = go_append(x,sprintf("x_%i", i)); endfor ## Create symbolic input list u = "{}"; for i=1:n_u u = go_append(u,sprintf("u_%i", i)); endfor [A_l,A] = go_diff(f,x); [B_l,B] = go_diff(f,u); [C_l,C] = go_diff(g,x); [D_l,D] = go_diff(g,u); endfunction