質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

2081閲覧

マイケルソン干渉計による光路差シミュレーション

aho

総合スコア1

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2020/07/12 07:48

初めまして。
マイケルソン干渉計を用いて光路差を求める実験のシミュレーションを行っています。

原理としては、低コヒーレンス光を用いて干渉信号を得て、それをフーリエ変換、その後にフーリエ変換の絶対値の最大点における位相分布の傾きから光路差を導出します。
今回は光路差を50μm,低コヒーレンス光の波長を780nm~820nmとしています。
さらに、波数σを波長の逆数としています。また、光のスペクトル分布はガウス分布です。

以下ソースコードです。

MATLAB

1clear all; 2clc; % コマンドウィンドウのクリア 3close all; % 全てのfigureウィンドウを閉じる 4 5for i = 780:1:820 6 test(1,(i-779)) = 1000./i; 7end 8a = mean(test); 9b = sqrt(var(test)); 10 11test1 = normpdf(test,a,b/2); %スペクトル分布 12 13test1(1,1) = 0; 14test1(1,41) = 0; 15 16for i = 1:1:41 17 18 for j = 1:1:8192 19 si(i,j) = test1(1,i).*cos(2.*pi.*(j.* 0.1 - 359.7)./(0.779 + (i .* 0.001))); 20 %41本の干渉信号作成 21 %サンプリング距離は0.1μm,データ点数は8192 22 end 23 24end 25 26for i = 1:1:8192 27 y(1,i) = i.*0.1 - 409.7; 28end 29 30S = sum(si); 31 32z = fft(S)./8192; 33re = real(z); 34im = imag(z); 35m = abs(z); 36p1 = atan(im./re); 37 38 39for i = 1:1:8192 40 la(1,i) = 10./8192.*i; %横軸 41end 42 43figure(5); 44plot(la,p1); 45title('位相分布(横軸は1/820~1/780までを切り取り)') 46xlabel('σ(μm-1)'); 47xlim([1.221001221,1.280409731]); 48ylim([-1.570796*2,1.570796*2]) 49 50figure(4); 51plot(la,m); 52title('FFT(横軸は1/820~1/780までを切り取り)') 53xlabel('σ(μm-1)'); 54xlim([1.221001221,1.280409731]); 55 56figure(3); 57plot(la,m); 58title('FFT') 59xlabel('σ(μm-1)'); 60%xlim([1.221001221,1.280409731]); 61 62figure(2); %干渉信号 63plot(y,S); 64title('干渉信号(サンプリング0.1μm,8192点)'); 65xlabel('μm'); 66xlim([-120,120]); 67 68figure(1); 69plot(test,test1) %横軸は波長λの逆数 70title('スペクトル分布') 71xlabel('σ(μm-1)'); 72xlim([1.221001221,1.280409731]);

画像がなぜか挿入できないので実際にMATLABがあれば動かして頂きたいのですが、位相分布の傾き(figure(5))における横軸1.25あたりがFFTの絶対値の最大点なので、そこの直線の傾きを求めると314.14272となります。(横軸は波数(1/λ)で単位は(1/μm))
これを2????で割ることできれいに50μm程度の結果を得ることができ、光路差がわかるわけです。

理論的には干渉信号を
????(????)=∫????(????)cos(2????????????)???????? とした時、これをフーリエ変換すると
ℱ[????(????)]=????(????)=????(????)cos(????2????????????)となります。
(Bはスペクトル分布)

F(σ)の振幅分布のピーク点の波数σにおける、位相分布の傾きαから、光路差Lは、
????= ????/(2????????)となるそうです。
実際にグラフから傾きを求める際は上式のα/σが傾きとなります。

この理論をもとに上のプログラムを書いたのですが、よく考えるとどうして位相分布の傾きから光路差が求められるのかがわかりません。
こんなことは一番最初に確認するべきだとは思いますが、どうもよくわからないので、理論的な話になってしまって、質問する場所が違うかもしれませんが、わかる方がいらっしゃいましたらご回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

あー、そうか。位相差は光路差に波数をかけて求められるように、光路差は位相差を波数で割ると求められるんですね。
そして今回はフーリエ変換でσが幅を持っているのでΔα/Δσということですか、よくわかりました。
読んでいる資料に文章の説明が無く式だけだったのでモヤモヤしていました。

投稿2020/07/13 05:53

aho

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問