Suavização 1 / n oitava

8

Dada uma resposta de frequência obtida com a FFT, eu gostaria de aplicar uma suavização de oitava de 1 / n. Qual filtro devo usar e como? Talvez alguém possa apontar para uma boa referência (um papel ou livro sobre o assunto).

Psirus
fonte
Você está procurando um filtro rosado , que atenua a frequênciaf à amplitude 1/f? Ou você realmente quer algo que atenua a frequênciaf à amplitude 1/(lg2f)?
Wandering Logic
1
Não quero atenuar nenhuma frequência. Quero que os dados a ser alisada, com uma largura de banda variável, isto é, uma oitava, 1/3 de uma oitava, etc
Psirus
1
As respostas de frequência do alto-falante geralmente são suavizadas, para facilitar a interpretação do gráfico, mas ainda bastante precisas (suavização de 1/20 de oitava) ou suavização muito alta (1/3 de oitava), por exemplo, no marketing. Isto é o que eu li várias vezes, o que significa exatamente que estou tentando descobrir aqui.
Psirus 21/07
1
Portanto, sua pergunta não é sobre a alteração de um sinal, é sobre como mostrar graficamente a resposta de frequência de um dispositivo. Isso está certo?
22613 Jim Clay
1
Eu acho que este artigo contém informações valiosas. No entanto, infelizmente, não é gratuito. A abordagem fundamental também é descrita neste .
23616 apple_soup

Respostas:

8

Normalmente, "suavização" significa "substituir o valor atual pela média sobre os vizinhos". O mais comum é a suavização de energia, onde a suavização resulta na média de energia durante o intervalo de suavização e as informações da fase são perdidas. A suavização complexa também pode ser feita, mas é um negócio complicado por causa da quebra de fase.

A suavização de energia pode ser expressa como

Y(k)=1Ni=0N1X(i)X(i)Wk(i)

Onde Wk(i)é uma função de janela adequada. No caso de, digamos, suavização da terceira oitava, isso pode ser derivado, pois a magnitude ao quadrado da função de transferência de uma banda de terceira oitava passa o filtro em torno da frequência k. Isso também significa que, para uma FFT de, digamos, 1024 pontos, é necessário projetar 1024 filtros passa-banda diferentes, de modo que é um bom trabalho.

As coisas podem ser simplificadas se a forma exata do filtro de suavização for flexível. A suavização retangular pode ser feita como

Y(k)=1ba+1i=abX(i)X(i)

Onde

a=round(k212n),b=round(k212n)

são simplesmente os índices das bordas da banda para nth oitava suavização.

Existem mais alguns métodos entre a janela arbitrária e a retangular em termos de complexidade.

Hilmar
fonte
Estou tentando implementar isso no código C e tenho medo de me perder um pouco na notação. Estou tendo dificuldade para entender como, por exemplo, o somatório de i que funciona de a para b funciona? Qualquer assistência apreciada.
Andrew Smith
Dois polegares, mas infelizmente apenas um voto. Essa pergunta adicional pergunta como é feito um nivelamento complexo de 1 / n, incluindo os negócios complicados relacionados ao empacotamento de fase.
precisa saber é o seguinte