Semnalul analitic și transformata Hilbert

De la YO3ITI
Salt la: navigare, căutare

În prelucrarea semnalelor, o problemă deosebită o pun semnalele cu componentă complexă (imaginară). Unul dintre domeniile cu aplicabilitate imediată este modulația complexă a semnalelor sinuosoidale, caz concret — modulația cu bandă laterală unică (SSB) prin schimbare de fază[1]. Procesarea în cuadratură a fost soluția la limitările modulației cu detecție sincronă, dar are nevoie de o componentă complexă a semnalului. Transformata Hilbert este un instrument esențial deoarace aplicând de două ori consecutiv unui semnal transformata Hilbert, se obţine semnalul cu semn schimbat (negativ). În cazul unui semnal radio, aceasta este, practic, componenta sinusoidală, imaginară, a semnalului original. Semnalul "generat" nu există în natură, este un semnal pur analitic. Ca atare, putem defini un semnal analitic ca fiind semnalul cu o caracteristica spectrală întotdeauna nulă pentru frecvenţe negative. Deci, dacă într-o caracteristică spectrală a unui semnal se ia în considerare numai domeniul frecvenţelor pozitive (care există în natură), atunci caracteristicii spectrale respective îi va corespunde (întotdeauna) un semnal analitic. E o mică șmecherie matematică care ajută foarte mult în practică[2], în teoria și practica modulatoarelor.

Primul exemplu concret: Transformata Hilbert a unui semnal cu frecvența de 200 Hz, fără amplitudine inițială. Secvența este eșantionată la 10kHz (>> Nyquist) timp de 1 secundă (>> perioada medie). Se va utiliza transformata Hilbert pentru a calcula semnalul analitic. Se va reprezenta grafic între 0,01 și 0,03 secunde.

%% Parametri de lucru
fs = 1e4; % frecvența de eșantionare
t = 0:1/fs:1; % intervalul de timp, între 0 și 1 secundă cu pași de 1/fs

%% Semnalul
% e de forma x = A + cos(omega*t);
% Amplitudinea de 2.5 fiind constantă nu se va regăsi în rezultatul
x = 0 + cos(2*pi*200*t);

%% transformata Hilbert
y = hilbert(x);

%% Graficul
grafic = plot(t,real(y),t,imag(y),'LineWidth',1.5) %reprezentare grafică cu o linie mai grosuță

%% Proprietățile graficului
xlim([0.01 0.03])
legend('componenta reală','componenta imaginară')
title('Transformata Hilbert a unui semnal de 200Hz')
grid
xlabel('timp (s)')
str = '$$ \cos(\omega t) $$ ';
ylabel(str, 'interpreter', 'latex', 'FontSize', 15);

Rezultatul:

Hilbert, cosinus, fără amplitudine inițială

Prin adăugarea unei amplitudini inițiale, cele două semnale vor fi separate în amplitudine deoarece transformata Hilbert a unei constante este zero. Codul se modifică:

...
% Amplitudinea de 2.5 fiind constantă nu se va regăsi în rezultatul
x = 2.5 + cos(2*pi*200*t);
...
Hilbert, cosinus, cu amplitudine inițială

Un exemplu concret: generează o secvență compusă din trei sinusoide cu frecvemțele de 203, 721 și 1001 Hz. Secvența este eșantionată la 10kHz (>> Nyquist) timp de 1 secundă (>> perioada medie). Se va utiliza transformata Hilbert pentru a calcula semnalul analitic. Se va reprezenta grafic între 0,01 și 0,03 secunde. Codul se modifică:

...
x = 2.5 + cos(2*pi*203*t) + sin(2*pi*721*t) + cos(2*pi*1001*t);
...
Hilbert, trei unde, cu amplitudine inițială


Note

  1. Dintre tehnicile de modulație BLU (SSB), modulația prin detecție sincronă are limitări în ceea ce privește discriminarea spectrală a două semnale adiacente, ca atare este rar folosită în prezent și este menționată doar din motive istorice.
  2. O altă șmecherie matematică întâlnită în teoria filtrelor este capacitanța negativă folosită la fundamentarea teoretică (și implementarea practică) a filtrelor analogice. ;)

Link-uri externe