Files
matlab-python/ATD/conv_grezziSM.m

64 lines
2.5 KiB
Matlab
Executable File

function [DatiStress,DatiNTCStress,ErrStressMeter] = conv_grezziSM(Stress,NTCStress,...
DatiStressMeter_Rif,DatiNTCStressMeter_Rif,DCalSMTot,NodoStressMeter,ErrStressMeter,...
SM_NTC,rSM,FileName)
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'conv_grezziSM function started';
fprintf(fileID,fmt,text);
[rA,cA] = size(Stress);
DatiStress = zeros(rA,cA);
DatiNTCStress = zeros(rA,cA);
for e = 1:rSM
if strcmp(NodoStressMeter(e,3),'Hz')
GF = cell2mat(DCalSMTot(e,1));
% Spacchetto i parametri di calibrazione
digit = (Stress(:,e).^2)*0.001; % Freq. ^2 *E-3
digit_Rif = (DatiStressMeter_Rif(1,e).^2)*0.001; % Freq. ^2 *E-3
if SM_NTC(e,1)==0 % non è presente il termometro
DatiStress(:,e) = (digit(:,e)-digit_Rif(1,e))*GF; % conversione in Mpa
elseif SM_NTC(e,1)==1 % è presente il termometro - correzione termica
A = 1.4051*10^(-3);
B = 2.369*10^(-4);
C = 1.019*10^(-7);
R = NTCStress(:,e);
[rN,~] = size(R);
for n = 1:rN
if R(n) <= 0
if n > 1
R(n) = R(n-1);
else
R(n) = 5000;
end
if ErrStressMeter(n,ii) == 0
ErrStressMeter(n,ii) = 0.5;
end
end
end
L = reallog(R);
DatiNTCStress(:,e) = (1./(A + B*L + C*(L.^3))) -273.2; % conversione in gradi centigradi
L_Rif = reallog(DatiNTCStressMeter_Rif(1,e));
DatiNTCStressMeter_Rif(1,e) = (1./(A + B*L_Rif + C*(L_Rif.^3))) -273.2; % conversione in gradi centigradi
[rT,~] = size(DatiNTCStress);
for T = 1:rT
if DatiNTCStress(T,e) > 70 || DatiNTCStress(T,e) < -20
if T == 1
DatiNTCStress(T,e) = DatiNTCStress(T+1,e);
else
DatiNTCStress(T,e) = DatiNTCStress(T-1,e);
end
if ErrStressMeter(T,e) == 0
ErrStressMeter(T,e) = 0.5;
end
end
end
DatiStress(:,e) = (digit-digit_Rif)*GF+(DatiNTCStress(:,e)-DatiNTCStressMeter_Rif(1,e))*2*GF; % conversione in mm
end
end
end
text = 'Calibrations of Stress Meter defined correctly. conv_grezziSM function closed';
fprintf(fileID,fmt,text);
fclose(fileID);
end