Output:
%%% Plotting output obtained from East Coast UNSWAN operational model.
%% Plotting magnitude of Hs with peak wave direction
clear all;
clc;
xyzfile = 'PUNSWANIObathy.xyz';
dx = 0.7 ; % Distance between two consecutive wave direction arrows
xmin = 76; % Boundary coordinates of basemap
xmax = 90;
ymin = 4;
ymax = 24;
cmax = 7;
%% Writing .mat output on basemap
load('EC_20180321.mat');
% Creating date string from start and end dates
stdate = '21-03-2018 00:00:00';
enddate = '24-03-2018 00:00:00';
stdate_num = datenum(stdate,'dd-mm-yyyy HH:MM:SS');
enddate_num = datenum(enddate,'dd-mm-yyyy HH:MM:SS');
basename = 'fort'; % basename of element file
param = 'Hsig'; % parameter name should be same as that in the .mat file
hr_step=datenum(0,0,0,3,0,0); % Time interval(in hours)
date_array=stdate_num:hr_step:enddate_num;
x=datestr(date_array,'dd-mm-yyyy HH:MM:SS'); % display in date format
siz_x = size(x);
siz_x = siz_x(1,1);
%% Importing element information
elefile=[basename '.ele'];
fid = fopen(elefile); % load TRIANGLE element based connectivity file
[nelem] = fscanf(fid,'%i',[1 3]); % get number of triangles
ncol = 4+nelem(3); % specify number of columns in elefile
tri = fscanf(fid,'%i',[ncol nelem(1)])'; % get connectivity table
fclose(fid);
for i = 1:siz_x
date = x(i,:);
day = date(1:2);
month = date(4:5);
year = date(7:10);
hr = date(12:13);
min = date(15:16);
sec = date(18:19);
varname = strcat(param,'_',year,month,day,'_',hr,min,sec);
z = eval([varname]);
openfig('basemapstates_25.fig');
% Converting time from GMT to IST
t = datenum(date,'dd-mm-yyyy HH:MM:SS');
t = addtodate(t,330,'minute');
date_IST = datestr(t,'dd-mmm-yyyy HH:MM:SS');
date_IST1 = date_IST(1:11);
time_IST = date_IST(13:17);
ax1_a = gca ;
xtik = xmin:1:xmax;
ytik = ymin:1:ymax;
set(ax1_a,'Position',[0.2 0.15 0.72 0.72],'Xtick',xtik,'Ytick',ytik,'TickDir','out','FontName','Calibri','FontWeight','bold','Fontsize',8,'YAxisLocation','left','XAxisLocation','bottom');
degreetick 'x'
degreetick 'y'
ax1_b = copyobj(gca,gcf);
set(ax1_b,'YAxisLocation','right','XAxisLocation','top');
degreetick 'x'
degreetick 'y'
linkaxes([ax1_a,ax1_b]);
ax1 = gca;
xlim([76 90]);
ylim([4 24]);
ax2 = axes ;
%% Setting axes properties
set(ax2,'ActivePositionProperty','outerposition','BusyAction','queue','Clipping','on','Color','none','DataAspectRatio',[1 1 1],'DataAspectRatioMode','manual','FontAngle','normal','FontName','Helvetica','FontSize',10,'FontUnits','points','FontWeight','normal','HandleVisibility','on','HitTest','on','Interruptible','on','Layer','bottom','LineStyleOrder','-','LineWidth',0.5000,'NextPlot','add','OuterPosition',[0 0 1 1],'PlotBoxAspectRatio',[1 1.3437 1.2500],'PlotBoxAspectRatioMode','auto','Position',[0.1300 0.1100 0.7750 0.8150],'Projection','orthographic','PlotBoxAspectRatio',[1 1.3437 1.2500],'PlotBoxAspectRatioMode','auto','Position',[0.1300 0.1100 0.7750 0.8150],'Projection','orthographic','Selected','off','SelectionHighlight','on','SortMethod','depth','Tag','','TickDir','in','TickDirMode','auto','TickLength',[0.0100 0.0250],'UIContextMenu',[],'Units','normalized','UserData',[],'View',[0 90],'Visible','off','XAxisLocation','bottom','XColor',[0.1500 0.1500 0.1500],'XDir','normal','XGrid','on','XLimMode','manual','XMinorGrid','off','XScale','linear','XTick',[],'YAxisLocation','left','YColor',[0.1500 0.1500 0.1500],'YDir','normal','YGrid','on','YMinorGrid','off','YMinorTick','off','YScale','linear','YTick',[],'YTickLabelMode','auto','ZColor',[0.1500 0.1500 0.1500],'ZDir','normal','ZDir','normal','ZGrid','on','ZMinorGrid','off','ZMinorTick','off','ZScale','linear');
trisurf(tri(:,2:4),Xp,Yp,z,'EdgeColor','none');
caxis([0 cmax]);
shading interp;
cmap1 = jet;
cmap = [cmap1(10,:);cmap1(15,:);cmap1(27,:);cmap1(31,:);cmap1(35,:);cmap1(39,:);cmap1(43,:);cmap1(47,:);cmap1(51,:);cmap1(55,:);cmap1(57,:);cmap1(59,:);cmap1(62,:);cmap1(64,:)];
%cmap = cmap(7:20,:)
view(0,90);
daspect([1 1 1])
colormap(cmap);
linkaxes([ax1,ax2])
% Setting colorbar properties
hcb = colorbar;
ctick_vect = 0:0.5:cmax;
set(hcb,'location','southoutside','Xtick',ctick_vect,'FontName','Calibri','FontWeight','bold','Fontsize',8);
cpos = get(hcb,'Position');
cpos(4) = 0.3*cpos(4);
cpos(2) = 0.75*cpos(2);
cpos(3) = 1*cpos(3);
cpos(1) = 1.13*cpos(1);
set(hcb,'Position',cpos);
set(gcf,'units','centimeters','outerposition',[0 0 30 30]);
hold on
%% Plotting directions
var_dirname = strcat('PkDir','_',year,month,day,'_',hr,min,sec);
d = eval([var_dirname]);
d1 = degunitcircle2degN(d);
u = arrayfun(@cosd,d1);
v = arrayfun(@sind,d1);
w = zeros(size(u));
% Making structured from unstructured dataset to get the uniform density
% of arrows everywhere
[X,Y,Z,U,V,W] = unstrc2strcbathy(Xp,Yp,z,u,v,dx,xyzfile);
idx = ~isnan(U) & ~isnan(V);
Z = cmax*ones(size(U));
arr = quiver3(X(idx),Y(idx),Z(idx),U(idx),V(idx),W(idx),'color','k','MaxHeadSize',0.8,'AutoScale','on','AutoScaleFactor',0.45,'LineWidth',1.3);
ax3 = gca;
set(ax3,'Position',[0.2 0.15 0.72 0.72]);
title2 = ['Experimental Forecast for',' ',time_IST,' ','IST',' ',date_IST1];
annotation(gcf,'textbox',[0.41 0.895 0.3 0.0565552686204641],...
'String','Significant Wave Height (m)',...
'HorizontalAlignment','center','FontWeight','bold','FontName','Calibri','FontSize',11,...
'LineStyle','none');
annotation(gcf,'textbox',[0.26 0.87 0.6 0.0565552686204641],...
'String',title2,...
'HorizontalAlignment','center','FontWeight','bold','FontName','Calibri','FontSize',10,...
'LineStyle','none','color',[0 0.5 0]);
% Create textbox
annotation(gcf,'textbox',[0.31 0.029 0.5 0.0565552686204641],...
'String','Colour scale indicates magnitude of Hs',...
'HorizontalAlignment','center','FontWeight','bold','FontName','Calibri',...
'FontSize',9,'LineStyle','none');
annotation(gcf,'textbox',[0.31 0.013 0.5 0.0565552686204641],...
'String','Direction of arrows represent peak wave direction',...
'HorizontalAlignment','center','FontWeight','bold','FontName','Calibri',...
'FontSize',9,'LineStyle','none');
num = num2str(i);
image_name = strcat(param,'-',day,'-',month,'-',year,'--',hr,min);
drawnow
export_fig(image_name,'-jpg','-r200');
hold off
close all
end