Dúvidas no Formato de Saída

Dúvidas no Formato de Saída

por Vinícius Martins -
Número de respostas: 6

Pessoal, 

Estou com dificuldades em entender como eu devo mostrar a forma de onde estabilizada. Não entendi como usar essa fórmula H1 = 2 acos(2f0t + u). A forma de onda estabilizada é que eu obtenho do microfone (no meu caso)?

Em resposta à Vinícius Martins

Re: Dúvidas no Formato de Saída

por Vinícius Martins -

Não entendi muito bem essa parte do trabalho. Alguém poderia me deixa mais claro? Obrigado!

Anexo Capturar.PNG
Em resposta à Vinícius Martins

Re: Dúvidas no Formato de Saída

por Brian Vasconcelos -

Essa parte parece a mais complicada mesmo. O quão estabilizada a onda deveria ficar? Testando arquivos de áudio real e entrada de microfone no meu programa ela até parece comportada, mas botando ele para analisar um [osc~] dá para ver claramente que em algumas freqüências ele ocasionalmente desestabiliza e que muito perto de 20 ou 20k Hz ele falha completamente ou não consegue desenhar os três períodos de onda(acho que esse último até faz sentido em freqüências muito baixas e blocos de análise pequenos, faz?)

Se bem entendi também, o uso do objeto [tabread4](ou da versão ~) tem algumas limitações mas não é tão rígida com o tamanho da tabela quanto a [tabwrite4]? Estou usando a maioria das minhas tabelas com o tamanho do bloco de análise, então leio índices fracionários com [tabread4(~)] mas acabo escrevendo com [tabwrite(~)](ou usando  o par [tabsend~]/[tabreceive~]), pode ser que isso esteja causando alguns problemas?

@Vinícius

Eu não cheguei a usar a fórmula do primeiro harmônico explicitamente na minha implementação. Pelo que entendi só estamos interessados em escolher pontos de fase constante do primeiro harmônico(com a fórmula dada logo em seguida) e usar eles para escolher um índice ideal para começar a ler o sinal de entrada.

O primeiro desses dois parágrafos só diz que ao invés de começar a plotar a forma de onda a partir do índice encontrado antes, com fase 3*pi/2, ela deve ser plotada a partir de um índice com fase positiva e o mais próximo de 0 possível. Então deve ser encontrado um índice antes de k0 e um depois com essa propriedade e escolher o mais próximo de k0. Estabilizar a forma de onda, se bem entendi, é só isso, deixar a fase dela com cara de sin(x).

O segundo parágrafo é só uma dica do professor para caçar os índices corretos da tabela de entrada sem fazer uns loops ridículos.

Em resposta à Brian Vasconcelos

Re: Dúvidas no Formato de Saída

por Antonio Goulart -

Oi pessoal.

A fórmula está ali só pra lembrar que cada harmônico tem uma amplitude e uma fase. Estabilizar a forma de onda significa mostrar ela começando sempre do mesmo ponto, porque se em cada atualização ela começa de pontos diferentes ela parece que está andando. A onda estabilizada, por começar sempre do mesmo lugar, parece que fica paradinha no gráfico. O que queremos então é achar o ponto onde o harmônico em questão está em fase de seno. Achando o k_zero (com a fórmula dada), podemos começar a leitura a partir daí.

O parágrafo sobre melhorar a visualização diz que depois de achar esse k_zero, para melhorar ainda mais a viasualização da onda temos que achar um ponto k_chapeu (na vizinhança do ponto k_zero) em que a onda esteja cruzando o zero do negativo pro positivo, ou seja, queremos que no final das contas a onda apareça bem bonitinha, subindo do zero, e estável.

Certo, sabendo que queremos ler K pontos (3 periodos da forma de onda) a partir do k_chapeu, o parágrafo do phasor~ sugere utilizar este objeto com os parâmetros que acabamos de calcular.

O que o Brian disse é verdade. Em alguns casos (por exemplo frequência baixa com bloco de análise pequeno) a viasualização não fica muito estável, as contas ficam dando uns resultados negativos absurdos, etc. Não se preocupem muito com esses casos, apenas tentem resolver perfeitamente os casos menos extremos.

Em resposta à Antonio Goulart

Re: Dúvidas no Formato de Saída

por Marcelo Queiroz -

Olás!

Vinícius, a fórmula do primeiro harmônico está no enunciado apenas para complementar a explicação de como se acha o ponto onde este harmônico está em fase de seno. Ela realmente não aparecerá em lugar nenhum da implementação, mas é através dela que  gente chega na expressão do t0 e através dele do k0. O importante é visualizar o sinal original a partir deste ponto "estabilizado".

Em relação à sua segunda dúvida, o Brian e o Antonio já contribuiram bastante, mas se sobrou alguma dúvida, avise. De fato existem situações extremas (frequência baixa e janela pequena, tipicamente) onde aquele algoritmo indicado poderia passar das extremidades da tabela (começar a procurar índices negativos ao tentar encontrar o k- ou passar do fim da tabela ao procurar o k+). Para evitar isso você tem que colocar condições de contorno e no final escolher um candidato adequado. Como o enunciado não explicita o que fazer se não existir o tal ponto de cruzamento por zero, qualquer solução razoável será aceita (neste caso): por exemplo, pegar o argumento que minimiza o valor de |x[k]| ou ficar com o próprio k0 seriam alternativas razoáveis nos casos em que não existe o cruzamento por zero.

Brian, como o Antonio falou, você não precisa se preocupar com casos extremos. Como o enunciado pede para mostrar 3 períodos completos da forma de onda, então a única maneira destes 3 períodos estarem disponíveis na própria janela que está sendo analisada é se o tamanho da tabela for pelo menos 3*R/f0, onde R é a taxa de amostragem e f0 é a frequência fundamental em Hz. Como além disso a gente ainda precisa jogar fora parte do sinal ao buscar o índice conveniente próximo do k0 para deixar o início da forma de onda mais parecido com a "fase de subida" de um seno, precisaríamos ter acesso no mínimo a uma fração (desconhecida) de um ciclo que será descartado. Ou seja, todos os casos onde o tamanho da tabela é menor do que 4*R/f0 são casos extremos, onde provavelmente algumas coisas não vão dar certo (desde a busca pelo k_chapéu até a leitura interpolada da tabela com o phasor).

Para dar uma certa folga a essa ideia de casos extremos e não perdermos tempo com tecnicalidades excessivas, vocês podem ignorar casos de teste onde N<=6*R/f0. Concentrem-se em fazer o trabalho funcionar quando N>6*R/f0.

Abraços,

Marcelo

Em resposta à Marcelo Queiroz

Re: Dúvidas no Formato de Saída

por Vinícius Martins -

Esse vetor x[] que está na imagem é o que eu capturo do microfone?

Em resposta à Vinícius Martins

Re: Dúvidas no Formato de Saída

por Marcelo Queiroz -

Vinícius,

de que imagem você está falando? O vetor x[] é a entrada, aquela que será analisada e posteriormente recortada no lugar certo para mostrar os 3 períodos estabilizados.

Abraço,

Marcelo