%'export_mat': plot vector fields and save figures for project Coriolis/2019/TUBE %------------------------------------------------------------------------ %INPUT: % handles: Matlab structure containing all the information displyed in the GUI uvmat function export_mat(handles) %------------------------------------------------------------------------ %% get input data Data_uvmat=get(handles.uvmat,'UserData'); Data=Data_uvmat.Field; %get the current plotted field requested=isfield(Data,'coord_x')&&isfield(Data,'coord_y')&&isfield(Data,'U')&&isfield(Data,'V')&&isfield(Data,'norm'); if ~requested msgbox_uvmat('ERROR','unappropriate data: need vectors U, V on a regular grid') return end RootPath=get(handles.RootPath,'String'); SubDir=get(handles.SubDir,'String'); RootFile=get(handles.RootFile,'String'); FileIndex=get(handles.FileIndex,'String'); %% Calibration: % plot parameters nBits = 64; scale = 0.15; decimation = 16; % filtering procedure method = 'gaussian'; window = 24; %% get colormap load('BuYlRd.mat') BuYlRd = BuYlRd(1:floor(size(BuYlRd)/nBits):end,:); %% reduce the number of arrows x = Data.coord_x(1:decimation:end,1:decimation:end); y = flipud(Data.coord_y(1:decimation:end,1:decimation:end)); [X,Y] = meshgrid(x,y); % Filtering data to take away spurious subsampling issues (see Shannon Theorem) filtU = smoothdata(flipud(Data.U ),method,window); filtV = smoothdata(flipud(Data.V ),method,window); filtS = smoothdata(flipud(Data.norm),method,window); U = filtU(1:decimation:end,1:decimation:end); V = filtV(1:decimation:end,1:decimation:end); S = filtS(1:decimation:end,1:decimation:end); zmin = min(min(S)); zmax = max(max(S)); bins = linspace(zmin,zmax,nBits); %% plot size and position in the figure width = 6.75; % Width in inches height = 6; % Height in inches alw = 0.75; % AxesLineWidth fsz = 12; % Fontsize lw = 1.25; % LineWidth msz = 8; % MarkerSize %% make the plot figure(1) ax2 = axes('Visible','off','HandleVisibility','off'); pos = get(1, 'Position'); set(1, 'Position', [pos(1) pos(2) width*100, height*100]); %<- Set size set(ax2, 'FontSize', fsz, 'LineWidth', lw); %<- Set properties set(1, 'defaultTextInterpreter','latex'); for i = 1:nBits-1 ii=find((S - bins(i+1) < 0).*(S - bins(i) > 0)); quiver(X(ii),Y(ii),U(ii),V(ii), scale,'Color',BuYlRd(i,:), 'LineWidth',1.2) hold on end cc=colorbar; set(cc,'TickLabelInterpreter','latex') cc.Label.String='cm/s'; caxis([zmin zmax]) axis equal xlim([Data.coord_x(1),Data.coord_x(end)]) ylim([Data.coord_y(1),Data.coord_y(end)]) hold off xlabel('$x(cm)$') ylabel('$y(cm)$') %% Set the figure size set(1,'InvertHardcopy','on'); set(1,'PaperUnits', 'centimeters'); papersize = get(1, 'PaperSize'); left = (papersize(1)- width)/2; bottom = (papersize(2)- height)/2; myfiguresize = [left, bottom, width, height]; set(1,'PaperPosition', myfiguresize); %% Save the figure as a pdf file in the appropriate figure folder [pp,camera]=fileparts(RootPath); [ppp,exp]=fileparts(pp); FigPath=fullfile(fileparts(ppp),'0_FIG') if ~exist(FigPath,'dir') [s,msg]=mkdir(FigPath); %create the folder if it does not exist if s disp([FigPath ' created']) else msgbox_uvmat('ERROR',msg) return end end exppath = fullfile(FigPath,exp); if ~exist(exppath,'dir') [s,msg]=mkdir(exppath);%create the folder if it does not exist if s disp([exppath ' created']) else msgbox_uvmat('ERROR',msg) return end end camerapath=fullfile(exppath,camera); if ~exist(camerapath,'dir') [s,msg]=mkdir(camerapath);%create the folder if it does not exist if s disp([camerapath ' created']) else msgbox_uvmat('ERROR',msg) return end end outputname=fullfile(camerapath,[RootFile FileIndex '.pdf']); print(1,outputname,'-dpdf') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%