㈠ 如何使用matlab中的工具箱
使用matlab中的工具箱方法:
MATLAB自带工具箱
查看方式:
我们首先详细介绍一下MATLAB自带工具箱的使用。
在我们不熟悉一些调用工具箱的命令的时候,我们可以按照如下图所示:
在MATLAB主窗口中,点击左下角start--toolboxes,就会罗列出你的MATLAB已经安装的所有工具箱,可以根据你的需要选择你将要使用的工具箱。我们可以看到有拟合工具箱、金融工具箱、最优化工具箱等等。
调用(打开)方式:
下面我们介绍一下如何打开一个工具箱。
我们以调用拟合工具箱为例,进行详细的示例。
调用方式一:
按照如下图所示的步骤:
点击主窗口左下角start--toolboxes--curve
fitting--curve
fitting
tool
单击,就可以打开拟合工具箱.
调用方式二:
在上一步中,我们在start--toolboxes--curve
fitting--curve
fitting
tool
,到这里的时候,会看到在其后面有一个简写
cftool
如下图,这就是我们的拟合工具箱调用命令函数。在MATLAB主窗口中输入cftool
,回车,同样可以打开拟合工具箱。
工具箱的使用:
拟合工具箱打开之后,如下,我们就可以进行多种曲线拟合了。
关于MATLAB拟合工具箱等,一些工具箱的详细用法,由于篇幅的有限,在我的其他经验中都会陆续给出,有兴趣的可以查看。
非自带工具箱
非自带工具箱,需另外下载,然后按照一定的步骤导入,导入后一般不能像上面工具箱一样,通过界面操作,一般都通过函数使用。由于工具箱的导入有几个小的细节需要注意,所以在我的其他经验中,关于如何导入工具箱,我也进行了详细的介绍。
㈡ 怎么用MATLAB做光纤光栅滤波器的设计呀! 求程序或资料。。。。。。。。
利用光栅滤波实现图像相加减设计实验
光学图像加减实验
摘要:
本实验利用正弦光栅滤波实现图像相加减的设计,用低通滤波器滤光,两列相干光,考虑相位和振幅。物光用一个E和一个F,只要改变光栅相对光轴的位置,就可以方便的改变他们的相位,从而可以获得图像的相加或相减的输出。
在医学,军事,农业,工业具有广泛的作用。
引言:
图像加减是相干光学处理中的一种基本的光学‐数学运算, 是图像识别的一种主要手段。其中比较感兴趣的是图像相减,因为通过相减可以求出两张相近照片的差异, 从中提取差异信息。例如:通过在不同时期拍摄的两张照片相减, 在医学上可用来发现病灶的变化; 在军事上可以发现地面军事设施的增减; 在农业上可以预测农作物的长势; 在工业上可以检查集成电路掩膜的疵病, 等等。还可用于地球资源探测、气象变化以及城市发展研究等各个领域。实现图像相减的方法很多, 本实验介绍利用正弦光栅作为空间滤波器实现图像相减的方法。
一.实验目的:
1 .采用正弦光栅作滤波器,对图像进行相加和相减实验,加深对空间滤波概念的理解;
2 .通过实验,加深对傅里叶光学相移定理和卷积定理的认知。
二.实验原理:
设正弦光栅的空间频率为f0 , 将其置于4 f 系统的滤波平面P2 上, 如图1 所示, 光栅的
复振幅透过率为:
式中,f 为傅里叶变换透镜的焦距; 表示光栅条纹的初位相,它决定了光栅相对于坐标原点的位置。
将图像A 和图像B 置于输入平面P1 上,且沿x1 方向相对于坐标原点对称放置,图像
中心与光轴的距离均为b。选择光栅的频率为f0,使得 , 以保证在滤波后两图像中A 的+ 1 级像和B 的- 1 级像能恰好在光轴处重合。于是, 输入场分布可写成:
在其频谱面P2 上的频谱为:
由于及,因此。上式可以写成
经过光栅滤波后的频谱为:
图1 光学图像加减原理图
通过透镜L2 进行傅立叶逆变换,在输出平面P3 上的光场为:
讨论:(1)当光栅条纹的初相位时,上式变为:
结果表面在输出平面P3 的光轴附近,实现了图像相加。
(2)当光栅条纹的初相位时,上式变为:
结果表面在输出平面P3 的光轴附近,实现了图像相减。
从相加状态转换到相减状态,光栅的横向位移量应等于1/4 周期,即满足:
因此,小心缓慢的横向水平移动光栅时,将在输出平面的光轴附近观察到图像A、B 交
替的相加相减的效果。
三.实验仪器介绍:
光学实验导轨 1000mm 1 根
半导体激光器(含电源) 635nm/3mW 1 台
加减图像+干板夹 1 套
一维光栅+干板夹 1 套
傅里叶透镜 2 套
毛玻璃 1 块
扩束镜 1 套
准直镜 1 套
滑块 6 个
一维位移架 1 个
二维位移架 1 个
四.实验步骤:
图2 实验系统框图
1、将半导体激光器放在光学实验导轨的一端,打开电源开关,调节二维调整架的两个旋扭,
使的从半导体激光器出射的激光光束平行于光学实验导轨。
2、在半导体激光器的前面放入扩束镜,调整扩束镜的高度和其上面的二维调节旋扭,使的
扩束镜与激光光束同轴等高。
3、在扩束镜的前面放入准直镜,调整准直镜的高度,使的准直镜与激光光束同轴等高。再
调整准直镜的位置,使的从准直镜出射的光束成近似平行光。
4、在准直镜的前面搭建4f 系统。保持两傅里叶透镜与激光光束同轴等高。如实验图所示。
5、在4f 系统的输入面上放入待加减图像且待加减图像装在一维位移架上,频谱面上放入
加减滤波器(一维光栅)且加减滤波器(一维光栅)装在二维位移架上,输出面上放入观察
屏(毛玻璃)。
6、通过旋转一维位移架上的旋扭,使的加减滤波器(一维光栅)发生位移,观察毛玻璃上
的图像的变化,直到在毛玻璃上出加减图像为止。
五、实验结果:
实验中得到光学相加图像如下:
得到光学相减图像如下:
参考资料:
[1] 苏显渝等.信息光学(第二版)[M]. 北京:科学出版社,2011.06.
[2] 谢敬辉,赵达尊,阎吉祥.物理光学教程[M].北京:北京理工大学出版社,2005.
[3] 王正林,刘明.精通MATBAL7[M].北京:电子工业出版社,2007.
[4] 张平等.MATLAB基础与应用[M].北京:北京航空航天大学出版社,2005.
[5]光学相干处理,光学图像微分与加减实验报告。
㈢ 用MATLAB实现光学问题的程序
你对照单缝衍射光强分布公式看这个程序,就简单了,程序中用image函数仿真绘制衍射图样,用plot函数绘制光强;
没有主函数,程序前部分生成仿真单缝衍射所需要的光强分布数据(51个点数据),后部分是用image,plot两个函数(MATLAB自己的)仿真图像;
用subplot将图形窗口分成两块,第一块仿真绘制衍射图样,第二块用plot函数绘制光强。
关键语句,我在后面进行了注释!
lam=500e-9;
a= 1e-3; f=1;
xm= 3*lam*f/a;
nx= 51;
xs=linspace(-xm,xm,nx);%在-xm到xm之间均匀产生51个数据
np=51;
xp=linspace(0,a,np);%在0到a之间均匀产生51个数据
%以上语句创建若干变量,与特定公式有关
for i=1:nx
sinphi= xs(i)/f;
alpha=2*pi*xp*sinphi/lam;
sumcos=sum(cos(alpha));
sumsin=sum(sin(alpha));
B(i,:)=(sumcos^2+sumsin^2)/np^2;
end
%以上语句为for循环,计算51个位置的衍射光强,放在B向量中
N=255;
Br=(B/max(B))*N;%归一化到对应像素灰度
figure(1);
subplot(1,2,1)
image(xm,xs,Br);%仿真衍射图像
colormap(gray(N));
subplot(1,2,2)
plot(B,xs);%仿真单缝衍射光强
㈣ matlab的几个干涉实验模拟
function photo_diffraction
%光学衍射仿真 矩形
lmda=632.8e-9;% 波长
xmax=0.05;% 观察屏所取范围
a=1e-3;f=1;
ymax=xmax;
def=0.0001;
x=-xmax:def:xmax;
y=-ymax:def:ymax;
lenm=length(x);
lenn=length(y);
for m=1:lenm
for n=1:lenn
alpha=pi*x(m)*a/(lmda*f);%0.5*k*l*a;
beta=pi*y(n)*a/(lmda*f);%bb=0.5*k*w*b;
I(m,n)=((sin(alpha))/(alpha))^2*((sin(beta))/(beta))^2;
end
end
I=I/(max(max(I)));
[X,Y]=meshgrid(x,y);
figure
mesh(X,Y,I);
xlabel('x');
ylabel('y');
zlabel(' 光强');
rotate3D
hold on
figure
imshow(255*I);
xlabel('x');
ylabel('y');
%---------光学衍射仿真 单缝------------
clear
lam=500e-9;
a= 1e-3; f=1;
xm= 3*lam*f/a;
nx= 51;
xs=linspace(-xm,xm,nx);
np=51;
xp=linspace(0,a,np);
for i=1:nx
sinphi= xs(i)/f;
alpha=2*pi*xp*sinphi/lam;
sumcos=sum(cos(alpha));
sumsin=sum(sin(alpha));
B(i,:)=(sumcos^2+sumsin^2)/np^2;
end
N=255;
Br=(B/max(B))*N;
figure;
subplot(1,2,1)
image(xm,xs,Br);
colormap(gray(N));
subplot(1,2,2)
plot(B,xs);
%--------光学衍射仿真 多缝--------------
clear
lam=500e-9;N=2;
a= 2e-4;z=5;d=5*a;
xm=2*lam*z/a;y0=xm;
n=1001;
x0=linspace(-xm,xm,n);
for i= 1: n
sinphi=x0(i)/z;
alpha=pi*a*sinphi/lam;
beta=pi*d*sinphi/lam;
B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;
B1=B/max(B);
end
NC=255;
Br=(B/max(B))*NC;
figure;
subplot(1,2,1)
image(y0,x0,Br);
colormap( gray(NC) );
subplot(1,2,2)
plot(B1,x0);
%--------光学衍射仿真 圆孔--------------
clear
lam=500;% '请输入光的波长:')
lam=lam*1e-9;
a=2e-3;
f=1;
m=200;
ym=2000*lam*f;
ys=linspace(-ym,ym,m);
xs=ys;
n=255;
for i=1:m
r=xs(i)^2+ys.^2;
sinth=sqrt(r./(r+f^2));
x=2*pi*a*sinth./lam;
hh=(2*BESSELJ(1,x)).^2./x.^2;
b(:,i)=(hh)'.*5000;
end
figure
subplot(1,2,1)
image(xs,ys,b)
colormap(gray(n))
subplot(1,2,2)
b(:,m/2);
plot(ys,b(:,m/2))
㈤ matlab编程模拟光学实验
本人从日本回来,单位要求评估一下virtuallab这个软件。本人从事衍射光学设计,在日本和Virtuallab的日本代理有很多的交流,得知这个软件在日本和美国都卖不动,基本上没有人愿意使用这个软件,本人试用了多次,总结其原因如下: E5w;75,
1. 建模能力有限 ,不能支持CAD文件的导入;很多的面型需要编程来实现,采用C#和VB的编程方式反而没有matlab等数学软件编程方便。 <Dd>- K
2. 光学元件类型有限,没有反射镜模型,就是说不能考虑反射镜的模型;不能倾斜和偏心;在光栅工具只能考虑透射场;没有棱镜模型。 <h/%jM>9/
3. 此软件号称做衍射光学元件很强,可是仔细一看,只有傅里叶迭代的优化算法,居然没有常见的模拟退火和遗传算法-----。 0f^{Rp6
4. LED整形,只有微机构光栅模型,没有微结构棱镜和微结构的mirror模型,也就是用来能看看。 V)j[`,M:
5. 所谓的激光工具只是一个摆设,激光的简单的模型都不能分析。 A*EOn1hN
6. 光栅工具的光源只能用理想的平面波;不能考虑反射场。 FEaT}/h;
7. 没见到号称所有的模拟技术都整合在一起,却是只见到几种简单的模拟技术,甚至没有FDTD算法。
-----------------不一一例举了----- J
综上所述,此软件只是适合于高校的教学演示使用。相比而言,没有matlab方便以及适用面广泛,没有能应用的实用价值。 <kak9 6A
回到国内,发现很多的研究所(如上海光机所和长光所)和高校(如南京理工和长春理工)均买了这个软件,而且价格很贵,听说要上100W了,在中国的报价比在美国和日本等地方的价格要高出很多倍,相信大家都懂这是什么原因。如此软件在欧美,使用者基本上没有,在中国却发扬光大。不知道国内的购买者用来做什么,难道需要这么贵的软件来进行教学演示吗?由此可知,软件本身的功能并不是重点,在这种交易后面的东西才是重要。一个愿意买,一个愿意卖,中间各得好处。本人有日本和美国的报价单,价格和国内相比,相差6倍左右,如此不堪一用的软件,居然能够在国内如此高价出售,大家都知道其中的原因。在这个软件所有的功能,本人通过自编程序或者matlab编程均可以实现。 Y@UkP+{f=
国内的购买者再怎么差劲,不至于让人如此欺骗吧--------
㈥ MATLAB 如何模拟线光源
我看到过一篇优秀硕士论文,是光学仿真
基于Matlab的光学实验仿真
不知道你有条件下到没,没条件的话可以留邮箱,我发给你
可以将线光源离散成多个离散的点光源的叠加,离散球面波的辐射
随便编了点,看看这个能不能符合你的要求:
clc
clear
lambda=586.3e-9;
k=2*pi/lambda;
phi=linspace(0,2*pi);
theta=linspace(0,pi,50);
[tt,pp]=meshgrid(theta,phi);
rf=10*lambda;
[xx,yy,zz]=sph2cart(pp,pi/2.*ones(size(tt))-tt,rf.*ones(size(tt)));
xs=linspace(-10,10,200);
ys=0;zs=0;
E=zeros(size(tt));
for m=1:length(phi)
for n=1:length(theta)
for xn=1:length(xs);
r=sqrt((xx(m,n)-xs(xn))^2+(yy(m,n)-ys)^2+(zz(m,n)-zs)^2);
E(m,n)=E(m,n)+exp(1i*k*r)/r;
end
end
end
surf(xx,yy,zz,E.*conj(E))