Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.79 KB | None | 0 0
  1. clc; clear all; close all;
  2. %--  R    - kardiogramos R danteliu adresai
  3. %--  APB  - arterines pulsines weivai reiksmiu vektorius
  4. %--  Td   - diskretizavimo periodas =125Hz
  5. %--  N    - is laikmenos nuskaitytu reiksmiu skaicius
  6.  
  7. Td = 0.008;
  8.  
  9. %--  Nuskaitomi duomenys
  10. fid=    fopen('C:\G2V02\RR3_039.dat','r');
  11.    [R_adr, N]= fread(fid,'uint32');
  12. fclose(fid);
  13. fid=    fopen('C:\G2V02\APB3_039.dat','r');
  14.    [APB, M]= fread(fid,'int32');
  15. fclose(fid);
  16.  
  17. %-- atvaizduojame signalus
  18. RR           = zeros(1,N);
  19. RR(R_adr) = 1;
  20. asis         = 0:M-1;
  21. figure(1)
  22. plot(asis,APB,asis,230+50*RR,'r')
  23. title('Duoti duomenys');box off;
  24. axis tight; set(gca,'FontSize',12)
  25.  
  26. % * * * 1 Užduotis * * *
  27. % Pulsinių bangų (PB) seką išskaidome į N atskirų pulsinių bangų.
  28. for i = 2 : N
  29.     weivai{i - 1} = APB(R_adr(i - 1) : R_adr(i));
  30. end
  31.  
  32. % Kiekvienai pulsinei bangai (PB) apskaičiuojame diskrečiąją Furjė transformaciją
  33. % tam, kad galėtume nustatyti harmonikų amplitudes.
  34. for i = 1 : N - 1
  35.     furje{i} = fft(weivai{i});
  36.     for j = 1 : 12
  37.         hrmAmpl{j}(i) = abs(furje{i}(j));
  38.      end
  39. end
  40.  
  41. % Sudarome 12 sekų po N reikšmių - pirmoji seka sudaryta iš pirmųjų
  42. % harmonikų amplitudžių reikšmių, antroji iš antrųjų ir t.t.
  43. for i = 1 : 12
  44.     figure(1+i)
  45.     stem(hrmAmpl{i})
  46.     title([num2str(i),' seka']);box off;
  47.     axis tight; set(gca,'FontSize',12)
  48. end
  49.  
  50. % Atvaizduojame 4 pulsines bangas (PB).
  51. for i = 1:4
  52.     figure(14)
  53.     subplot(4,1,i)
  54.     plot(weivai{i})
  55.     title([num2str(i),' pulsine banga']);box off;
  56.     axis tight; set(gca,'FontSize',12)
  57. end
  58.  
  59. % 2 užduotis
  60. %Rasti PTT kiekvienai pulsinei bangai ir
  61. %sudaryti N ilgio seką iš PTT reikšmių.
  62. PTT = zeros(1,N-1);
  63. for i = 1 : N - 1
  64.     [y, x] = max(weivai{i});
  65.     for j = x : -1 : 0
  66.         if weivai{i}(j-1) >= weivai{i}(j)
  67.             break;
  68.         end
  69.     end
  70.     PTT(i) = j;
  71. end
  72. %Rezultatus atvaizduoti naudojant funkciją stem().
  73. figure(15)
  74. stem(PTT(1 : N - 1))
  75. title('PPT reiksmes');box off;
  76. axis tight; set(gca,'FontSize',12)
  77.  
  78. % 3 užduotis
  79. % Paskaičiuoti koreliacijos koeficientus tarp PTT sekos ir
  80. % kiekvienos 1-oje užduotyje sudarytos PB harmonikų sekos.
  81.  
  82. korr_koef = zeros(1, 12);
  83. for i = 1 : 12
  84.     temp = corrcoef(PTT, hrmAmpl{i});
  85.     korr_koef(i) = temp(1, 2);
  86. end
  87. % Gautą koreliacijos koeficientų seką atvaizduoti naudojant funkciją stem().
  88. figure(16)
  89. stem(korr_koef(1 : 12))
  90. title('Koreliacijos koeficientai');box off;
  91. axis tight; set(gca,'FontSize',12)
  92.  
  93. % 4 užduotis
  94. % Kiekvienai pirmos užduoties PB harmonikų sekai sudaryti ir
  95. % atvaizduoti histogramas, reikšmių intervalą skirstant į 20 dalių.
  96. for i = 1:12
  97.     figure(16+i)
  98.     histogram(hrmAmpl{i},20)
  99.     title([num2str(i),' seka']);box off;
  100.     axis tight; set(gca,'FontSize',12)
  101. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement