Advertisement
Guest User

Untitled

a guest
Nov 30th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 3.17 KB | None | 0 0
  1.  
  2. %wczytanie sygna�u
  3. wf=wrecfile('test.dta'); % otwarcie pliku
  4.  
  5. % wczytanie nazw sygnalow i nazw ich jednostek
  6. [signals, units] = wrec_sigs(wf);
  7.  
  8. % wczytanie ile jest segmentow w tym sygnale
  9. liczba_segmentow = wrec_nofdsgm(wf);
  10.  
  11.  
  12. numer_segmentu = 1;
  13. %struktura zawierajaca naglowek->ciekawe informacje o segmencie
  14. segment = wrec_dsgm(wf, numer_segmentu);
  15.  
  16. %fsmp = (dtend -dtbeg)/(nsmp - 1)
  17. % ale powinna by� taka sama w ka�dym segmencie
  18. f_probkowania_sygnalu = wrec_freqsmp(wf);
  19.  
  20. %dane = wrec rdsig(wf,nr sgm,first smp,nsmp,signals);
  21. %pobiera sygnaďż˝
  22. %dane = wrec_rdsig(wf,1,0,segment.nsmp-1,{'#ICP'});
  23.  
  24. %plot(dane);
  25.  
  26.  
  27.  
  28. %nie dziel na fragmenty, bedziesz to robil w petli i od razu na fragmentach wykonywal operacje a potem sumowals
  29.  
  30. %ww kod wykonaj tylko raz a potem nie bo wczytanie tego ICP to 80MB ramu lub co� ko�o tego
  31. %potem zakomentuj
  32.  
  33. %zad 1
  34.  
  35. dlugosc_bloku = 140
  36. for(probka = 1:dlugosc_bloku:segment.nsmp-dlugosc_bloku)
  37.   blok_probek = wrec_rdsig(wf,probka,probka+dlugosc_bloku-1,{'#ICP'});
  38.   %filtracja dolnoprzepustowa bloku
  39.   %musze zfiltrowac do dolu z ~40Hz do 1/4 Hz czyli 160 musze zdecymowac, czyli moge decymowac 8,5,4
  40.   %niech bloki maja dlugosc 8*5*4 = 160
  41.  
  42.   %zaprojektuj filtr, to jest chyba zle, przeczytaj w dokumentacji jak to zrobic lepiej
  43.   %policz czestotliwosc odciecia i chyba w dokumentacji jest gdzie to wpisac
  44.   %lub uzyj  filters designera wmatlabie
  45.  
  46.   ford = ellipord(10/81,1/8,0.5,60); %ellipord(Wp, Ws, Rp, Rs) Wp,Ws-pass frequency, stop frequency  Rp ripple Rs - o ile decybeli bedzie tlumic
  47.   [b,a]=ellip(ford,0.5,60,10/81,"low"); %ellip(N, Rp, Rs, Wp, "low")
  48.   %wyznaczyc stan poczatkowy filtru
  49.  
  50.   %stan poczatkowy to chyba tylko same, zera, potem przekazuje ten wektor jako wejscie i wyjscie
  51.  
  52.     %filtrujemy, odbieramy stan filtru
  53.   wyjscie_1 = filter(b,a,blok_probek)
  54.  
  55.     %decymuje 8 krotnie
  56.   wyjscie_1decymacja = decimate(wyjscie_1,8);
  57.   zbieramy1 = [zbieramy1 wyjscie_1decymacja];
  58.  
  59.   if(length(zbieramy1)>= 5
  60.     %wsp filtra niedobrane
  61.     ford2 = ellipord(10/81,1/8,0.5,60); %ellipord(Wp, Ws, Rp, Rs) Wp,Ws-pass frequency, stop frequency  Rp ripple Rs - o ile decybeli bedzie tlumic
  62.     [b2,a2]=ellip(ford,0.5,60,10/81,"low"); %ellip(N, Rp, Rs, Wp, "low")
  63.    
  64.     wyjscie_2 = filter(b2,a2,  zbieramy1);
  65.       wyjscie_2decymacja = decimate(wyjscie_2,5);
  66.  
  67.     zbieramy2 = [zbieramy2 wyjscie_2decymacja];
  68.     %napisac wywalanie ze zbieranie1
  69.    
  70.     if(length(zbieramy2)>=4)
  71.       %wsp filtra niedobrane
  72.       ford3 = ellipord(10/81,1/8,0.5,60); %ellipord(Wp, Ws, Rp, Rs) Wp,Ws-pass frequency, stop frequency  Rp ripple Rs - o ile decybeli bedzie tlumic
  73.       [b3,a3]=ellip(ford,0.5,60,10/81,"low"); %ellip(N, Rp, Rs, Wp, "low")
  74.    
  75.       wyjscie_3 = filter(b3,a3,  zbieramy1);
  76.       wyjscie_3decymacja = decimate(wyjscie_3,4);
  77.  
  78.       zbieramy3 = [zbieramy3 wyjscie_3decymacja];
  79.       %napisac wywalanie ze zbieranie1
  80.      
  81.         if(zbieramy3 >= 60)
  82.           transformata = fft(zbieramy3(1:60));
  83.           moc = transformata(2).^2+transformata(3).^2+transformata(4).^2;
  84.          
  85.          zbieramy3 = zbieramy3(31:length(zbieramy3));
  86.        endif
  87.      endif
  88.  
  89.   endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement