0001 function mdot(mmat, dotfile,f)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 error(nargchk(2,3,nargin));
0022
0023 if ischar(mmat)
0024 load(mmat);
0025 elseif iscell(mmat)
0026 hrefs = mmat{1};
0027 names = mmat{2};
0028 options = mmat{3};
0029 if nargin == 3, mfiles = mmat{4}; end
0030 else
0031 error('[mdot] Invalid argument: mmat.');
0032 end
0033
0034 fid = fopen(dotfile,'w');
0035 if fid == -1, error(sprintf('[mdot] Cannot open %s.',dotfile)); end
0036
0037 fprintf(fid,'/* Created by mdot for Matlab */\n');
0038 fprintf(fid,'digraph m2html {\n');
0039
0040 if nargin == 2
0041 for i=1:size(hrefs,1)
0042 n = find(hrefs(i,:) == 1);
0043 m{i} = n;
0044 for j=1:length(n)
0045 fprintf(fid,[' ' names{i} ' -> ' names{n(j)} ';\n']);
0046 end
0047 end
0048
0049 fprintf(fid,'\n');
0050 for i=1:size(hrefs,1)
0051 fprintf(fid,[' ' names{i} ' [URL="' names{i} options.extension '"];\n']);
0052 end
0053 else
0054 i = find(strcmp(f,mfiles));
0055 if length(i) ~= 1
0056 error(sprintf('[mdot] Cannot find %s.',f));
0057 end
0058 n = find(hrefs(i,:) == 1);
0059 for j=1:length(n)
0060 fprintf(fid,[' ' names{i} ' -> ' names{n(j)} ';\n']);
0061 end
0062 m = find(hrefs(:,i) == 1);
0063 for j=1:length(m)
0064 if n(j) ~= i
0065 fprintf(fid,[' ' names{m(j)} ' -> ' names{i} ';\n']);
0066 end
0067 end
0068 n = unique([n(:)' m(:)']);
0069 fprintf(fid,'\n');
0070 for i=1:length(n)
0071 fprintf(fid,[' ' names{n(i)} ' [URL="' names{n(i)} options.extension '"];\n']);
0072 end
0073 end
0074
0075 fprintf(fid,'}');
0076
0077 fid = fclose(fid);
0078 if fid == -1, error(sprintf('[mdot] Cannot close %s.',dotfile)); end