Sync from remote server: 2025-10-12 18:56:41
This commit is contained in:
102
Tilt/defDatiKL.m
Executable file
102
Tilt/defDatiKL.m
Executable file
@@ -0,0 +1,102 @@
|
||||
% Funzione che definisce accelerazioni, dati magnetici, temperature, date e
|
||||
% livello della batteria per i nodi di tipo Klino Link
|
||||
function [TimeKL,ang_KL,temp_KL,ErrKlinoLink] = defDatiKL(DatiKlinoLink,...
|
||||
ErrKlinoLink,NodoKlinoLink,MEMS,Ndatidespike,rKL,FileName)
|
||||
|
||||
fileID = fopen(FileName,'a');
|
||||
fmt = '%s \r';
|
||||
text = 'defDatiKL function started';
|
||||
fprintf(fileID,fmt,text);
|
||||
|
||||
[r,c] = size(DatiKlinoLink);
|
||||
Ncorr = 0;
|
||||
% Elimino gli eventuali Not a Number
|
||||
for a = 2:r
|
||||
for b = 1:c
|
||||
check = isnan(DatiKlinoLink(a,b));
|
||||
if check == 1
|
||||
DatiKlinoLink(a,b) = DatiKlinoLink(a-1,b);
|
||||
ErrKlinoLink(a,b-1) = 1;
|
||||
Ncorr = Ncorr+1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
text = [num2str(Ncorr) ' NaN of Klino Link corrected by defDatiKL function'];
|
||||
fprintf(fileID,fmt,text);
|
||||
|
||||
[r,c]=size(DatiKlinoLink);
|
||||
TimeKL = DatiKlinoLink(:,1); % data
|
||||
div = (c-1)/rKL;
|
||||
if strcmp(NodoKlinoLink(1,4),'ADC') == 1 || strcmp(NodoKlinoLink{1,4} ,'null') == 1 || ...
|
||||
isempty(NodoKlinoLink{1,4}) == 1 || strcmp(NodoKlinoLink{1,4} ,'g') == 1
|
||||
ang_KL = zeros(r,rKL*3); % dati angoli
|
||||
p = 4; % passo
|
||||
elseif strcmp(NodoKlinoLink{1,4} ,'Gradi') == 1
|
||||
if div == 3
|
||||
ang_KL = zeros(r,rKL*2);
|
||||
p = 3; % passo
|
||||
else
|
||||
ang_KL = zeros(r,rKL*3);
|
||||
p = 4; % passo
|
||||
end
|
||||
end
|
||||
temp_KL = zeros(r,rKL); % temperatura del nodo per la calibrazione
|
||||
s = 1;
|
||||
for i = 1:rKL
|
||||
if strcmp(NodoKlinoLink(1,4),'ADC') == 1 || strcmp(NodoKlinoLink{1,4} ,'null') == 1 ...
|
||||
|| isempty(NodoKlinoLink{1,4}) == 1 || strcmp(NodoKlinoLink{1,4} ,'g') == 1
|
||||
ang_KL(:,s) = DatiKlinoLink(:,2+(i-1)*p);
|
||||
ang_KL(:,s+1) = DatiKlinoLink(:,3+(i-1)*p);
|
||||
ang_KL(:,s+2) = DatiKlinoLink(:,4+(i-1)*p);
|
||||
s = s+3;
|
||||
temp_KL(:,i) = DatiKlinoLink(:,5+(i-1)*p);
|
||||
[rT,~] = size(temp_KL);
|
||||
if MEMS == 2
|
||||
for j = 1:rT
|
||||
if temp_KL(j,i) > 200
|
||||
temp_KL(j,i) = temp_KL(j,i) - 256; % Correzione della temperatura dei nuovi MEMS
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif strcmp(NodoKlinoLink{1,4} ,'Gradi')
|
||||
ang_KL(:,s) = DatiKlinoLink(:,2+(i-1)*p);
|
||||
ang_KL(:,s+1) = DatiKlinoLink(:,3+(i-1)*p);
|
||||
if div == 3
|
||||
s = s+2;
|
||||
else
|
||||
ang_KL(:,s+2) = DatiKlinoLink(:,4+(i-1)*p);
|
||||
s = s+3;
|
||||
end
|
||||
temp_KL(:,i) = DatiKlinoLink(:,4+(i-1)*p);
|
||||
end
|
||||
end
|
||||
|
||||
s = 1;
|
||||
Num_Dati = Ndatidespike; % numero di dati per il despike
|
||||
if Num_Dati > r
|
||||
Num_Dati = r;
|
||||
end
|
||||
for i = 1:rKL
|
||||
% despiking
|
||||
ang_KL(1:end-1,s) = filloutliers(ang_KL(1:end-1,s),'linear','movmedian',Num_Dati);
|
||||
ang_KL(1:end-1,s+1) = filloutliers(ang_KL(1:end-1,s+1),'linear','movmedian',Num_Dati);
|
||||
if strcmp(NodoKlinoLink(1,4),'ADC') == 1 || strcmp(NodoKlinoLink{1,4} ,'null') == 1 ...
|
||||
|| isempty(NodoKlinoLink{1,4}) == 1 || strcmp(NodoKlinoLink{1,4} ,'g') == 1
|
||||
ang_KL(1:end-1,s+2) = filloutliers(ang_KL(1:end-1,s+2),'linear','movmedian',Num_Dati);
|
||||
s = s+3;
|
||||
elseif strcmp(NodoKlinoLink{1,4} ,'Gradi')
|
||||
if div == 3
|
||||
s = s+2;
|
||||
else
|
||||
ang_KL(1:end-1,s+2) = filloutliers(ang_KL(1:end-1,s+2),'linear','movmedian',Num_Dati);
|
||||
s = s+3;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
text = 'Data of Klino Link defined correctly, defDatiKL function closed';
|
||||
fprintf(fileID,fmt,text);
|
||||
fclose(fileID);
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user