How to design and export a Hilbert transform

4 visualizaciones (últimos 30 días)
Ramy Sandouk
Ramy Sandouk el 26 de Jul. de 2022
Respondida: Ramy Sandouk el 2 de Ag. de 2022
I am trying to design a Hilbert transform that will be implemented on an FPGA. The hilbert() matlab function does not return coefficients.
I tried to design the transfom with filterDesigner and exported the coefficients to a variable named Num. This call return non-complex data
dataHilbert= filter(Num, 1, data);
Designing the filter with fdesign.hilbert() also returns non-complex values:
d = fdesign.hilbert();
Hd = design(d,'firls');
dataHilbert = filter(Hd,data);
How do I get these transforms to return correct complex data?

Respuesta aceptada

Ramy Sandouk
Ramy Sandouk el 2 de Ag. de 2022
The functions return single data which represent the imaginary part of the complex analytical signal. The designed FIR filter must have an odd number of taps so that the filter delay comes out even ((N-1)/2). So designing a filter with an order of 22 will result in a filter with 23 taps. The resulting filter imaginary data will then be delayed by ((N-1)/2) samples when compared to the real part of the data.
Example:
N = 7;
coefficients = [-0.20476,3.9051e-05,-0.63412,0,0.63412,-3.9051e-05,0.20476];
imaginary_data = filter(coefficients,1,data);
imaginary_data = imaginary(data1, ((N - 1) / 2));
complex_data = complex(data, imaginary_data);

Más respuestas (0)

Etiquetas

Productos


Versión

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by