Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clearvars -except Hd
- close all
- % HD FDATOOL 500-600 Hz
- for Namostrasnoteste=1000
- load('medida_1ms.mat')
- dados(1).tempo = dados(1).tempo(2.065e4:3.331e5);
- dados(2).tempo = dados(2).tempo(2.065e4:3.331e5);
- dados(1).valores = dados(1).valores(2.065e4:3.331e5);
- dados(2).valores = dados(2).valores(2.065e4:3.331e5);
- % load('medida_1us.mat')
- %%
- n=1; % trigger
- [a,inicio]=find(dados(1).valores>mean(dados(1).valores),1,'first')
- figure(1);hold off;
- plot(dados(n).tempo(1:inicio),dados(n).valores(1:inicio));hold on
- [a,fim]=find(diff(dados(1).valores(inicio:end)<mean(dados(1).valores(inicio:end)))>0,1,'last');
- plot(dados(n).tempo(inicio:inicio+fim),dados(n).valores(inicio:inicio+fim),'r');hold on
- % asdasdas
- % seleciona somente parte com sinal valido
- for k=1:5
- dados(k).valores=dados(k).valores(inicio:inicio+fim);
- dados(k).tempo=dados(k).tempo(inicio:inicio+fim);
- end
- % verificar se manteve o mesmo intervalo
- plot(dados(n).tempo,dados(n).valores,'g');hold off
- n=2; %dados de verdade
- % remove desde a ultima borda de subida
- [a,i]=find(diff((dados(n).valores>mean(dados(n).valores)))>0,1,'last')
- plot(dados(n).tempo,dados(n).valores,'g');hold on
- plot(dados(n).tempo(i),dados(n).valores(i),'go')
- dados(n).valores=dados(n).valores(1:i);
- dados(n).tempo=dados(n).tempo(1:i);
- Namostrasnoteste=Namostrasnoteste-1; % inspecao manual, perdeu 1 ciclo
- % remove antes da primeira borda de subida
- [a,i]=find(diff((dados(n).valores>mean(dados(n).valores)))>0,1,'first')
- plot(dados(n).tempo,dados(n).valores,'g');hold on
- plot(dados(n).tempo(i),dados(n).valores(i),'go');
- dados(n).valores=dados(n).valores(i:end);
- dados(n).tempo=dados(n).tempo(i:end);
- Namostrasnoteste=Namostrasnoteste-3; % inspecao manual, perdeu 3 ciclos
- % plot(dados(n).tempo,dados(n).valores,'g');hold off
- % asdasdas
- % mantem somente alguns ciclos para teste
- % T=1/dados(n).samplerate;
- %
- % N=1:(2*10e-6/T);
- % dados(n).valores=dados(n).valores(N);
- % dados(n).tempo=dados(n).tempo(N);
- % asdasdasd
- % reamostra com 10x mais amostras para ter uma precisao na definicao da
- % duracao do ciclo
- novos_tempo=linspace(min(dados(n).tempo(1)),... % inicio do novo vetor de tempo
- (dados(n).tempo(end)),... % fim do novo vetor de tempo
- Namostrasnoteste*200); % numero de amostras desejados*
- dados(n).valores=interp1(dados(n).tempo,dados(n).valores,novos_tempo);
- dados(n).tempo=novos_tempo;
- dados(n).samplerate=1/(diff(novos_tempo(1:2)))
- Namostrasnoteste
- % idealmente
- amostras_por_periodo=length(dados(n).valores)/Namostrasnoteste;
- % por analise do histograma recalcula o numero de mostras
- % encontra as bordas de subida
- [a,i]=find(diff(dados(n).valores>mean(dados(n).valores))>0);
- trocas=diff(i); % qual a distância entre troca de bits?
- figure(3);
- hist(trocas,1000);
- [a,i]=hist(trocas,1000);
- % seleciona somente os valores dos histogramas altos
- [b,a]=find(a>5);
- % por inspeção manual parece o que retorna mais proximos dos inteiros
- i(a)/(i(a(1))/4)
- i(a)/(i(a(2))*2/6)
- periodo_suposto=(i(a(2))*2/6)
- amostras_por_periodo_novo=floor(amostras_por_periodo); % arredonda simplesmente
- novos_tempo=linspace(dados(n).tempo(1),... % inicio do novo vetor de tempo
- (dados(n).tempo(end)),... % fim do novo vetor de tempo
- Namostrasnoteste*amostras_por_periodo_novo); % numero de amostras desejados
- novos_valores=interp1(dados(n).tempo,dados(n).valores,novos_tempo);
- h = designfilt('lowpassiir','FilterOrder',50,'PassbandFrequency',1e3,...
- ...%'StopbandFrequency',(1.001e3),...
- 'SampleRate',dados(2).samplerate);
- b=rcosdesign(0.1,50,round(round(dados(2).samplerate)/1e3));
- valores_filt = filtfilt(b,1,dados(2).valores);
- % valores_filt = filter(h,dados(2).valores);
- figure(1);hold on;plot(dados(n).tempo,valores_filt/rms(valores_filt)*rms(dados(2).valores));hold off;
- amostras_por_periodo_novo=204
- eyediagram(valores_filt(1:200*amostras_por_periodo_novo),2*(amostras_por_periodo_novo))
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement