How to design and export a Hilbert transform

조회 수: 4 (최근 30일)
Ramy Sandouk
Ramy Sandouk 2022년 7월 26일
답변: Ramy Sandouk 2022년 8월 2일
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?

채택된 답변

Ramy Sandouk
Ramy Sandouk 2022년 8월 2일
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);

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Hilbert and Walsh-Hadamard Transforms에 대해 자세히 알아보기

태그

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by