Portanto, se você gerar uma onda quadrada apenas alternando um sinal entre dois valores, nos limites da amostra, ela produzirá uma série infinita de harmônicas, que alternam e produzem tons abaixo do fundamental, o que é muito audível. A solução é a Síntese limitada por banda , usando síntese aditiva ou etapas com limitação de banda para produzir formas de onda iguais às das bandas matemáticas ideais antes da amostragem:
Mas acabei de perceber que, se você aplicar amplificação grande a uma onda senoidal digital e, em seguida, cortá-la digitalmente, ela produzirá a mesma forma de onda quadrada, sem que o fenômeno Gibbs se agite. Então, também está produzindo produtos de distorção com alias, certo? Então, qualquer distorção não linear no domínio digital que produz harmônicos fora dos limites de Nyquist produzirá produtos de distorção com alias? (Edit: Eu fiz alguns testes e confirmei que esta parte é verdadeira.)
Existe distorção limitada pela banda, para simular (no domínio digital) os efeitos da distorção (no domínio analógico) antes da limitação e amostragem da banda? Se sim, como você faz isso? Se eu procuro por "distorção ilimitada de banda", encontro algumas referências aos polinômios de Chebyshev, mas não sei como usá-los ou se eles funcionam apenas para ondas senoidais ou o que:
Este instrumento não tenta gerar distorção com banda limitada. Os interessados em distorção com banda limitada devem investigar o uso de polinômios de Chebyshev para gerar o efeito. Distorção Tangencial Hiperbólica
"Polinômio de Chebyshev" - funções de modelagem com a propriedade importante de serem intrinsecamente limitadas por banda, ou seja, elas não introduzem harmônicas espectrais espúrias devido à sobreposição etc. Wave Shaper
fonte
Respostas:
A aplicação de uma função não linear sempre introduzirá harmônicos, e a mistura de funções não lineares com versões amostradas de sinais contínuos adiciona as rugas que você observa acima (onde harmônicos de alta frequência são alias às baixas frequências).
Eu posso pensar em algumas maneiras de proceder:
Você pode combinar (1) e (2). A terceira abordagem é complexa, mas oferece o melhor controle sobre quanta distorção deve ser admitida e provavelmente escalará melhor para requisitos de fidelidade muito alta.
Para funções não lineares que admitem uma expansão em série (por exemplo, Taylor / Maclaurin), você pode obter uma intuição decente sobre a rapidez com que os harmônicos decaem. A expansão de Maclaurin de uma função é:f(x)
No seu caso, é a função de recorte. (Você não pode fazer isso com um cortador de disco rígido, pelo menos não ingênuo!) Se você considerar a substituição x = g ( t ) , onde g ( t ) é o seu sinal de entrada, x n se tornará g ( t ) nf(x) x=g(t) g(t) xn g(t)n , que você pode considerar a convolução do seu sinal de entrada vezes. Assim, para os sinais de passa-baixos, o n ésimo termo da soma infinita tem uma largura de banda nn n n vezes o do seu sinal. Para completar a figura, você precisa descobrir a amplitude associada a cada termo e decidir quantos termos na soma são relevantes.
(Com um pouco de reflexão, você também poderá usar esse formulário diretamente para aproximar a não linearidade filtrada. Isso exigiria uma boa representação em série para o clipper.)
fonte
Algumas abordagens para distorção não-linear sem alias (em ordem crescente de dificuldade):
Distorção de sub-banda : use um filtro passa-baixo para extrair a extremidade inferior do sinal. Se você escolher uma frequência de corte de você pode aplicar qualquer função de transferência não linearfcom derivadas começando emfN+1desaparecendo para evitar aliases. Adicione apenas a saída de distorção da banda baixa ao sinal original. Para isso, modifique sua função de transferência não linear para produzir apenas a distorção, não o sinal recebido. Essa abordagem costuma ser totalmente suficiente para o áudio, porque a contribuição de distorção das frequências mais altas seria inaudível na maioria dos casos.fs2N f fN+1
Sobreamostragem : É semelhante à abordagem 1, mas requer etapas extras de subamostragem e redução de amostragem para garantir que todas as informações na faixa de sinal original contribuam para o sinal distorcido, se você achar necessário. Também permite distorcer para uma ordem superior, porque partes do espectro dobrado para trás serão removidas pelo filtro de redução de amostragem. Isso significa que, se você exagerar na amostra por um fator , as derivadas da função de transferência não linear começando na ordem 2 N terão que desaparecer. O procedimento é simples como upsampling, aplicando a função de transferência não linear, downsampling.N 2N
Usando uma solução analítica local : Qualquerfunção de transferência não-linear suave pode ser aplicada a um sinal descrito por uma série de potências. Se você deixar a função de transferência atuar em uma série de potências, você receberá uma série de potências de volta. Se você se restringir a séries de potência truncadas de uma determinada ordem e a função de transferência com um certo grau de suavidade, poderá escrever a função de transferência como um mapa nos coeficientes da série truncada. Isso significa que, em vez de , você considera f : R N → R M levar uma expansão em série de entrada de comprimento N para uma expansão em série de saída de comprimento Mf:R→R f:RN→RM N M>N . Com esse entendimento, você pode usar uma aproximação finita local do sinal de entrada em termos de uma série de potências e mapeá-la para uma aproximação de uma série de potências da saída. Em seguida, você pode integrar analiticamente a série de saída para criar um filtro de suavização de borda de carro para obter o valor da amostra de saída. Todos esses cálculos podem ser feitos simbolicamente e, como você precisa incluir recursos locais do sinal de entrada, você finalmente obterá um filtro não linear que usa valores passados do seu sinal de entrada para gerar a saída atual.
Design algébrico baseado em restrições : No item anterior, você viu que a distorção não-linear com suavização de borda leva a filtros não-lineares. Obviamente, nem todos os filtros não lineares são isentos de alias, mas alguns podem ser. Portanto, a pergunta óbvia é que um critério torne esse filtro estritamente livre de alias e como projetá-lo. Como se vê, uma declaração equivalente a estar livre de aliasing é que o filtro não linear comuta com traduções de subamostras. Portanto, você deve certificar-se de que não faz diferença se você traduzir primeiro e depois filtrar ou filtrar primeiro e depois traduzir. Essa condição leva a restrições de design muito rígidaspara filtros não lineares, mas depende de como você realiza a tradução do sinal. Por exemplo, a tradução ideal exigiria infinitos coeficientes para o filtro não linear. Portanto, você precisa aproximar a tradução do sinal para uma ordem finita para obter um filtro não linear finito. O alias-freeness é dimensionado com a aproximação usada, mas você tem um controle muito bom sobre ela. Depois de trabalhar com a matemática dessa abordagem, é possível projetar qualquer função de transferência não linear (não apenas suave) como um modelo digital quase ideal na forma de um filtro não linear. Não posso esboçar os detalhes aqui, mas talvez você possa encontrar alguma inspiração nessa descrição.
fonte
Os próprios polinômios podem ser facilmente gerados usando a seguinte relação de recorrência :
Aqui estão os primeiros:
Outra maneira de ganhar intuição por propriedade(1) T2 cos(x)
Computando uma série Chebyshev
fonte
@ robert-bristow-johnson explica isso muito claramente em comp.dsp :
Em outras palavras, se a sua não linearidade for um polinômio, a frequência mais alta que pode ser produzida pela distorção será a frequência mais alta no seu sinal vezes a ordem N do polinômio. (A não linearidade polinomial está multiplicando o sinal por si só N vezes, de modo que seu espectro se convolve e se espalha pela mesma proporção.)
Então, você conhece a frequência máxima (Nyquist ou algum limite inferior para sua aplicação) e conhece a ordem do polinômio, para poder fazer uma amostra excessiva o suficiente para evitar aliases, fazer a distorção e, em seguida, filtro passa-baixo e amostra reduzida.
Na verdade, você pode reduzir a taxa de superamostragem permitindo que alguns aliases aconteçam, desde que contidos na banda que será removida antes da redução de amostragem:
fonte