Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %wczytanie sygna�u
- wf=wrecfile('test.dta'); % otwarcie pliku
- % wczytanie nazw sygnalow i nazw ich jednostek
- [signals, units] = wrec_sigs(wf);
- % wczytanie ile jest segmentow w tym sygnale
- liczba_segmentow = wrec_nofdsgm(wf);
- numer_segmentu = 1;
- %struktura zawierajaca naglowek->ciekawe informacje o segmencie
- segment = wrec_dsgm(wf, numer_segmentu);
- %fsmp = (dtend -dtbeg)/(nsmp - 1)
- % ale powinna by� taka sama w ka�dym segmencie
- f_probkowania_sygnalu = wrec_freqsmp(wf);
- %dane = wrec rdsig(wf,nr sgm,first smp,nsmp,signals);
- %pobiera sygnaďż˝
- %dane = wrec_rdsig(wf,1,0,segment.nsmp-1,{'#ICP'});
- %plot(dane);
- %nie dziel na fragmenty, bedziesz to robil w petli i od razu na fragmentach wykonywal operacje a potem sumowals
- %ww kod wykonaj tylko raz a potem nie bo wczytanie tego ICP to 80MB ramu lub co� ko�o tego
- %potem zakomentuj
- %zad 1
- dlugosc_bloku = 140
- for(probka = 1:dlugosc_bloku:segment.nsmp-dlugosc_bloku)
- blok_probek = wrec_rdsig(wf,probka,probka+dlugosc_bloku-1,{'#ICP'});
- %filtracja dolnoprzepustowa bloku
- %musze zfiltrowac do dolu z ~40Hz do 1/4 Hz czyli 160 musze zdecymowac, czyli moge decymowac 8,5,4
- %niech bloki maja dlugosc 8*5*4 = 160
- %zaprojektuj filtr, to jest chyba zle, przeczytaj w dokumentacji jak to zrobic lepiej
- %policz czestotliwosc odciecia i chyba w dokumentacji jest gdzie to wpisac
- %lub uzyj filters designera wmatlabie
- 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
- [b,a]=ellip(ford,0.5,60,10/81,"low"); %ellip(N, Rp, Rs, Wp, "low")
- %wyznaczyc stan poczatkowy filtru
- %stan poczatkowy to chyba tylko same, zera, potem przekazuje ten wektor jako wejscie i wyjscie
- %filtrujemy, odbieramy stan filtru
- wyjscie_1 = filter(b,a,blok_probek)
- %decymuje 8 krotnie
- wyjscie_1decymacja = decimate(wyjscie_1,8);
- zbieramy1 = [zbieramy1 wyjscie_1decymacja];
- if(length(zbieramy1)>= 5
- %wsp filtra niedobrane
- 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
- [b2,a2]=ellip(ford,0.5,60,10/81,"low"); %ellip(N, Rp, Rs, Wp, "low")
- wyjscie_2 = filter(b2,a2, zbieramy1);
- wyjscie_2decymacja = decimate(wyjscie_2,5);
- zbieramy2 = [zbieramy2 wyjscie_2decymacja];
- %napisac wywalanie ze zbieranie1
- if(length(zbieramy2)>=4)
- %wsp filtra niedobrane
- 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
- [b3,a3]=ellip(ford,0.5,60,10/81,"low"); %ellip(N, Rp, Rs, Wp, "low")
- wyjscie_3 = filter(b3,a3, zbieramy1);
- wyjscie_3decymacja = decimate(wyjscie_3,4);
- zbieramy3 = [zbieramy3 wyjscie_3decymacja];
- %napisac wywalanie ze zbieranie1
- if(zbieramy3 >= 60)
- transformata = fft(zbieramy3(1:60));
- moc = transformata(2).^2+transformata(3).^2+transformata(4).^2;
- zbieramy3 = zbieramy3(31:length(zbieramy3));
- endif
- endif
- endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement