MATLAB调用C 程序_基于MATLAB与C#混合编程实现光的干涉仿真

  摘 要: 本文对光的双缝干涉进行了分析,利用MATLAB与C#混合编程,实现了光的干涉仿真。  关键词: MATLAB C# 混合编程 光学规律 干涉仿真  1.开发背景
  光学是物理学教学和实验的重要组成部分。而光学实验需要用到复杂贵重的实验仪器,一般的中学不具备这样的实验条件,另外教师上课时做演示实验也不太方便,而利用计算机进行仿真,就可以解决以上问题,使得一些抽象的概念形象化,更易于学生接受,具有很好的教学效果。
  MATLAB是由MathWorks公司开发的一种主要用于数值计算及可视化图形处理的工程语言,是当今最优秀的科技应用软件之一。它将数值分析、矩阵运算、图形图像处理、信号处理和仿真等诸多强大的功能集成在较易使用的交互式计算机环境中,为科学研究、工程应用提供了一种功能强、效率高的编程工具,但是MATLAB有界面开发能力较差、执行速度不高、局限于MATLAB运行环境等缺点。
  C#是针对.NET平台而设计的,是微软.NET计划中的主要开发语言。利用C#开发的系统具有界面友好、执行速度快、易维护和升级等优点,能够生成可执行文件,有效地保护算法和数据,并可脱离编程环境运行。但是在工程计算方面和MATLAB相比编程显得复杂。
  2.数学模型
  两束频率相同的单色光在空间某点相遇时,讨论光强和干涉条纹的分布规律。根据波的叠加理论,两束同频率单色光在空间某一点光矢量的大小为
  E=Ecos(ωt+Φ),E=Ecos(ωt+Φ),(1)
  其中,E和E分别是两个光矢量的振幅,Φ和Φ分别是初相。如果两个光矢量的方向相同,合成的光矢量为
  E=Ecos(ωt+Φ),(2)
  其中,振幅和初相分别为
  E=,(3a)
  Φ=arctan。(3b)
  在一定时间内观察到的平均光强I与光矢量的平方的平均值成正比
  I=a=a[++2EE],(4)
  其中a是比例系数。对于普通光源,两光波之间的相位差Φ-Φ是随机变化的,平均值为零,因此
  I=a+a=I+I。(5)
  这就是光的非相干叠加,总光强等于两束光各自照射时的光强之和。
  如果两束光的相位差恒定,则合成光强为
  I=I+I+2cos△Φ,(6a)
  其中ΔΦ=Φ-Φ,第三项是干涉项。这就是光的相干叠加。如果I=I,则合成光强为
  I=2I(1+cos△Φ)=4Icos。(6b)
  当两个光源的强度相等时,相对光强为
  I==2+2cos△Φ=4cos。(7)
  3.仿真实现
  (1)首先在MATLAB中写下Interference.m程序,实现绘图。
  functionInterference(n,dphi)
  %n条纹的最高阶数dphi相差的增量
  %两束相干光的干涉强度和干涉条纹
  (2)使用MATLAB的deploytool工具,将m文件编译成Matlab_Optical.dll文件。
  (3)创建C#项目,添加引用MWArray.dll和Matlab_Optical.dll文件。
  using Math Works.MATLAB.NET.Utility;
  using Math Works.MATLAB.NET.Arrays;
  using Matlab_Optical;
  仿真代码:
  Optical dr=newOptical();
  MWArray n=(MWArray)Convert.ToDouble(textBox1.Text);
  MWArray dphi=(MWArray)Convert.ToDouble(textBox2.Text);
  dr.Interference(n,dphi);
  Bitmap bp=newBitmap("interference.jpg");
  this.pictureBox1.Image=bp;
  (4)仿真结果。
  4.结论
  本文对光的双缝干涉进行了分析,应用C#与MATLAB混合编程,画出光强的曲线和干涉图样,掌握了光的干涉的规律,计算机模拟不但能够再现实验过程和结果,而且有利于理解和掌握光学规律。
  参考文献:
  [1]庄建.基于Matlab的光学实验仿真平台.成都大学学报,2006,25(3).
  [2]王娟.C#.net与Matlab混合编程的快速实现.科技资讯,2006,33.

推荐访问:干涉 仿真 混合 编程