Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. clearvars -except Hd
  2. close all
  3.  
  4. % HD FDATOOL 500-600 Hz
  5.  
  6. for Namostrasnoteste=1000
  7. load('medida_1ms.mat')
  8. dados(1).tempo = dados(1).tempo(2.065e4:3.331e5);
  9. dados(2).tempo = dados(2).tempo(2.065e4:3.331e5);
  10. dados(1).valores = dados(1).valores(2.065e4:3.331e5);
  11. dados(2).valores = dados(2).valores(2.065e4:3.331e5);
  12.  
  13.  
  14. % load('medida_1us.mat')
  15. %%
  16. n=1; % trigger
  17. [a,inicio]=find(dados(1).valores>mean(dados(1).valores),1,'first')
  18. figure(1);hold off;
  19. plot(dados(n).tempo(1:inicio),dados(n).valores(1:inicio));hold on
  20. [a,fim]=find(diff(dados(1).valores(inicio:end)<mean(dados(1).valores(inicio:end)))>0,1,'last');
  21. plot(dados(n).tempo(inicio:inicio+fim),dados(n).valores(inicio:inicio+fim),'r');hold on
  22. % asdasdas
  23. % seleciona somente parte com sinal valido
  24. for k=1:5
  25. dados(k).valores=dados(k).valores(inicio:inicio+fim);
  26. dados(k).tempo=dados(k).tempo(inicio:inicio+fim);
  27. end
  28. % verificar se manteve o mesmo intervalo
  29. plot(dados(n).tempo,dados(n).valores,'g');hold off
  30.  
  31.  
  32.  
  33. n=2; %dados de verdade
  34. % remove desde a ultima borda de subida
  35. [a,i]=find(diff((dados(n).valores>mean(dados(n).valores)))>0,1,'last')
  36. plot(dados(n).tempo,dados(n).valores,'g');hold on
  37. plot(dados(n).tempo(i),dados(n).valores(i),'go')
  38. dados(n).valores=dados(n).valores(1:i);
  39. dados(n).tempo=dados(n).tempo(1:i);
  40. Namostrasnoteste=Namostrasnoteste-1; % inspecao manual, perdeu 1 ciclo
  41.  
  42. % remove antes da primeira borda de subida
  43. [a,i]=find(diff((dados(n).valores>mean(dados(n).valores)))>0,1,'first')
  44. plot(dados(n).tempo,dados(n).valores,'g');hold on
  45. plot(dados(n).tempo(i),dados(n).valores(i),'go');
  46. dados(n).valores=dados(n).valores(i:end);
  47. dados(n).tempo=dados(n).tempo(i:end);
  48. Namostrasnoteste=Namostrasnoteste-3; % inspecao manual, perdeu 3 ciclos
  49.  
  50. % plot(dados(n).tempo,dados(n).valores,'g');hold off
  51. % asdasdas
  52. % mantem somente alguns ciclos para teste
  53. % T=1/dados(n).samplerate;
  54. %
  55. % N=1:(2*10e-6/T);
  56. % dados(n).valores=dados(n).valores(N);
  57. % dados(n).tempo=dados(n).tempo(N);
  58. % asdasdasd
  59.  
  60. % reamostra com 10x mais amostras para ter uma precisao na definicao da
  61. % duracao do ciclo
  62. novos_tempo=linspace(min(dados(n).tempo(1)),... % inicio do novo vetor de tempo
  63. (dados(n).tempo(end)),... % fim do novo vetor de tempo
  64. Namostrasnoteste*200); % numero de amostras desejados*
  65. dados(n).valores=interp1(dados(n).tempo,dados(n).valores,novos_tempo);
  66. dados(n).tempo=novos_tempo;
  67.  
  68. dados(n).samplerate=1/(diff(novos_tempo(1:2)))
  69. Namostrasnoteste
  70. % idealmente
  71. amostras_por_periodo=length(dados(n).valores)/Namostrasnoteste;
  72. % por analise do histograma recalcula o numero de mostras
  73. % encontra as bordas de subida
  74. [a,i]=find(diff(dados(n).valores>mean(dados(n).valores))>0);
  75. trocas=diff(i); % qual a distância entre troca de bits?
  76. figure(3);
  77. hist(trocas,1000);
  78. [a,i]=hist(trocas,1000);
  79. % seleciona somente os valores dos histogramas altos
  80. [b,a]=find(a>5);
  81.  
  82. % por inspeção manual parece o que retorna mais proximos dos inteiros
  83. i(a)/(i(a(1))/4)
  84. i(a)/(i(a(2))*2/6)
  85. periodo_suposto=(i(a(2))*2/6)
  86.  
  87. amostras_por_periodo_novo=floor(amostras_por_periodo); % arredonda simplesmente
  88. novos_tempo=linspace(dados(n).tempo(1),... % inicio do novo vetor de tempo
  89. (dados(n).tempo(end)),... % fim do novo vetor de tempo
  90. Namostrasnoteste*amostras_por_periodo_novo); % numero de amostras desejados
  91. novos_valores=interp1(dados(n).tempo,dados(n).valores,novos_tempo);
  92.  
  93. h = designfilt('lowpassiir','FilterOrder',50,'PassbandFrequency',1e3,...
  94. ...%'StopbandFrequency',(1.001e3),...
  95. 'SampleRate',dados(2).samplerate);
  96.  
  97. b=rcosdesign(0.1,50,round(round(dados(2).samplerate)/1e3));
  98. valores_filt = filtfilt(b,1,dados(2).valores);
  99. % valores_filt = filter(h,dados(2).valores);
  100. figure(1);hold on;plot(dados(n).tempo,valores_filt/rms(valores_filt)*rms(dados(2).valores));hold off;
  101. amostras_por_periodo_novo=204
  102. eyediagram(valores_filt(1:200*amostras_por_periodo_novo),2*(amostras_por_periodo_novo))
  103.  
  104. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement