Estou tentando fazer a janela Hanning manualmente, mas não “t funciona, o que estou fazendo de errado?
t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x);
Não sei por que não consigo obter a janela de hanning completa.
Comentários
Resposta
Você precisa mudar ” 102 “para” 10 “.
x=.5-.5*cos(2*pi*t/10);
Comentários
- Obrigado :), achei que fosse o número de amostras
- @ Pulse9 Você deseja que a janela comece em 0 e termine em 0, então isso significa que o cos deve começar e terminar em 1, ou seja, deve passar por exatamente um ciclo.
Resposta
Havia um meteorologista (e janela Hann- fabricante ) chamado
Julius von Hann , Hanning é um abuso (semelhança com Hamming). Você teria um melhor controle de seu código chamando as funções hann.m
ou window.m
:
nSample = 101; t = linspace(0,10,nSample); % w = hann(nSample); w = window(@hann,nSample); % w = .5-.5*cos(2*pi*t/10); plot(t,w)
Espero que implementá-lo manualmente não envolva calcular cosseno com série.
Comentários
- Por que chamar o build em funções ser melhor? Eles funcionam internamente exatamente da mesma forma que o método manual e têm mais camadas de verificação e análise, o que os torna um pouco mais lentos. As funções incorporadas usam especificamente " w = 0,5 – 0,5 * cos (2 * pi * x); "
- @Hilmar eu escrevi " melhor controle de código ", porque a função que está sendo implementada (uma janela) é explícita da chamada, mesmo sem comentários. Outra pessoa, ou o programador três meses depois, entenderá facilmente o que ele faz, e pode mudar, melhorar imediatamente, sem precisar adivinhar. Além disso, colocar o comprimento (
nSample
) ou o nome da janela como variáveis melhora a legibilidade.
w=hann(100);
e funciona bem, mas preciso fazê-lo manualmente