How to design and export a Hilbert transform

4 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

Ramy Sandouk
Ramy Sandouk il 2 Ago 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);

Più risposte (0)

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by