function [X, matext] = crp_plugin(x, y, m, t, e, mflag, hCRP, plugin_path, silent) % CRP_PLUGIN Loads and executes the extern plugin % Used by CRP Toolbox % Copyright (c) 2005 by AMRON % Norbert Marwan, Potsdam University, Germany % http://www.agnld.uni-potsdam.de % % $Date$ % $Revision$ % % $Log$ % Revision 4.2 2005/04/15 09:03:03 marwan % minor bugfix in plugin section % % Revision 4.1 2005/04/08 09:03:53 marwan % plugin added % % % % This program is free software; you can redistribute it and/or % modify it under the terms of the GNU General Public License % as published by the Free Software Foundation; either version 2 % of the License, or any later version. global errcode X = []; matext = ''; try tmp_xdatafile = tempname; tmp_ydatafile = tempname; tmp_rpdatafile = tempname; if ~silent, set(findobj('Tag','Status','Parent',findobj('Parent',hCRP,'Tag','CRPPlot')),'String','Export Data'),drawnow, end save(tmp_xdatafile,'x','-ascii','-tabs'); save(tmp_ydatafile,'y','-ascii','-tabs'); % call extern rp programme if ~silent, set(findobj('Tag','Status','Parent',findobj('Parent',hCRP,'Tag','CRPPlot')),'String','Compute Recurrence Points'),drawnow, end m_str = {'MAX', 'EUC', 'MIN', 'NR', 'FAN', 'IN', 'OM', 'OP', 'EUC'}; dis_sign = 1; if mflag == 9, dis_sign = -1; end system([plugin_path,filesep,rp_plugin,' -m ',num2str(1), ... ' -t ',num2str(1), ... ' -e ',num2str(dis_sign * e), ... ' -n ',m_str{mflag}, ... ' -w ',num2str(0), ... ' -i ',tmp_xdatafile, ... ' -j ',tmp_ydatafile, ... ' -r ',tmp_rpdatafile, ... ' -f TIF', ... ' -s']); % import rp if ~silent, set(findobj('Tag','Status','Parent',findobj('Parent',hCRP,'Tag','CRPPlot')),'String','Import Recurrence Points'),drawnow, end X = imread(tmp_rpdatafile); X = (double(X)/double(max(X(:)))); delete(tmp_rpdatafile); delete(tmp_xdatafile); delete(tmp_ydatafile); if ~silent, set(findobj('Tag','Status','Parent',findobj('Parent',hCRP,'Tag','CRPPlot')),'String','Plot Recurrence Points'),drawnow, end switch mflag %%%%%%%%%%%%%%%%% maximum norm case 1 errcode=111; matext=[num2str(round(100*e)/100) '\sigma (fixed distance maximum norm)']; %%%%%%%%%%%%%%%%% euclidean norm case 2 errcode=112; matext=[num2str(round(100*e)/100) '\sigma (fixed distance euclidean norm)']; %%%%%%%%%%%%%%%%% minimum norm case 3 errcode=113; matext=[num2str(round(100*e)/100) '\sigma (fixed distance minimum norm)']; %%%%%%%%%%%%%%%%% order patterns case 8 errcode=118; matext=''; %%%%%%%%%%%%%%%%% global RP case 9 errcode=119; X = X * ( max([max(x), max(y)]) - min([min(x), min(y)]) ); matext=''; end catch warning off delete(tmp_rpdatafile); delete(tmp_xdatafile); delete(tmp_ydatafile); warning on end