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

조회 수: 8 (최근 30일)
啓史 千葉
啓史 千葉 2021년 9월 8일
답변: Hernia Baby 2021년 9월 8일
ガウス窓を作りたいのですが、スクリプト内で窓の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]);

채택된 답변

Hernia Baby
Hernia Baby 2021년 9월 8일
半値幅からσが決まるのであれば、標準正規分布を作ればいい気がします
データ点数が決まれば、それに対応する最大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개)

카테고리

Help CenterFile Exchange에서 フィルター バンク에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!