FWHMを指定したガウシアン波形の作り方

10 views (last 30 days)
啓史 千葉
啓史 千葉 on 8 Sep 2021
Answered: Hernia Baby on 8 Sep 2021
ガウス窓を作りたいのですが、スクリプト内で窓のFWHMを指定して作れるようにしたいです。
現在は以下のような形で波長500nmから600nm、波長帯域100nmのガウス窓を記述しています。
このプログラムを、半値幅を指定できるように変更しようと考えているのですが、方法が思いつきません。
中心波長とFWHMを指定して、そのガウス窓を返してくれるようなプログラムの書き方を教えていただけると助かります。宜しくお願い致します。
spectrum1 = 500*10^-9;
spectrum2 = 600*10^-9;
spectrumrange = spectrum2 - spectrum1;
spectrum = linspace(spectrum1,spectrum2,64);
f1 = c/spectrum1;
f2 = c/spectrum2;
%50GHz間隔で周波数軸の作成
f = f2:20*10^9:f1;
gauss = gausswin(length(f));
% ガウス型光源の描写
figure
plot(f,gauss)
xlim([f2-0.2*10^14 f1+0.2*10^14]);
ylim([0 1.1]);

Accepted Answer

Hernia Baby
Hernia Baby on 8 Sep 2021
半値幅からσが決まるのであれば、標準正規分布を作ればいい気がします
データ点数が決まれば、それに対応する最大1のガウス分布を掛ければいいだけかなと
関数にするなら
function y = mygausswin(FWHM, Dataspan, Data_length)
みたいな感じですかね
---------------------------------------------------------------------------------------------------
以下例です
必要なパラメータを記入します
FWHM =25*10^-9;
Data_Span = 100*10^-9;
Data_length = 10^3;
標準ガウス分布を作成します
Norm = 1/Data_Span;
x = linspace(-Data_Span/2,Data_Span/2,Data_length)*Norm;
mu = mean(x);
σは半値幅の式を使います
sigma = FWHM/(2*sqrt(2*log(2)))*Norm;
f = (1/sigma/sqrt(2*pi))*exp(-(x-mu).^2/(2*sigma^2));
y = f./max(f);
プロットします
plot(x,y)
xlim([-1/2 1/2])

More Answers (0)

Community Treasure Hunt

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

Start Hunting!