Deconvolution of two different Gaussians

3 ビュー (過去 30 日間)
Tim
Tim 2025 年 1 月 14 日
コメント済み: Tim 2025 年 1 月 20 日
Hi all
I'm convolving two different Gaussians: straggling and espread. But when I deconvolve the resultant I see either straggling or "nonsense". Is it possible to deconvolve the resultant in such a way that I see espread? My code is attached.
Sorry, bit of a noob question.
Regards
Tim
  1 件のコメント
Tim
Tim 2025 年 1 月 14 日
Attached here is the GaussianPDF function

サインインしてコメントする。

採用された回答

Matt J
Matt J 2025 年 1 月 16 日
編集済み: Matt J 2025 年 1 月 16 日
If you know a priori that all the signals are Gaussians, then deconvolution would not be the best way to recover espread. You know that the mean and variance of Gaussian signals add under convolution, so just fit a Gaussian (e.g. with this Download) to the output y and subtract its mean and variance from the known mean and variance of 'straggling'.
x1 = linspace(0, 20, 512);
dt=(x1(2)-x1(1));
straggling = GaussianPDF(x1, 7.7, 0.1);
figure; hold on;
plot(x1, straggling);
espread = GaussianPDF(x1, 7.7, 1);
% espread = espread/max(espread);
plot(x1, espread);
y = conv(straggling, espread)*dt;
x2 = (0:numel(y)-1)*dt;
plot(x2, y);
grid on;
legend('Straggling', 'E-Spread', 'Convolution');
p=gaussfitn(x2',y',[],{0,[],[]},{0,[],[]} );
espreadRec=GaussianPDF(x1,p{3}-7.7, sqrt(p{4}-0.1^2));
figure;
plot(x1,espread,'o',x1,espreadRec,'-');
legend Original Recovered
grid on;
  1 件のコメント
Tim
Tim 2025 年 1 月 20 日
Thanks Matt.
This was the clue I was looking for:
"If you know a priori that all the signals are Gaussians, then deconvolution would not be the best way to recover espread. You know that the mean and variance of Gaussian signals add under convolution, so just fit a Gaussian (e.g. with this Download) to the output y and subtract its mean and variance from the known mean and variance of 'straggling'."
Regards
Tim

サインインしてコメントする。

その他の回答 (1 件)

Catalytic
Catalytic 2025 年 1 月 16 日
編集済み: Catalytic 2025 年 1 月 16 日
Is it possible to deconvolve the resultant in such a way that I see espread?
Since you deconvolve y by espread, of course you will get straggling. Presumably you meant to deconvolve by straggling -
a=deconv(y,straggling);
  1 件のコメント
Tim
Tim 2025 年 1 月 20 日
Hi Catalytic,
I tried that and got "nonsense". See attched.
Regards
Tim

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDescriptive Statistics についてさらに検索

タグ

製品


リリース

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by