Advertisement
Guest User

Untitled

a guest
Jan 29th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 2.19 KB | None | 0 0
  1. clc
  2. clear
  3. format(8)
  4. close()
  5.  
  6. //Wczytanie plików
  7.  
  8. Meteo = fscanfMat('J:\ćwiczenie 2\xd\meteo_dane_ok.txt')
  9. Nivel = fscanfMat('J:\ćwiczenie 2\xd\Nivel_poz3_ok.txt')
  10. Pkt407 = fscanfMat('J:\ćwiczenie 2\xd\Punkt_407_ok.txt')
  11.  
  12. //Zamiana daty i godziny na czas GPS i część dnia
  13.  
  14. data_m=datenum(Meteo(:,3),Meteo(:,2),Meteo(:,1),Meteo(:,4),Meteo(:,5),Meteo(:,6))-datenum(Meteo(:,3),1,1,00,00,00)-1
  15. data_n=datenum(Nivel(:,3),Nivel(:,2),Nivel(:,1),Nivel(:,4),Nivel(:,5),Nivel(:,6))-datenum(Nivel(:,3),1,1,00,00,00)-1
  16. data_p=datenum(Pkt407(:,8),Pkt407(:,7),Pkt407(:,6),Pkt407(:,9),Pkt407(:,10),Pkt407(:,11))-datenum(Pkt407(:,8),1,1,00,00,00)-1
  17.  
  18. Meteo(:,1:6)=[]
  19. Nivel(:,1:6)=[]
  20. Pkt407(:,6:11)=[]
  21.  
  22. M =[data_m Meteo]
  23. N =[data_n Nivel]
  24. P =[data_p Pkt407(:,6:$)]
  25.  
  26.  
  27. //metoda regresji liniowej dla danych z tachimetru - wielkość Hz
  28.  
  29. OUTLIER = [];
  30. [wp, kp] = size(P);
  31. mV = 0.0003;
  32. for i = 1: wp-30
  33.     OKNO = P(i:i+30, :);
  34.     BADANA = P(i+15, :);
  35.     A = [OKNO(:, 1), ones(31,1)];
  36.     L = [OKNO(:, 2)];
  37.     x = pinv(A'*A) * A'*L;
  38.     Vteor = x(1,1) *OKNO(:, 1)+x(2,1);
  39.    
  40.     V = Vteor - OKNO(:,2)
  41.     VV = V.^2;
  42.     m0 = sqrt(sum(VV)/(length(OKNO)-1));
  43.    
  44.     if m0 > 2*mV
  45.         //rownianie regresji liniowe nie pasuje - nie ma trendu liniowego
  46.         //znalezc inna metode na szukanie outlierow
  47.        
  48.     else //wystepuje trend liniowy
  49.     [maxval, maxrow]=max(VV);
  50.         if sqrt(maxval) > 5*mV
  51.         //OUTLIER (odstająca)
  52.             OUTLIER=[OUTLIER; P(i+maxrow-1,:)];
  53.             unique_outliers = unique(OUTLIER, 'r')
  54.         else
  55.         //dane ok, trend w oknie bez outlierow
  56.         end
  57.         //wyswietlenie outlierów na wykresie
  58.        
  59.     end
  60. end
  61.  
  62. //wyrzucanie outlierów
  63.  
  64. Removed = P //kopia macierzy P potrzebna do wykresu
  65.  
  66. //tworzenie macierzy indeksów wierszy z kolumny P do wyrzucenia
  67. for i = 1:size(unique_outliers,1)
  68.     DEL(i) = vectorfind(P,unique_outliers(i,:),'r')
  69. end
  70.  
  71. P(DEL,:) = [] //wyrzucenie outlierów
  72.  
  73. figure()
  74. //wyswietlenie outlierów na wykresie
  75. subplot(2,1,1)
  76. plot(Removed(:, 1), Removed(:, 2), unique_outliers(:,1), unique_outliers(:,2), '*r')
  77. //wyswietlenie wykresu bez outlierow
  78. subplot(2,1,2)
  79. plot(P(:, 1), P(:, 2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement