Suponha que desejemos interpolar um sinal periódico com um número par de amostras (por exemplo, N = 8), preenchendo o zero no domínio da frequência.
Deixe o DFT X=[A,B,C,D,E,F,G,H]
Now, vamos adicionar 16 amostras para dar Y
. Todo exemplo de livro didático e tutorial on-line que eu vi insere zeros na doação .
(Então é o sinal interpolado).[Y4...Y11]
Y=[2A,2B,2C,2D,0,0,0,0,0,0,0,0,2E,2F,2G,2H]
y = idft(Y)
Por que não usar
Y=[2A,2B,2C,2D,E,0,0,0,0,0,0,0,E,2F,2G,2H]
?
Tanto quanto eu posso dizer (meu conhecimento de matemática é limitado):
- Minimiza a potência total
- Ele garante que, se
x
for com valor real, seráy
y
ainda cruzax
em todos os pontos de amostra, conforme necessário (acho que isso vale para qualquerp
lugarY=[2A,2B,2C,2D,pE,0,0,0,0,0,0,0,(2-p)E,2F,2G,2H]
)
Então, por que isso nunca é feito dessa maneira?
Editar : x
não é necessariamente com valor real ou com banda limitada.
dft
interpolation
zero-padding
finnw
fonte
fonte
Respostas:
Vejamos as frequências dos caixotes no seu DFT de 8 pontos:
Assim, quando interpolar por um factor de dois ,a frequência dopontoEse torna-πou+π.
À primeira vista, não consigo ver qual é o problema da sua abordagem, pois não está claro se deve ser colocado na lixeira associada a π ou - π .E π −π
Na página de Julius O. Smith III , ele afirma uma condição:
E seu exemplo existe para um ímpar , que evita o problema.N
Não sei se é necessário, mas aqui está a referência completa ao trabalho de Julius:
Smith, JO Matemática da Transformada Discreta de Fourier (DFT) com Aplicações de Áudio, Segunda Edição, http://ccrma.stanford.edu/~jos/mdft/ , 2007, livro online, acessado em 28 de setembro de 2011.
fonte
Existem várias maneiras de interpolar dados. Interpolação em minha mente significa que você 'desenha' linhas entre alguns pontos de dados. Isso pode ser feito de várias maneiras. Um tipo de interpolação que é útil no DSP (especialmente no DSP multirate) é a 'Interpolação ilimitada por banda'. Se você pesquisar no Google, receberá muitos hits interessantes e úteis. O que você propõe não é interpolação ilimitada por banda. No seu 'upsampled' x, você tem componentes de frequência que não estão presentes no x original.
Editar (muito tempo para caber em um comentário):
Há uma diferença bastante significativa entre sua construção, começando com e o exemplo na referência que você fornece.X=[A,B,C,D,E,F,G,H]
Considerando a entrada real
Upsampling por um fator de 2 para entrada de banda cheia. Neste caso upsampling pode ser realizada por primeiros zeros colocação na entrada intercalados (que é . O resultado é um sinal com um espectro de frequência que contém uma versão comprimida do espectro de frequência x (na faixa de 0 - π / 2 ) e uma imagem que se estende de π / 2 - π (considerando apenas o eixo de frequência positivo) .Se x2 for a versão ampliada,x0,0,x1,0,... 0−π/2 π/2−π
Na prática, porém, haverá alguma distorção porque o filtro da parede de tijolos não é realista. O filtro prático pode suprimir / remover frequências na entrada ou pode deixar em alguns dos componentes de frequência na imagem no sinal ampliado. Ou o filtro pode fazer um compromisso entre os dois. Penso que a sua construção no domínio da frequência também reflete esse compromisso. Esses dois exemplos representam duas opções diferentes:
Se a entrada for limitada por banda abaixo da frequência nyquist, como na sua referência, esse problema desaparecerá.
fonte