关于MATLAB 源程序

关于MATLAB 源程序,第1张

主程序:

clear

%1 已知参数

alpha_0=0phi_0=0

theta_1=[4590135]*pi/180

theta_3=[5282112]*pi/180

d=50

%2 计算各杆长度

[l,m,n]=link_design(theta_1,theta_3,alpha_0,phi_0)

b=l*d/n

c=d*m/n

a=d/n

%3 输出计算结果

disp('计算结果1:各干相对长度')

disp('            ')

fprintf('连杆相对长度 l=%3.2f  \n',l)

fprintf('摇杆相对长度 m=%3.2f  \n',m)

fprintf('机架相对长度 察基n=%3.2f  \n'凯销,n)

disp('            ')

disp('计算结果2:各干长度')

disp('            ')

fprintf('曲柄长度 a=%3.2f \n',a)

fprintf('连杆长度 b=%3.2f \n',b)

fprintf('摇杆长度 c=%3.2f \n',c)

fprintf('机架长度 d=%3.2f \n',d)

disp('            ')

子程序(link_design,m)

function   [l,m,n]=link_design(theta_1,theta_3,alpha_0,phi_0)

%计算线性方程组系数矩阵A

A=[cos(theta_3(1)+phi_0),cos(theta_3(1)+phi_0-theta_1(1)-alpha_0),1

    cos(theta_3(2)+phi_0),cos(theta_3(2)+phi_0-theta_1(2)-alpha_0),1

    cos(theta_3(3)+phi_0),cos(theta_3(3)+phi_0-theta_1(3)-alpha_0),1]

% 计算线性方程组系数矩阵B

B=[cos(theta_1(1)+alpha_0)cos(theta_1(2)+alpha_0)cos(theta_1(3)+alpha_0)]

% 求解线性方程组

p=A\B

% 计算相对杆长l,m,n

p0=p(1)p1=p(2)p2=p(3)

m=p0

n=-m/p1

l=sqrt(m*m+n*n+1-p2*2*n)

结果

计算结果1:各干相对长度

            

连杆相对长度 l=2.07  

摇杆相对长度 m=1.49  

机架相对长度 n=1.81  

            

计算结果2:各败孙谨干长度

            

曲柄长度 a=27.63 

连杆长度 b=57.24 

摇杆长度 c=41.11 

机架长度 d=50.00

var matlab:variant//通过"变体"调用接数做口是比较低效的,但很方便

begin //变体这种结构,本是vb中的东西。

try //如果已有活动的matlab.application对象,取其接口

matlab:=GetActiveOleObject('Matlab.Application')

except //这些个api所使用到的参数,其实都可以在注册表里搜索销拆到.

matlab:=CreateOleObject('Matlab.Application')//否则自己创建之

matlab:=CreateOleObject('Matlab.Application.5')

matlab.execute('a=[1 1/ 3 1/5] ')//matlab.application接亏毕枣口具有

matlab.execute('b=[3 1 1/3]')//这种方法(接口),否则会出错

matlab.execute('plot(a,b)');

对于光学的东西不是太懂,能做到的只是帮助你更容易地理解程序每一句话,希望对你有帮助

最好将下面的程序复制粘贴到matlab的编辑窗口中再阅读

clear % 清除matlab工作内存

lam=500e-9 %定义一个常数λ: 500乘以10的-9次方

a=1e-3D=1 %定义常数a:10的-3次方;常数D=1

ym=3*lam*D/a %定义ym

ny=51 %定义取点个数 ny=51

ys=linspace(-ym,ym,ny) %定义一个数组ys,从-ym到孙胡ym之间取郑凯和ny个点

np=51 %定义取点个数 np=51

yp=linspace(0,a,np) %定义一个数组yp,从0到a之间取np个点

for i=1:ny%循环语句,一共循环51次

sinphi=ys(i)/D %计算得到 sinΦ,

alpha=2*pi*yp*sinphi/lam % 计算得到 α=2Δ/λ=πypys/λD(由于yp是一个向量,这里得到的α也是一个向量,包含51个数)

sumcos=sum(cos(alpha)) % 计算得到 Σcosα

sumsin=sum(sin(alpha)) % 计算得到 Σsinα

B(i,:)=(sumcos^2+sumsin^2)/np^2 % 计算得到光强 I=I0(Σcosα)2+(Σsinα)2,并存储为矩阵B的第i行

end

N=255

Br=(B/max(B))*N%计算得到光强分布矩阵

subplot(1,2,1) %将绘图区分成左右两部分,首先在左侧绘图区绘图

image(ym,ys,Br)%绘制光强分布图

colormap(gray(N))%更改图像模式为灰度图像

subplot(1,2,2) %然后选择在右侧绘图区绘图

plot(B,ys) %绘制光强喊盯分布曲线


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8237513.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存