[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)
摘要
為您的仿真提供最大化的多功能性是我們最核心的目標之一。這種多功能性在模塊化中體現的最為突出:VirtualLab Fusion 中的其他編程元件(光源、探測器、組件等)都有一個預定義的輸入和輸出,該模塊為用戶提供了完全的實施自由。原因之一是其作用在光學系統之外,因此可由用戶決定其代碼的輸入與輸出:這也意味著讀入和傳送不同的文件類型是基本的。
![[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)的圖1](https://img.jishulink.com/msimage/202601/d5639e54472eccf656b9c6e237d1f5e9.png)
1. 如何找到Module
![[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)的圖2](https://img.jishulink.com/msimage/202601/916c1662c941fcb0e88e6c5470eeea7a.png)
2. 編寫代碼
![[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)的圖3](https://img.jishulink.com/msimage/202601/ce167cbffe54a698b54833b429c7744b.png)
? 特別重要的是,要熟悉VirtualLab中可用的不同數據類型,以及如何讀入和顯示它們。一些有用的例子:
- VL_GUI.AskForDouble() → 提示用戶輸入一個double參數值。也可使用int和Complex。
- VL_GUI.WriteToMessagesTab() 或 WriteLineToMessagesTab() → 在“消息”選項卡中顯示字符串。 第一個變量不包括回車。 用戶可以使用string內的特殊字符 n在任何位置手動添加返回。
- VL_GUI.ShowDocument() → 顯示實現接口IDocument的任何類的圖形。一個例子是ComplexAmplitude或HarmonicFieldsSet。
- VL_GUI.SelectOpenField() → 提示用戶選擇ComplexAmplitude類型的打開文檔。 其他文檔類型也有類似的選項。
- ComplexAmplitude →
- 設計用于存儲單色,等距采樣的復振幅(在平面上的場的橫向分布)的對象。 它存儲了Ex和Ey的ComplexField,無論是全局偏振形式(兩個常見的場函數和一個在平面中恒定的瓊斯矢量)還是局部偏振形式(Ex和Ey的兩個不同函數)。 根據麥克斯韋方程,所有其他電磁分量可以根據需要從這兩個計算得出。
- HarmonicFieldsSet → 用于對ComplexAmpltiude的多個實例進行分組的對象類型。 例如,一個多色場,每個光譜采樣將包含一個ComplexAmpltiude。
- DataArray2D → 包含在2D支持集上定義一個或多個一般復數函數的離散值。 可以等距或非等距地采樣這些值。 函數及其支持集的維度可供用戶自由定義。 同樣,還存在數據陣列的1D版本。
3. Module 的采樣與運行
![[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)的圖4](https://img.jishulink.com/msimage/202601/4316bd7ba2768630de33d2d3077c972f.png)
編寫計算兩個場之間標準差的C#模塊
1. 標準偏差
給定兩個采樣在x,y平面上定義的復函數f和g,g相對于f的相對標準偏差定義為:
(1)
絕對偏差的計算具有相同的表達式,但沒有歸一化常數。
有時,有趣的是允許將復常數與個g(x,y)相乘,以使偏差值最小化。這使我們可以僅比較兩個函數的形狀,而不關注比例。正如我們在示例中所使用的,在VirtualLab中實現的用于計算偏差的函數(我們將在整個示例中使用)允許兩種可能性(有和沒有縮放)。該函數自動傳遞復數常數的值,使誤差最小化。
2. 如何找到Module
![[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)的圖6](https://img.jishulink.com/msimage/202601/65f1ac812e8c7be2c253480ef8987ac2.png)
3. 測試代碼
![[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)的圖7](https://img.jishulink.com/msimage/202601/783c7c4137b0494964173962e9794c1a.png)
![[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)的圖8](https://img.jishulink.com/msimage/202601/3be931b02e6bde5c701dfb439977fe36.png)
4. Module 的編譯與運行
![[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)的圖9](https://img.jishulink.com/msimage/202601/106ae276f9ec8c608adafbe3ba6a12e1.png)
5. 文件和技術信息
![[VirtualLab] 如何使用C#模塊及其示例(計算兩個場之間的偏差)的圖10](https://img.jishulink.com/msimage/202601/180bbd945c66e665021a773919f5b806.png)
擴展閱讀
- Programming a Module That Smooths the Edge of a Structure
- Programming a Module That Computes the Standard Deviation between Two Harmonic Fields
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















