Deslocar um sinal pela fração de uma amostra

9

Eu tenho um sinal com um tempo de amostra de 0,5 microssegundos e gostaria de mudar esse sinal por uma fração do tempo da amostra, digamos por 3 nano segundos.

Li alguns recursos on-line sobre a filtragem de atraso fracionário e sobre o uso da FFT e IFFT para executar esse atraso. Alguém pode me indicar alguma teoria sobre isso ou me dar uma idéia de como implementá-la.

Para a mudança regular do sinal para amostras inteiras, eu implementei isso alterando o sinal pelo número necessário de amostras e adicionando zeros no início. Essa abordagem está correta?

smyslov
fonte

Respostas:

13

Há um bom artigo de visão geral que apareceu em 1996 na IEEE Signal Processing Magazine: Dividindo o atraso da unidade: ferramentas para o projeto de filtro de atraso fracionário . O bom disso é que também há um conjunto de arquivos Matlab relacionados disponíveis. Essas rotinas permitem que você projete esse sistema.

Quanto à troca por um número inteiro de amostras, o que você fez está obviamente correto.

Matt L.
fonte
Eu apenas passei o dedo no artigo, então não tenho certeza se isso está explicitamente lá, mas o atraso fracionário está relacionado à derivada fracionária, que generaliza a n-ésima derivada em ordem arbitrária.
soultrane
2

Além de fazer soluções do tipo fft, você também pode usar a interpolação, é claro que o tipo específico de interpolação apropriado seria baseado nas suas necessidades! A interpolação linear funcionou bem para mim no passado com efeitos de flange, mas sua milhagem pode variar.

A interpolação de Lagrange também pode valer a pena investigar, se a interpolação linear não for boa o suficiente. http://blog.demofox.org/2015/07/08/lagrange-interpolation/

Alan Wolfe
fonte
Hermite pode ser melhor que Lagrange, mas se você tiver acesso ao MATLAB (ou um programa de design de filtro FIR), poderá criar um interpolador de "banco de filtros polifásicos" no qual você tem conjuntos de coeficientes para uma variedade de diferentes, uniformemente espaçados, atrasos fracionários. escolha os dois atrasos fracionais discretos mais próximos do atraso fracionário especificado e interpole linearmente entre eles.
Robert Bristow-johnson
0

Isso pode ser feito usando a função 'delayseq' no MATLAB. Esta função pode mudar o sinal em amostras fracionárias. Você pode escrever o número de amostras que deseja alterar ou, em termos de tempo, a quantidade de atraso que deseja. Mas o importante a ser observado é que o sinal atrasado tem o mesmo comprimento do sinal original; portanto, se você não deseja truncar o sinal, use primeiro o preenchimento zero e depois o delayseq. https://in.mathworks.com/help/phased/ref/delayseq.html

Mitali Rathod
fonte