function [GI_PCL_Z,GI_PCL_Date,ATTIVA,FIG] = report_PCL_ENG(DTcatena,rPCL,m,NodoPreConvLink,... toolrif,unitrif,datarif,firstdata_num,Font_caption,Font_tools,siteID,DT,FIG,br,... colonna2,colonna2bis,status,ATTIVA,conn,FileName) import mlreportgen.dom.* import mlreportgen.report.* % Make sure DOM is compilable makeDOMCompilable() check = 0; while check == 0 if status(m,1) == 1 if ATTIVA == 1 ATTIVA = 0; testo = Paragraph('Array not installed or inactive.'); add(DT,testo); end check = 1; elseif status(m,1) == 3 if ATTIVA == 1 ATTIVA = 0; testo = Paragraph(['Monitoring completed. Please log into the web-based platoform '... 'to access the complete dataset.']); add(DT,testo); end check = 1; else NODATAPCL(m,1) = 0; date = datestr(datenum(colonna2{m+1,1},'dd-mm-yyyy'),'yyyy-mm-dd'); % data riferimento definita sul sito % posizione di progetto dei nodi comando = ['select EventDate, EventTime, Y, Z from ElabDataView where EventDate = ''' ... date ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ''' ']; curs = exec(conn,comando); curs = fetch(curs); SezioneYZ = curs.Data; Datasez = SezioneYZ(1,1); Orasez = SezioneYZ(1,2); [ry,~] = size(SezioneYZ); scrivi = 1; % ho scaricato tutti i dati del giorno di installazione, prendo % i primi in ordine temporale per ciascun nodo for cc = 1:ry if strcmp(SezioneYZ(cc,1),Datasez)==1 && strcmp(SezioneYZ(cc,2),Orasez) ==1 CoordY(scrivi,1) = SezioneYZ(cc,3); CoordZ(scrivi,1) = SezioneYZ(cc,4); scrivi = scrivi+1; end end comando = ['select id from units where name like ''' char(unitrif) ''' ']; curs = exec(conn,comando); curs = fetch(curs); unitID = curs.Data; % Data di fine PreConvergenza comando = ['select prod_date_node from tools where unit_ID like ''' ... num2str(cell2mat(unitID)) ''' and name like ''' DTcatena ''' ']; curs = exec(conn,comando); curs = fetch(curs); dati = curs.Data; stringa = cell2mat(dati(1,1)); if strcmp(stringa,'null') || strcmp(stringa,'No Data') data_PC = 0; % time_PC = 0; else data_PC = stringa(1,1:10); % time_PC = stringa(1,11:21); end if data_PC ~= 0 % Scarico dati di Fine PreConvergenza Num = zeros(rPCL(m,1),1); for p = 1:rPCL(m,1) NodeNum = num2str(NodoPreConvLink(p,m)); comando = ['select EventDate, EventTime, ZShift, Z, Y from ElabDataView where EventDate < ''' ... data_PC ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ... ''' and NodeNum = ''' NodeNum ''' ']; curs = exec(conn,comando); curs = fetch(curs); Dati_PC = curs.Data; Num(p,1) = NodoPreConvLink(p,m); [rD,rC] = size(Dati_PC); if rC ~= 1 T = [cell2mat(Dati_PC(:,1)) repmat(' ', [rD,1]) cell2mat(Dati_PC(:,2))]; Date = datenum(T); % Data % Fine Pre-Convergenza asseZ_PC(:,p) = 1000*cell2mat(Dati_PC(:,3)); asseZ_Cum_PC(:,p) = 1000*cell2mat(Dati_PC(:,4)); diffZ_PC(:,p) = asseZ_PC(:,p)-asseZ_PC(1,p); % mm Z_Loc_PC(1,p) = asseZ_PC(end,p)-asseZ_PC(1,p); Z_Cum_PC(1,p) = asseZ_Cum_PC(end,p)-asseZ_Cum_PC(1,p); Y_PC(1,p) = cell2mat(Dati_PC(end,5)); end end end % Scarico dati odierni Num = zeros(rPCL(m,1),1); for p = 1:rPCL(m,1) NodeNum = num2str(NodoPreConvLink(p,m)); comando = ['select EventDate, EventTime, ZShift, Z, Y from ElabDataView where EventDate >= ''' ... datarif ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ... ''' and NodeNum = ''' NodeNum ''' ']; curs = exec(conn,comando); curs = fetch(curs); Dati = curs.Data; Num(p,1) = NodoPreConvLink(p,m); [rD,rC] = size(Dati); if rC ~= 1 T = [cell2mat(Dati(:,1)) repmat(' ', [rD,1]) cell2mat(Dati(:,2))]; Date = datenum(T); % Data if p == 1 % Il primo lo scrivo e creo la variabile di controllo else [rS,~] = size(asseZ); if rD ~= rS NODATA(m,1) = 1; check = 0; break else check = 1; end end % Ultimo mese asseZ(:,p) = 1000*cell2mat(Dati(:,3)); asseZ_Cum(:,p) = 1000*cell2mat(Dati(:,4)); diffZ(:,p) = asseZ(:,p)-asseZ(1,p); % mm Z_Loc(1,p) = asseZ(end,p)-asseZ(1,p); Z_Cum(1,p) = asseZ_Cum(end,p)-asseZ_Cum(1,p); Z_Loc_Tot(1,p) = asseZ(end,p); Z_Cum_Tot(1,p) = asseZ_Cum(end,p); Y(1,p) = cell2mat(Dati(end,5)); else NODATAPCL(m,1) = 1; check = 1; end end if NODATAPCL(m,1) == 0 if strcmp(colonna2bis(m+1,1),colonna2(m+1,1)) == 0 % data zero diversa data riferimento datarifNEW = datestr(firstdata_num{m+1,1},'yyyy-mm-dd'); % data riferimento definita sul sito for nw = 1:rPCL(m,1) NodeNum = num2str(NodoPreConvLink(nw,m)); comando = ['select EventDate, EventTime, ZShift, Z, Y from ElabDataView where EventDate >= ''' ... datarifNEW ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ... ''' and NodeNum = ''' NodeNum ''' ']; curs = exec(conn,comando); curs = fetch(curs); DatiNEW = curs.Data; Num(nw,1) = NodoPreConvLink(nw,m); [~,rC] = size(DatiNEW); if rC ~= 1 % dalla data di riferimento % divergenza/convergenza dei singoli nodi dall'inizio Z_Loc_Tot(1,nw) = asseZ(end,nw)-1000*cell2mat(DatiNEW(1,3)); Z_Cum_Tot(1,nw) = asseZ_Cum(end,nw)-1000*cell2mat(DatiNEW(1,4)); if data_PC ~= 0 % Solo periodo di PreConvergenza Z_Loc_PC(1,nw) = asseZ_PC(end,nw)-1000*cell2mat(DatiNEW(1,3)); Z_Cum_PC(1,nw) = asseZ_Cum_PC(end,nw)-1000*cell2mat(DatiNEW(1,4)); end else NODATAPCL(m,1) = 1; end end end GI_PCL_Date = Date; % Cerco eventuali correlazioni con Cir Array NomeFile = strcat('Report',siteID,'-PCLvsTuL.txt'); Filetesto = importdata(NomeFile); [rF,~] = size(Filetesto); AAA = 1; Var = 0; while AAA < rF % A un PreConv possono competere più Cir check1 = Filetesto(AAA,1); if check1 == 99999 % Non ci sono PreConv Array o non ci sono Cir AAA = 2; else check2 = Filetesto(AAA+1,1); if check1 == str2num(DTcatena(end-2:end)) % Il PreConv è da prendere in considerazione ed è riportato nella prima riga del file Nodo = Filetesto(AAA+2,1); Var = 1; elseif check2 == str2num(DTcatena(end-2:end)) % Il PreConv è da prendere in considerazione ed è riportato nella seconda riga del file Nodo = Filetesto(AAA+3,1); Var = 1; end AAA = AAA+4; end end if Var == 1 GI_PCL_Z = diffZ(:,Nodo); else GI_PCL_Z = []; end % --- grafico spostamenti locali - Periodi di PreConvergenza --- figure(1) Y = round(Y); if data_PC ~= 0 Disp_Loc_PC = bar(Y_PC,Z_Loc_PC'); Z = Z_Loc_PC; else Disp_Loc_PC = bar(Y,Z_Loc'); Z = Z_Loc; end title('Local displacements - Pre-Convergence phase'); ylabel('Displacement [mm]'); xlabel('Position [m]'); maxY = max(Y); if maxY > 0 xticks(0:1:maxY) else xticks(Y(end):1:0); end h = gca; h.YAxis.MinorTick = 'on'; grid on if maxY < 0 % mm xlim([Y_PC(end)-1 0]); else xlim([0 maxY+1]) end grid on iniY = min(min(Z',Z_Loc')); endY = max(max(Z',Z_Loc')); MAX = max(abs(iniY),endY); if MAX > 2.5 % Limiti Asse Y ylim([-MAX-1 MAX+1]) else ylim([-2.5 +2.5]); end TempName1 = char(strcat('Report',siteID,'-', char(toolrif),'Z_Loc_PC_PCL_ENG.png')); saveas(Disp_Loc_PC(1),TempName1); close(figure(1)) figure(2) Y = round(Y); Disp_Loc_PCL = bar(Y,Z_Loc'); title('Local displacements - Reference time period'); ylabel('Displacement [mm]'); xlabel('Position [m]'); maxY = max(Y); minY = min(Y); MAXY = max(abs(minY),maxY); IY = find(max(abs(minY),maxY) == MAXY); maxY = Y(IY); if maxY > 0 xticks(0:1:maxY) else xticks(Y(end):1:0); end h = gca; h.YAxis.MinorTick = 'on'; grid on if MAX > 2.5 % Limiti Asse Y ylim([-MAX-1 MAX+1]) else ylim([-2.5 +2.5]); end grid on if iniY < 2.5 && endY > 2.5 % Limiti Asse Y elseif iniY < 2.5 ylim([iniY-1 2.5]); elseif endY < 2.5 ylim([-2.5 endY+1]); end TempName2 = char(strcat('Report',siteID,'-', char(toolrif),'Z_Loc_PCL_ENG.png')); saveas(Disp_Loc_PCL(1),TempName2); close(figure(2)) ChartPCL = Image(TempName1); ChartPCL2 = Image(TempName2); lot1 = Table({ChartPCL, ChartPCL2}); lot1.Style = {ResizeToFitContents(false), Width('100%')}; ChartPCL.Style = {Height('6.6cm'),HAlign('center')}; ChartPCL2.Style = {Height('6.6cm'),HAlign('center')}; ChartPCL_cap = Paragraph(['Fig. ' num2str(FIG) ' - Local differential displacements '... 'recorded in vertical direction during the pre-convergence phase and the '... 'reference time period']); ChartPCL_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; FIG = FIG+1; % ---Grafico Sezione Periodo PreConvergenza--- figure(3) contaS = 1; contaG = 1; contaF = 1; for disp = 1:rPCL(m,1) if diffZ_PC(end,disp)>0.5 nodisuZ(contaS,1)=CoordZ(disp,1); nodisuY(contaS,1)=CoordY(disp,1); contaS = contaS + 1; elseif diffZ_PC(end,disp)< -0.5 nodigiuZ(contaG,1)=CoordZ(disp,1); nodigiuY(contaG,1)=CoordY(disp,1); contaG = contaG + 1; else nodistabZ(contaF,1)=CoordZ(disp,1); nodistabY(contaF,1)=CoordY(disp,1); contaF = contaF + 1; end end %aggiungo coordinate ancora plot([0; cell2mat(CoordY(:,1))],[0; cell2mat(CoordZ(:,1))],'-','Color','black','MarkerSize' ,7); hold on if contaS > 1 sezS = plot(cell2mat(nodisuY(:,1)),cell2mat(nodisuZ(:,1)),'^','Color','red','MarkerSize' ,7); set(sezS, 'markerfacecolor', get(sezS, 'color')); end if contaG > 1 sezG = plot(cell2mat(nodigiuY(:,1)),cell2mat(nodigiuZ(:,1)),'v','Color',[0.4660 0.6740 0.1880],'MarkerSize' ,7); set(sezG, 'markerfacecolor', get(sezG, 'color')); end if contaF > 1 sezN = plot(cell2mat(nodistabY(:,1)),cell2mat(nodistabZ(:,1)),'o','Color','black'); set(sezN, 'markerfacecolor', get(sezN, 'color')); end ancora = plot(0,0,'s','Color','black','MarkerSize' ,13); set(ancora, 'markerfacecolor', get(ancora, 'color')); if contaS > 1 && contaG > 1 && contaF > 1 legend('Array geometry','Upwards','Downwards','Stable node','Anchor','Location','south'); elseif contaS > 1 && contaG > 1 && contaF == 1 legend('Array geometry','Upwards','Downwards','Anchor','Location','south'); elseif contaS > 1 && contaG == 1 && contaF > 1 legend('Array geometry','Upwards','Stable node','Anchor','Location','south'); elseif contaS == 1 && contaG > 1 && contaF > 1 legend('Array geometry','Downwards','Stable node','Anchor','Location','south'); elseif contaS > 1 && contaG == 1 && contaF == 1 legend('Array geometry','Upwards','Anchor','Location','south'); elseif contaS == 1 && contaG > 1 && contaF == 1 legend('Array geometry','Downwards','Stable node','Anchor','Location','south'); elseif contaS == 1 && contaG == 1 && contaF > 1 legend('Array geometry','Stable node','Anchor','Location','south'); end title('Displacement direction - Pre-convergence phase'); xlabel('Position [m]'); ylabel('Vertical direction'); set(gca,'YTickLabel',[]); set(gca,'YTick',[]); ini = min([0; cell2mat(CoordY)]); End = max([0; cell2mat(CoordY)]); h = gca; if ini >= -15 || End <= 15 if ini == 0 xticks(ini:1:End+1); xlim([ini,End+1]); elseif End == 0 xticks(ini-1:1:End); xlim([ini-1,End]); end else h.XAxis.MinorTick = 'on'; end grid off axes('pos',[0.1 0.8 .3 .1]) imshow('direzionescavoENG.png') hold off TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezPCL_ENG.png')); saveas(ancora,TempName); ChartSEZPC1 = Image(TempName); ChartSEZPC1.Style = {Height('6.6cm')}; close(figure(3)) % ---Grafico Sezione Ultimo Mese--- figure(4) clear nodisuZ clear nodisuY clear nodigiuZ clear nodigiuY clear nodistabZ clear nodistabY contaS_2 = 1; contaG_2 = 1; contaF_2 = 1; for disp = 1:rPCL(m,1) if diffZ(end,disp) > 0.5 % mm nodisuZ(contaS_2,1) = CoordZ(disp,1); % il +1 salta l'ancora introdotta dopo l'esecuzione della funzione gemella nodisuY(contaS_2,1) = CoordY(disp,1); contaS_2 = contaS_2 + 1; elseif diffZ(end,disp) < -0.5 nodigiuZ(contaG_2,1) = CoordZ(disp,1); nodigiuY(contaG_2,1) = CoordY(disp,1); contaG_2 = contaG_2 + 1; else nodistabZ(contaF_2,1) = CoordZ(disp,1); nodistabY(contaF_2,1) = CoordY(disp,1); contaF_2 = contaF_2 + 1; end end plot([0; cell2mat(CoordY(:,1))],[0; cell2mat(CoordZ(:,1))],'-','Color','black','MarkerSize' ,7); hold on if contaS_2 > 1 sezS = plot(cell2mat(nodisuY(:,1)),cell2mat(nodisuZ(:,1)),'^','Color','red','MarkerSize' ,7); set(sezS, 'markerfacecolor', get(sezS, 'color')); end if contaG_2 > 1 sezG = plot(cell2mat(nodigiuY(:,1)),cell2mat(nodigiuZ(:,1)),'v','Color',[0.4660 0.6740 0.1880],'MarkerSize' ,7); set(sezG, 'markerfacecolor', get(sezG, 'color')); end if contaF_2 > 1 sezN = plot(cell2mat(nodistabY(:,1)),cell2mat(nodistabZ(:,1)),'o','Color','black'); set(sezN, 'markerfacecolor', get(sezN, 'color')); end ancora = plot(0,0,'s','Color','black','MarkerSize' ,13); set(ancora, 'markerfacecolor', get(ancora, 'color')); if contaS_2 > 1 && contaG_2 > 1 && contaF_2 > 1 legend('Array geometry','Upwards','Downwards','Stable node','Anchor','Location','south'); elseif contaS_2 > 1 && contaG_2 > 1 && contaF_2 == 1 legend('Array geometry','Upwards','Downwards','Anchor','Location','south'); elseif contaS_2 > 1 && contaG_2 == 1 && contaF_2 > 1 legend('Array geometry','Upwards','Stable node','Anchor','Location','south'); elseif contaS_2 == 1 && contaG_2 > 1 && contaF_2 > 1 legend('Array geometry','Downwards','Stable node','Anchor','Location','south'); elseif contaS_2 > 1 && contaG_2 == 1 && contaF_2 == 1 legend('Array geometry','Upwards','Anchor','Location','south'); elseif contaS_2 == 1 && contaG_2 > 1 && contaF_2 == 1 legend('Array geometry','Downwards','Stable node','Anchor','Location','south'); elseif contaS_2 == 1 && contaG_2 == 1 && contaF_2 > 1 legend('Array geometry','Stable node','Anchor','Location','south'); end title('Displacement direction - Reference time period'); xlabel('Position [m]'); ylabel('Vertical direction'); set(gca,'YTickLabel',[]); set(gca,'YTick',[]); ini = min([0; cell2mat(CoordY)]); End = max([0; cell2mat(CoordY)]); h = gca; if ini >= -15 || End <= 15 if ini == 0 xticks(ini:1:End+1); xlim([ini,End+1]); elseif End == 0 xticks(ini-1:1:End); xlim([ini-1,End]); end else h.XAxis.MinorTick = 'on'; end grid off axes('pos',[0.1 0.8 .3 .1]) imshow('direzionescavoENG.png') hold off TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezPCL2_ENG.png')); saveas(ancora,TempName); ChartSEZPC2 = Image(TempName); ChartSEZPC2.Style = {Height('6.6cm')}; ChartSEZPC2_cap = Paragraph(['Fig. ' num2str(FIG) ' - Vertical displacements direction '... 'observed during the pre-convergence phase and the reference time period']); FIG = FIG+1; ChartSEZPC2_cap.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; lot2 = Table({ChartSEZPC1, ChartSEZPC2}); lot2.Style = {ResizeToFitContents(false), Width('100%')}; close(figure(4)) % --- grafico spostamenti cumulati - periodo di preconvergenza --- figure(5) if maxY < 0 plot([0 Y],[0 Z_Cum_PC],'-','LineWidth',1,'Marker','.',... 'MarkerSize',15,'MarkerEdgeColor',[0.6350 0.0780 0.1840],'MarkerFaceColor',[0.6350 0.0780 0.1840]); else plot([Y 0],[Z_Cum_PC 0],'-','LineWidth',1,'Marker','.',... 'MarkerSize',15,'MarkerEdgeColor',[0.6350 0.0780 0.1840],'MarkerFaceColor',[0.6350 0.0780 0.1840]); end hold on ancora = plot(0,0,'s','Color','black','MarkerSize' ,13); set(ancora, 'markerfacecolor', get(ancora, 'color')); title('Cumulative displacements - Pre-convergence phase'); ylabel('Displacement [mm]'); xlabel('Position [m]'); h = gca; h.YAxis.MinorTick = 'on'; grid on if maxY > 0 % mm xlim([0 maxY+1]); else xlim([Y(end)-1 0]) end grid on iniY = min(min(Z_Cum_PC',Z_Cum')); endY = max(max(Z_Cum_PC',Z_Cum')); MAX = max(abs(iniY),endY); if MAX > 2.5 % Limiti Asse Y ylim([-MAX-1 MAX+1]) else ylim([-2.5 +2.5]); end if ini >= -15 || End <= 15 xticks(ini:1:End); else h.XAxis.MinorTick = 'on'; end TempName3 = char(strcat('Report',siteID,'-', char(toolrif),'Z_Cum_PC_ENG.png')); saveas(ancora(1),TempName3); close(figure(5)) % --- grafico spostamenti cumulati - Periodo di riferimento --- figure(6) if maxY < 0 plot([0 Y],[0 Z_Cum],'-','LineWidth',1,'Marker','.',... 'MarkerSize',15,'MarkerEdgeColor','b','MarkerFaceColor',[0.5,0.5,0.5]); else plot([Y 0],[Z_Cum 0],'-','LineWidth',1,'Marker','.',... 'MarkerSize',15,'MarkerEdgeColor','b','MarkerFaceColor',[0.5,0.5,0.5]); end hold on ancora = plot(0,0,'s','Color','black','MarkerSize' ,13); set(ancora, 'markerfacecolor', get(ancora, 'color')); title('Cumulative displacements - Reference time period'); ylabel('Displacement [mm]'); xlabel('Position [m]'); h = gca; h.YAxis.MinorTick = 'on'; grid on if MAX > 2.5 % Limiti Asse Y ylim([-MAX-1 MAX+1]) else ylim([-2.5 +2.5]); end if ini >= -15 || End <= 15 xticks(ini:1:End); else h.XAxis.MinorTick = 'on'; end TempName4 = char(strcat('Report',siteID,'-', char(toolrif),'Z_Cum_PCL_ENG.png')); saveas(ancora(1),TempName4); close(figure(6)) ChartPCL3 = Image(TempName3); ChartPCL4 = Image(TempName4); lot3 = Table({ChartPCL3, ChartPCL4}); lot3.Style = {ResizeToFitContents(false), Width('100%')}; ChartPCL3.Style = {Height('6.6cm'),HAlign('center')}; ChartPCL4.Style = {Height('6.6cm'),HAlign('center')}; ChartPCL3_cap = Paragraph(['Fig. ' num2str(FIG) ' - Cumulative differential displacements '... 'recorded in vertical direction during the pre-convergence phase and '... 'the reference time period']); ChartPCL3_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; FIG = FIG+1; % testi sezPCL = Heading3('PreConv Link'); sezPCL.Style = {FontSize(Font_tools),Bold(1),Italic(1)}; PCL = Section(); PCL.Title = sezPCL; testo1 = Paragraph(['Following graphs display the magnitude and direction '... 'of local and cumulative displacements '... 'measured along the vertical direction by the 3D MEMS sensor during the pre-convergence phase '... '(referring to the time interval between the reference date reported in Tab. 1 '... 'and the following date: ' datestr(datenum(data_PC),'dd-mm-yyyy') ') and the reference time period. '... 'In particular, negative values correspond to downwards movements of the node, '... 'while positive ones represent an upward displacement.']); % Locale ultimo mese progZ = max(abs(Z_Loc)); prY = find(abs(Z_Loc)==progZ); progY = Y(prY(1)); % Locale da sempre progZ_Tot = max(abs(Z_Loc_Tot)); prY_Tot = find(abs(Z_Loc_Tot)==progZ_Tot); progY_Tot = Y(prY_Tot(1)); % locale periodo pre-convergenza progZ_PC = max(abs(Z_Loc_PC)); prY_PC = find(abs(Z_Loc_PC)==progZ_PC); progY_PC = Y(prY_PC(1)); testo2 = Paragraph(['The maximum local differential displacement value recorded during the reference time period is '... num2str(max(abs(round(Z_Loc,1)))) ' mm, measured by the node '... 'located at ' num2str(progY) ' m from the fixed point. The same analysis performed on the pre-convergence phase '... 'and on the complete monitoring period highlights local differential displacement values of ' num2str(max(abs(round(Z_Loc_PC,1)))) ... ' and ' num2str(max(abs(round(Z_Loc_Tot,1)))) ' mm, recorded by nodes located respectively at ' num2str(progY_PC) ... ' m and ' num2str(progY_Tot) ' m from the fixed point.']); parte1 = ['The corresponding figure summarizes the vertical displacement direction of each single node, according '... 'to their position along the Array. In this specific representation, sensors featuring displacement values less than 0.5 mm '... 'are assumed as stable. During the pre-convergence phase, the analysis evidenced ' num2str(contaS-1) ' ']; if contaS-1 == 1 parte2 = 'node featuring '; else parte2 = 'nodes featuring '; end parte3 = ['upward movement, ' num2str(contaG-1) ' in downward direction, and ' num2str(contaF-1) ]; if contaF-1 == 1 parte4 = ' stable sensor. '; else parte4 = ' stable sensors. '; end parte5 = ['By taking into account the reference time period, the '... 'results show ' num2str(contaS_2-1) ]; if contaS_2-1 == 1 parte6 = ' sensor moving '; else parte6 = ' sensors moving '; end parte7 = ['upwards, ' num2str(contaG_2-1) ' in downward direction, and ' num2str(contaF_2-1) ]; if contaF_2-1 == 1 parte8 = ' stable node.'; else parte8 = ' stable nodes.'; end testo3 = Paragraph([parte1 parte2 parte3 parte4 parte5 parte6 parte7 parte8]); spazio = Paragraph(''); testo1.HAlign = 'justify'; testo2.HAlign = 'justify'; testo3.HAlign = 'justify'; add(DT,sezPCL); add(DT,testo1); add(DT,spazio); add(DT,testo2); add(DT,lot1); add(DT,ChartPCL_cap); add(DT,testo3); add(DT,lot2); add(DT,ChartSEZPC2_cap); add(DT,lot3); add(DT,ChartPCL3_cap); add(DT,br); else if ATTIVA == 1 testo = Paragraph('No data available for the reference time period.'); ATTIVA = 0; check = 1; add(DT,testo); end end end end fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'report_PCL_ENG function executed correctly'; fprintf(fileID,fmt,text); fclose(fileID); end