% Funzione che ricostrusice i segmenti di pertinenza e la profondità dello % spostamento relativo. In output si ha % SpeTuL = segmento di pertinenza dei nodi di tipo Tunnel Link % SpeRL = segmento di pertinenza dei nodi di tipo Radial Link function [SpeTuL,SpeRL,SpeTLH,PsTLH,SpeTLHRH,PsTLHRH,SpePCL,SpePCLHR]... = schemaSP(yesTuL,yesRL,yesTLH,yesTLHRH,yesPCL,yesPCLHR,... NodoTunnelLink,NodoRadialLink,NodoTiltLinkH,NodoTiltLinkHRH,... NodoPreConvLink,NodoPreConvLinkHR,rTuL,rRL,rTLH,rTLHRH,rPCL,rPCLHR,... catena,FileName) % Apro file di testo fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'schemaSP function started'; fprintf(fileID,fmt,text); Nodi = [cell2mat(catena(:,3)) cell2mat(catena(:,2)) cell2mat(catena(:,1))]; %% Tunnel Link if yesTuL == 1 % Definizione dei segmenti di pertinenza dei singoli accelerometri % SpeTuL = Segmento di Pertinenza del nodo (posizione i-esima del nodo i-esimo) NodiTuL = cell2mat(NodoTunnelLink(:,2:3)); % Costruisco il segmento di pertinenza spe0 = 0; % segmento di pertinenza dell'ancora spe1 = ((NodiTuL(1,2) + NodiTuL(2,2))/2); % segmento di pertinenza del primo nodo if rTuL>2 spe2 = zeros(rTuL-2,1); for i = 2:(rTuL-1) media1 = NodiTuL(i,2) + NodiTuL(i-1,2)/2; media2 = NodiTuL(i,2) + NodiTuL(i+1,2)/2; spei = media2 - media1; spe2(i-1,1) = spei; end else spe2 = []; end spelast = (NodiTuL(rTuL,2)-(NodiTuL(rTuL-1,2)+NodiTuL(rTuL,2))/2)*2; % segmento di pertinenza dell'ultimo nodo SpeTuL = [spe0; spe1; spe2; spelast]; text = 'Segments of relevance of Tunnel Link defined correctly'; fprintf(fileID,fmt,text); else % Non ci sono nodi Tunnel Link SpeTuL = []; text = 'Segments of relevance of Tunnel Link not defined'; fprintf(fileID,fmt,text); end %% Radial Link if yesRL == 1 % Definizione dei segmenti di pertinenza dei singoli accelerometri % SpeRL = Segmento di Pertinenza del nodo (posizione i-esima del nodo i-esimo) NodiRL = cell2mat(NodoRadialLink(:,2:3)); % Costruisco il segmento di pertinenza spe0 = 0; % segmento di pertinenza dell'ancora spe1 = ((NodiRL(1,2) + NodiRL(2,2))/2); % segmento di pertinenza del primo nodo if rRL>2 spe2 = zeros(rRL-2,1); for i = 2:(rRL-1) media1 = NodiRL(i,2) + NodiRL(i-1,2)/2; media2 = NodiRL(i,2) + NodiRL(i+1,2)/2; spei = media2 - media1; spe2(i-1,1) = spei; end else spe2 = []; end spelast = (NodiRL(rRL,2)-(NodiRL(rRL-1,2)+NodiRL(rRL,2))/2)*2; % segmento di pertinenza dell'ultimo nodo SpeRL = [spe0; spe1; spe2; spelast]; text = 'Segments of relevance of Radial Link defined correctly'; fprintf(fileID,fmt,text); else % Non ci sono nodi Radial Link SpeRL = []; text = 'Segments of relevance of Radial Link not defined'; fprintf(fileID,fmt,text); end %% Tilt Link H if yesTLH == 1 % Definizione dei segmenti di pertinenza dei singoli accelerometri % SpeTLH = Segmento di Pertinenza del nodo (posizione i-esima del nodo i-esimo) % PsTLH = Posizione dello spostamento NodiTLH = cell2mat(NodoTiltLinkH(:,2:3)); % Costruisco il segmento di pertinenza spe0 = 0; % segmento di pertinenza dell'ancora spe1 = (NodiTLH(1,2) + NodiTLH(2,2))/2; % segmento di pertinenza del primo nodo, lo considero + if rTLH > 2 spe2 = zeros(rTLH-2,1); for i = 2:(rTLH-1) media1 = (abs(NodiTLH(i,2)) + abs(NodiTLH(i-1,2)))/2; media2 = (abs(NodiTLH(i,2)) + abs(NodiTLH(i+1,2)))/2; spei = media2 - media1; spe2(i-1,1) = spei; % li considero positivi end else spe2 = []; end % segmento di pertinenza dell'ultimo nodo spelast = (NodiTLH(end,2)-((NodiTLH(rTLH-1,2)+NodiTLH(rTLH,2)))/2)*2; SpeTLH = [spe0; spe1; spe2; spelast]; % raccolgo i segmenti di pertinenza % Calcolo la posizione dello spostamento relativo ps0 = NodiTLH(1,2); % posizione dell'ancora if spe1 <= 1 ps1 = NodiTLH(1,2)+spe1; % la posizione del primo nodo TLH è data da else ps1 = cell2mat(NodoTiltLinkH(1,3))+0.5; end ps2 = zeros(rTLH-1,1); for j = 2:rTLH if j == 2 if SpeTLH(j+1,1) <= 1 psj = ps1 + SpeTLH(j+1,1); else psj = cell2mat(NodoTiltLinkH(j,3))+0.5; end % la posizione a cui il nodo j di tipo Tilt Link H rileva lo spostamento è data dalla % somma fra il suo segmento di pertinenza e la posizione a cui rileva lo spostamento % il nodo precedente psPrec = psj; % mi serve come appoggio per il calcolo della posizione dello spostamento del nodo successivo else if SpeTLH(j+1,1) <= 1 psj = psPrec + SpeTLH(j+1,1); else psj = cell2mat(NodoTiltLinkH(j,3))+0.5; end psPrec = psj; end ps2(j-1,1) = psj; end PsTLH = [ps0; ps1; ps2]; text = 'Segments of relevance of Tilt Link H defined correctly'; fprintf(fileID,fmt,text); for i = 2:rTLH+1 if SpeTLH(i) > 1 SpeTLH(i) = 1; end end else % Non ci sono nodi Tilt Link H SpeTLH = []; PsTLH = []; text = 'Segments of relevance of Tilt Link H not defined'; fprintf(fileID,fmt,text); end %% Tilt Link HR H if yesTLHRH == 1 % Definizione dei segmenti di pertinenza delle ampolle % PsTLHRH = posizione dello spostamento NodiTLHRH = cell2mat(NodoTiltLinkHRH(:,2:3)); % Costruisco il segmento di pertinenza spe0 = 0; % segmento di pertinenza dell'ancora spe1 = (NodiTLHRH(1,2) + NodiTLHRH(2,2))/2; % segmento di pertinenza del primo nodo, lo considero + if rTLHRH > 2 spe2 = zeros(rTLHRH-2,1); for i = 2:(rTLHRH-1) media1 = (abs(NodiTLHRH(i,2)) + abs(NodiTLHRH(i-1,2)))/2; media2 = (abs(NodiTLHRH(i,2)) + abs(NodiTLHRH(i+1,2)))/2; spei = media2 - media1; spe2(i-1,1) = spei; % li considero positivi end else spe2 = []; end % segmento di pertinenza dell'ultimo nodo spelast = (NodiTLHRH(end,2)-((NodiTLHRH(rTLH-1,2)+NodiTLHRH(rTLHRH,2)))/2)*2; SpeTLHRH = [spe0; spe1; spe2; spelast]; % raccolgo i segmenti di pertinenza % Calcolo la posizione dello spostamento relativo ps0 = Nodi(1,2); % posizione dell'ancora if spe1 <= 1 ps1 = Nodi_HRH(1,2)+spe1; % la posizione del primo nodo TLHRH è data da ancora + segmento di pertinenza del primo nodo else ps1 = cell2mat(NodoTiltLinkHRH(1,3))+0.5; end ps2 = zeros(rTLHRH-1,1); for j = 2:rTLHRH if j == 2 if SpeTLHRH(j+1,1) <= 1 psj = ps1 + SpeTLHRH(j+1,1); else psj = cell2mat(NodoTiltLinkHRH(j,3))+0.5; end % la posizione a cui il nodo j di tipo Tilt Link H rileva lo spostamento è data dalla % somma fra il suo segmento di pertinenza e la posizione a cui rileva lo spostamento % il nodo precedente psPrec = psj; % mi serve come appoggio per il calcolo della posizione dello spostamento del nodo successivo else if SpeTLHRH(j+1,1) <= 1 psj = psPrec + SpeTLHRH(j+1,1); else psj = cell2mat(NodoTiltLinkHRH(j,3))+0.5; end psPrec = psj; end ps2(j-1,1) = psj; end PsTLHRH = [ps0; ps1; ps2]; for i = 2:rTLHRH+1 if SpeTLHRH(i) > 1 SpeTLHRH(i) = 1; end end text = 'Segments of relevance of Tilt Link HR H defined correctly'; fprintf(fileID,fmt,text); else % Non ci sono nodi Tilt Link HR H SpeTLHRH = []; PsTLHRH = []; text = 'Segments of relevance of Tilt Link HR H not defined'; fprintf(fileID,fmt,text); end %% PreConv Link if yesPCL == 1 % Definizione dei segmenti di pertinenza dei singoli accelerometri % SpePCL = Segmento di Pertinenza del nodo (posizione i-esima del nodo i-esimo) NodiPCL = cell2mat(NodoPreConvLink(:,2:3)); % Costruisco il segmento di pertinenza spe0 = 0; % segmento di pertinenza dell'ancora spe1 = (NodiPCL(1,2) + NodiPCL(2,2))/2; % segmento di pertinenza del primo nodo, lo considero + if rPCL > 2 spe2 = zeros(rPCL-2,1); for i = 2:(rPCL-1) media1 = (abs(NodiPCL(i,2)) + abs(NodiPCL(i-1,2)))/2; media2 = (abs(NodiPCL(i,2)) + abs(NodiPCL(i+1,2)))/2; spei = media2 - media1; spe2(i-1,1) = spei; % li considero positivi end else spe2 = []; end % segmento di pertinenza dell'ultimo nodo spelast = (NodiPCL(end,2)-((NodiPCL(rPCL-1,2)+NodiPCL(rPCL,2)))/2)*2; SpePCL = [spe0; spe1; spe2; spelast]; % raccolgo i segmenti di pertinenza text = 'Segments of relevance of PreConv Link defined correctly'; fprintf(fileID,fmt,text); else % Non ci sono nodi PreConv Link SpePCL = []; text = 'Segments of relevance of PreConv Link not defined'; fprintf(fileID,fmt,text); end %% Pre Conv Link HR if yesPCLHR == 1 % Definizione dei segmenti di pertinenza delle ampolle NodiPCLHR = cell2mat(NodoPreConvLinkHR(:,2:3)); % Costruisco il segmento di pertinenza spe0 = 0; % segmento di pertinenza dell'ancora spe1 = (NodiPCLHR(1,2) + NodiPCLHR(2,2))/2; % segmento di pertinenza del primo nodo, lo considero + if rPCLHR > 2 spe2 = zeros(rPCLHR-2,1); for i = 2:(rPCLHR-1) media1 = (abs(NodiPCLHR(i,2)) + abs(NodiPCLHR(i-1,2)))/2; media2 = (abs(NodiPCLHR(i,2)) + abs(NodiPCLHR(i+1,2)))/2; spei = media2 - media1; spe2(i-1,1) = spei; % li considero positivi end else spe2 = []; end % segmento di pertinenza dell'ultimo nodo spelast = (NodiPCLHR(end,2)-((NodiPCLHR(rPCLHR-1,2)+NodiPCLHR(rPCLHR,2)))/2)*2; SpePCLHR = [spe0; spe1; spe2; spelast]; % raccolgo i segmenti di pertinenza text = 'Segments of relevance of PreConv Link HR defined correctly'; fprintf(fileID,fmt,text); else % Non ci sono nodi PreConv Link HR SpePCLHR = []; text = 'Segments of relevance of PreConv Link HR not defined'; fprintf(fileID,fmt,text); end %% Chiudo Testo text = 'schemaSP function ended'; fprintf(fileID,fmt,text); fclose(fileID); end