Konvoluce dvou časových signálů v MATLABu

MATLAB nabízí časové nebo frekvenční funkce.

Konvoluce

Operace konvoluce je definována jako integrál nebo součet v diskrétních případech, přes rozsah funkcí f (T) * g (tT) vzhledem k T. Při pohybu rozsahu funkce f je každý bod vynásoben a druhá funkce v g. V časové oblasti je konvoluce intenzivní výpočetní operací, nicméně po transformaci do kmitočtové domény Fourierovou transformací se konvoluce zjednoduší na násobení.

Integrovaná funkce

Funkce "conv" nebo jeho dvourozměrná varianta "conv2 ()" mohou být použity s lehkostí a efektivitou pro spouštění signálů v MATLABu, obvykle se předpokládá, že signály jsou v časové nebo prostorové doméně, na rozdíl od domény První dva argumenty jsou dva signály, které mají být konvolvovány, nebo signál a filtr. Třetí argument je argument, který definuje velikost výstupu. Platné možnosti jsou "plné", "stejné" nebo "platné "(" plná ", " stejná "nebo" platná ").

mixed_signal = conv (signál1, signál2, 'same'); new_image = conv2 (image1, image2, 'plný');

Doména času

Provedení konvoluce v časové oblasti může být užitečné, abyste pochopili, jak tato operace funguje:

% dvoudrátových signálů, fyg my_length = délka (f) + délka (g) - 1; výsledek = nuly (my_length, 1);

pro i = 1: my_length pro j = 1: délka (f) jestliže {(i-j + 1)> 0 & g (i-j + 1); koncového konce

Doména frekvence

Signály v časové oblasti mohou být transformovány do kmitočtové oblasti pomocí transformace Fourier. MATLAB implementuje rychlou Fourierovu transformaci pomocí funkce "ffft ()". Ve frekvenční oblasti mohou být dva signály smíchány pomocí multiplikace bodů operátorem ". *".

% pro dva signály, f a g F = fft (f); G = fft (g); U = F. * G; u = ifft shift (ifft (U));