FWHMを指定したガウシアン波形の作り方
13 views (last 30 days)
Show older comments
ガウス窓を作りたいのですが、スクリプト内で窓の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]);
0 Comments
Accepted Answer
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])
0 Comments
More Answers (0)
See Also
Categories
Find more on 記述統計 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!