Matlab 中提供的 conv
函數(shù)只能計(jì)算矩陣的卷積,計(jì)算函數(shù)的卷積就需要借助Fourier 變換供填、Laplace 變換及相應(yīng)逆變換等常見(jiàn)的變換泡一。
1 Fourier變換
??根據(jù)卷積性質(zhì)创夜,,于是
通惫,示例代碼如下茂翔。
syms t
convF = @(f1, f2, z) symfun(ifourier(fourier(f1) .* fourier(f2), z), z);
fn1 = sin(t);
fn2 = rectangularPulse(0, 2, t); % u(t)-u(t-2)
fn3 = convF(fn1, fn2, t);
% convert to double values
double(fn3(-5 : .1 : 5));
% plot function
fplot(fn3);
Fourier 變換求卷積
2 Laplace變換
由于可能需要求解的函數(shù)都不為周期函數(shù),或者有時(shí)Fourier變換的方法計(jì)算結(jié)果Matlab無(wú)法化簡(jiǎn)履腋,用Laplace變換似乎是更好的選擇珊燎。原理是一樣的,,示例代碼只需要修改
convF
俐末。
convL = @(f1, f2, z) symfun(ilaplace(laplace(f1) .* laplace(f2), z), z);
syms t
fn1 = rectangularPulse(-0.5, 1, t); % u(t+0.5)-u(t-1)
fn2 = rectangularPulse(0, 2, t) .* (t ./ 2);
fn3 = convL(fn1,fn2,t); % use Laplace transform
fplot(fn3);
Laplace 變換求卷積