% APM Retrieve Solution in Structure Format % % y = apm_sol(server,app) % % Function apm_sol retrieves the solution from the APM server % with the following arguments: % % Input: server = server web-address to retrieve the solution % app = application name % % Output: y.names = names of all variables % y.values = tables of values corresponding to y.names % y.nvar = number of variables % y.x = combined variables and values but variable % names may be modified to make them valid MATLAB % characters (e.g. replace '[' with '_') function [y] = apm_sol(server,app) filename = 'solution.csv'; % get ip address for web-address lookup ip = deblank(urlread([deblank(server) '/ip.php'])); url = [deblank(server) '/online/' ip '_' app '/results.csv']; response = urlread(url); % write solution.csv file fid = fopen(filename,'w'); fwrite(fid,response); fclose(fid); % tranfer solution to local array % load data from csv file with header on the right column fid = fopen(filename, 'r'); % Parse and read rest of file ctr = 0; while(~feof(fid)) aline = fgetl(fid); if ischar(aline) ctr = ctr + 1; A(ctr,:) = parse(aline, ','); else break; end end fclose(fid); [n,m] = size(A); for i = 1:n, for j = 2:m, A{i,j} = str2num(A{i,j}); end end raw = A'; % extract names y.names = raw(1,:); % extract values y.values = cell2mat(raw(2:end,:)); % number of variables y.nvar = size(y.values,2); % remove the following characters c = '[],()'; nc = size(c,2); % generate variable names as a structure for i = 1:y.nvar; % remove some offending characters for MATLAB that % are allowed in APM including: "[],()" var_name = y.names(i); for j = 1:nc, var_name = strrep(var_name, c(j), ''); end str = ['y.x.' var_name{1} '= y.values(:,' int2str(i) ');']; eval(str); end