% figure structural exponent close all; dims = {'2D', '3D', '4D'}; markers = {'s', 'x', 'o', '*', '^', 'p'}; phip = [1.128, 3.510, 6.248, 9.174, 12.2, 15.3]; gammas = [43/18, 1.805, 1.44, 1.185, 1, 1]; muminus = [2.5278, 1.3377, 0.73, 0.301]; fitcuts = [13, 9, 0, 0, 0, 0]; % 1 - linear fit % 2 - nonlinear fit, add 1/epsilon term choice = 2; % fix too light colorOrder ColorOrders = [0 0.4470 0.7410 0.8500 0.3250 0.0980 0.8290 0.5140 0 0.4940 0.1840 0.5560 0.4660 0.6740 0.1880 0.3010 0.7450 0.9330 0.6350 0.0780 0.1840]; % set up figure % labels = {'(a)', '(b)', '(c)', '(d)'}; widthpix = 375; heightpix = 211; leftmargin = 65; bottommargin = 60; topmargin = 10; rightmargin = 15; centermargin = 0; widthtotal = widthpix+leftmargin+rightmargin; heighttotal = heightpix*2+topmargin+bottommargin; left = leftmargin/widthtotal; bottom = bottommargin/heighttotal; width = widthpix/widthtotal; height = heightpix/heighttotal; center = centermargin/widthtotal; psize = 18; % font size msize = 9; % marker size fig = figure('rend','painters','pos',[100 100 widthtotal heighttotal]); colororder(ColorOrders); %% panel (a) panelA = axes('Position', [left, bottom+height, width, height]); fshortname = 'cagestat.dat'; for rp=1:length(dims) errorbar(nan, nan, 1, markers{rp}, 'markersize', 8, 'linewidth', 1); if 1==rp, hold on, end end datas = {}; opts = optimset('Display','off'); for rp=1:length(dims) set(panelA, 'ColorOrderIndex', rp); dim = dims{rp}; ndim = str2double(dim(1:end-1)); fname = strcat('../data/rlgcshape/', dim, '/', fshortname); data = dlmread(fname, '', 1, 0); percofilt = data(:,2)<=2e-3; % filter out percolated phi xs = (data(percofilt,1) - phip(rp))/phip(rp); ys = data(percofilt,3); datas{end+1} = [xs, ys]; erry = data(percofilt, 6); errorbar(xs, ys, erry, markers{rp}, 'markersize', 8, 'linewidth', 1); fitcut = fitcuts(rp); if(fitcut>=3) xafit = log(xs(1:fitcut)); yafit = log(ys(1:fitcut)); if 1==choice xafit = [xafit, ones(numel(xafit), 1)]; [b, bint] = regress(yafit, xafit); m1 = b(1); b1 = b(2); xfitlogs = linspace(log(1e-2), log(0.5)); yfitlogs = m1*xfitlogs+b1; set(gca, 'ColorOrderIndex', rp); plot(exp(xfitlogs), exp(yfitlogs), '-', 'linewidth', 1); fprintf('%s\t%f\t%f\n', dim, -m1, (bint(1,2)-bint(1,1))/2); else %Ff = @(x,xdata)(-x(1)*xdata + x(2) + real(log(1+x(3)*exp(xdata)))); % .^x(4) Ff = @(x,xdata)(-x(1)*xdata + x(2) + x(3)*exp(xdata)); % .^x(4) x0 = [1, 1, 1]; [x,resnorm,res,exitflag,output,lambda,JJ] = lsqcurvefit(Ff,x0,xafit,yafit, [], [], opts); ci = nlparci(x,res,'jacobian',JJ); xfitlogs = linspace(log(1e-2), log(0.5)); yfitlogs = Ff(x, xfitlogs); set(gca, 'ColorOrderIndex', rp); plot(exp(xfitlogs), exp(yfitlogs), '-', 'linewidth', 1); fprintf('%s\t%f\t%f\n', dim, x(1), abs(ci(1,1)-ci(1,2))/2); end else % plot theoretical line linspace(log(1e-2), 0.5); m1 = -gammas(rp); b1 = log(ys(1)) - m1*log(xs(1)); yfitlogs = m1*xfitlogs+b1; set(gca, 'ColorOrderIndex', rp); plot(exp(xfitlogs), exp(yfitlogs), ':', 'linewidth', 1.75); end end xlim([1e-2 1e0]); ylim([1e-2, 1e6]); yticks([1e0, 1e3, 1e6]); set(panelA, 'xticklabel', []); ylabel('$\bar{V}_\mathrm{cavity}$', 'interpreter', 'latex'); set(panelA, 'xscale', 'log', 'yscale', 'log'); legend(dims); legend boxoff; set(panelA, 'fontname', 'times new roman', 'fontsize', psize); %% panel (b) panelB = axes('Position', [left, bottom, width, height]); datas = {}; for rp=1:length(dims) set(gca, 'ColorOrderIndex', rp); dim = dims{rp}; ndim = str2double(dim(1:end-1)); fname = strcat('../data/rlgcshape/', dim, '/', fshortname); data = dlmread(fname, '', 1, 0); percofilt = data(:,2)<=2e-3; % filter out percolated phi xs = (data(percofilt,1) - phip(rp))/phip(rp); ys = data(percofilt,4); datas{end+1} = [xs, ys]; erry = data(percofilt, 7); errorbar(xs, ys, erry, markers{rp}, 'markersize', 8, 'linewidth', 1); if 1==rp, hold on, end fitcut = fitcuts(rp); if(fitcut>=3) xafit = log(xs(1:fitcut)); yafit = log(ys(1:fitcut)); if 1==choice xafit = [xafit, ones(numel(xafit), 1)]; [b, bint] = regress(yafit, xafit); m1 = b(1); b1 = b(2); xfitlogs = linspace(log(1e-2), log(0.5)); yfitlogs = m1*xfitlogs+b1; set(gca, 'ColorOrderIndex', rp); plot(exp(xfitlogs), exp(yfitlogs), '-', 'linewidth', 1); fprintf('%s\t%f\t%f\n', dim, -m1, (bint(1,2)-bint(1,1))/2); else %Ff = @(x,xdata)(-x(1)*xdata + x(2) + real(log(1+x(3)*exp(xdata)))); % .^x(4) Ff = @(x,xdata)(-x(1)*xdata + x(2) + x(3)*exp(xdata)); % .^x(4) x0 = [1, 1, 1]; [x,resnorm,res,exitflag,output,lambda,JJ] = lsqcurvefit(Ff,x0,xafit,yafit, [], [], opts); ci = nlparci(x,res,'jacobian',JJ); xfitlogs = linspace(log(1e-2), log(0.5)); yfitlogs = Ff(x, xfitlogs); set(gca, 'ColorOrderIndex', rp); plot(exp(xfitlogs), exp(yfitlogs), '-', 'linewidth', 1); fprintf('%s\t%f\t%f\n', dim, x(1), abs(ci(1,1)-ci(1,2))/2); end else % plot theoretical line linspace(log(1e-2), 0.5); m1 = -gammas(rp); b1 = log(ys(1)) - m1*log(xs(1)); yfitlogs = m1*xfitlogs+b1; set(gca, 'ColorOrderIndex', rp); plot(exp(xfitlogs), exp(yfitlogs), ':', 'linewidth', 1.75); end end xlabel('$\epsilon$', 'interpreter', 'latex'); xlim([1e-2 1e0]); ylim([1e-2, 1e6]); yticks([1e0, 1e3, 1e6]); ylabel('$\Delta$', 'interpreter', 'latex'); set(panelB, 'xscale', 'log', 'yscale', 'log'); set(panelB, 'fontname', 'times new roman', 'fontsize', psize); annotation('textbox',[0.16, 0.885, 0.1, 0.1], 'String', '(a)', 'EdgeColor','none', 'Fontname', 'Times New Roman','fontsize',psize); annotation('textbox',[0.16, 0.46, 0.1, 0.1], 'String', '(b)', 'EdgeColor','none', 'Fontname', 'Times New Roman','fontsize',psize); print('../figures/percofig_structexp.eps', '-depsc');