function makegradient(fcn, name) %Creates a new matlab function (defined by gradient(fcn)) %and saves it with the specified name % % Example: makegradient('x^2+y^2','gf') creates a file gf.m: % % function functout = gf(v) % x = v(1); % y = v(2); % functout = [2*x, 2*y]; % varlist = symvar(fcn); n=length(varlist); S='';for i=1:n-1, S = [S,char(varlist(i)),',']; end; S = [S,char(varlist(n))]; fid = fopen([name,'.m'],'w'); fprintf(fid,['function functout = ',name,'(v)\n']); for i=1:n fprintf(fid, [char(varlist(i)),' = v(',num2str(i),');\n']); end gradf = char(maple(['grad(',fcn,',[',S,'])'])); len = length(gradf); str = gradf(8:len-1); str = strrep(str, ',', ';');%column vector fprintf(fid,['functout = ',str,';']); fclose(fid);