凸轮廓线设计MATLAB程序

凸轮廓线设计MATLAB程序
凸轮廓线设计MATLAB程序

凸轮轮廓及其综合

1. 凸轮机构从动件的位移

凸轮是把一种运动转化为另一种运动的装置。凸轮的廓线和从动件一起实现运动形式的转换。凸轮通常是为定轴转动,凸轮旋转运动可被转化成摆动、直线运动或是两者的结合。凸轮机构设计的内容之一是凸轮廓线的设计。

定义一个凸轮基圆r b 作为最小的圆周半径。从动件的运动方程如下:

L(?)=r b +s(?)

设凸轮的推程运动角和回程运动角均为β,从动件的运动规律均为正弦加速度运动规律,则有:

s(?)=h(

β

?-

π

21sin(2π?/β)) 0≤?≤β

s(?)=h -h(

β

β?--

π

21sin(2π(?-β/β)) β≤?≤2β

s(?)=0 2β≤?≤2π

上式是从动件的位移,h 是从动件的最大位移,并且0≤β≤π。

如果假设凸轮的旋转速度ω=d ?/dt 是个常量,则速度υ、加速度a 和瞬时加速度j (加速度对时间求异)分别如下:

速度:

υ(?)=

β

ωh (1-cos(2π?/β)) 0≤?≤β

υ(?)=-

β

ωh (1-cos(2π(?-β)/β) β≤?≤2β

υ(?)=0 2β≤?≤2π

加速度:

a(?)=

2

22β

πωh

sin(2π?/β)) 0≤?≤β

a(?)=-

2

22β

πωh

sin(2π(?-β)/β) β≤?≤2β

a(?)=0 2β≤?≤2π

瞬时加速度:

j(?)=

3

3

2

ωπh

cos(2π?/β)) 0≤?≤β

j(?)=-

3

3

24β

ωπh

cos(2π(?-β)/β) β≤?≤2β

j(?)=0 2β≤?≤2π

定义无量纲位移S=s/h 、无量纲速度V=υ/ωh 、无量纲加速度A=a/h ω3

和无量纲瞬时加速度J=j/h ω3

。若β=60°,则如下程序可以对以上各个量进行计算。

beta=60*pi/180;

phi=linspace(0,beta,40); phi2=[beta+phi]; ph=[phi phi2]*180/pi; arg=2*pi*phi/beta;

arg2=2*pi*(phi2-beta)/beta;

s=[phi/beta-sin(arg)/2/pi 1-(arg2-sin(arg2))/2/pi]; v=[(1-cos(arg))/beta-(1-cos(arg2))/beta]; a=[2*pi/beta^2*sin(arg)2*pi/beta^2*sin(arg2)];

j=[4*pi^2/beta^3*cos(arg)4*pi^2/beta^3*cos(arg2)]:subplot(2,2,1) plot(ph,s,ˊK ˊ)

xlabel(ˊCam angle(degrees)ˊ) ylabel(ˊDisplacement(S)ˊ) g=axis; g(2)=120; axis(g) subplot(2,2,2)

plot(ph,v,ˊk ˊ,[0 120],[0 0],ˊk--ˊ) xlabel(ˊCam angle(degrees)ˊ) ylabel(ˊVelocity(V)ˊ) g=axis; g(2)=120; axis(g) subplot(2,2,3)

plot(ph,a,ˊk ˊ,[0 120],[0 0],ˊk--ˊ) xlabel(ˊCam angle(degrees)ˊ)

ylabel(ˊAcceleration(A)ˊ)

g=axis;

g(2)=120;

axis(g)

subplot(2,2,4)

plot(ph,j,ˊkˊ,[0 120],[0 0],ˊk--ˊ)

xlabel(ˊCam angle(degrees)ˊ)

ylabel(ˊJerk(J)ˊ)

g=axis;

g(2)=120;

axis(g)

2 平底盘形从动作

参考下图得到如下关系:在(x,y)坐标系中,凸轮轮廓的坐标为Rx和Ry,刀具的坐标

为Cx和Cy:

Rx=Rcos( θ+?) Ry=Rsin( θ+?)

C x=Ccos( γ+?) C y=Ccos( γ+?)

其中,

R=

θcos L θ=arctan ???

?

???d dL L 1

c=

γγcos c

L + γ=arctan ???

?

?

?+c L d dL γ?/

r c 是刀具的半径,且dL/d ?=V(?)/ω。

为了画出凸轮的轮廓曲线,创建函数CarmProfile ,用来计算L(?)和dL/d ?,创建函数ContourFlat,用来计算R x ,R y ,C x ,C y 。

function[L,dLdphi]= CarmProfile(phi,rb,h,beta) arg=2*pi*phi/beta ;

L=rb+h*(phi/beta-sin(arg)/2/pi); dLdphi=(h/beta)*(1-cos(arg)); L=[L fliplr(L)];

dLdphi= [dLdphi- dLdphi];

函数ContourFlat 是

function[Rx,Ry,Cx,Cy]=ContourFlat(phi,rb,h,beta,rc) [L,dLdphi]=Camprofile(phi,rb,h,beta); theta=atan2(dLdphi,L); R=L./cos(theta); ph=[phi beta+phi]; Ry=R.*sin(theta+ph); Rx=R.*cos(theta+ph); gama=atan(dLdphi./(L+rc)); C=(L+rc)/cos(gama); Cy=C.*sin(gama+ph); Cx=C.*cos(gama+ph);

若令β=60°,r b =3.0和h=0.5,则程序清单是:

beta=60*pi/180;rb=3;h=0.5;rc=0.5;n=23; phi=linspace(0,beta,n);

ph=[phi beta+phi];

[Rx,Ry,Cx,Cy]=ContourFlat(phi,rb,h,beta,rc);

ang=linspace(2*beta,2*pi,40);

plot(Rx,Ry,ˊkˊ,rb*cos(ang),rb*sin(ang),ˊkˊ,0,0,

ˊk+ˊ,Cx(1:5:2*n),Cy(1:5:2*n),ˊk+ˊ)

axis equal

phd=linspace(0,2*pi,50);

[x,phx]=meshgrid(Cx(1:5:2*n),phd);

y=meshgrid(Cy(1:5:2*n),phd);

hold on

plot(x+rc.*cos(phx),y+rc.*sin(phx),ˊk--ˊ)

title(ˊCam contour for cycloidal motion of flat-face followerˊ)

3.偏置滚子从动件

由图可得到如下关系。凸轮轮廓在(x,y)的坐标是R x和R y,刀具的坐标是Cx和C y;

Rx=Rcos( ψ+?+γ) Ry=Rcos( ψ+?+γ)

C x=Ccos( ψ+?+δ) C y=Ccos( ψ+?+δ )

其中,

R 2=(F-r f cos α)2+r f 2cos 2

α ψ=arctan(m/L)

C 2=c x 2+c y 2

α=arctan ???

? ??-?

?d mdL F d LdL //2

c x =F+(r c -r f )cos α γ= arctan ?

??

?

??-ααsin cos f f r r F c y =(r c -r f )sin α δ=arctan(c y /c x ) F 2

=m 2

+L

2

凸轮的基圆半径是:

L(0)=r b =)0()0(2

2=+=??y x R R

从?=2β+Δ开始,其中,

Δ=arctan ???

?

??==)0()0(??x y R R

为了显示这些结果,首先创建函数ContourRoller 来计算Rx ,Ry ,C x ,C y : function[Rx,Ry,Cx,Cy]=ContourRoller(phi,rb,h,beta,rc,m,rf)

[L,dLdphi]=CamProfile(phi,rb,h,beta); F2=m^2+L.^2; F=sqrt(f2); psi=atan2(m,L);

alpha=atan2(L.*dLdphi,F2-m*dLdphi); gamma=atan2(rf*sin(alpha),F-rf*cos(alpha)); ph=[phi beta+phi];

R=sqrt((F-rf*cos(alpha)).^2+(rf*sin(alpha)).^2); Ry=R.*sin(psi+gamma+ph); Rx=R.*cos(psi+gamma+ph); cx=F+(rc-rf)*cos(alpha); cy=(rc-rf)*sin(alpha); delta=atan2(cy,cx); c=sqrt(cx.^2+cy.^2); Cy=C.*sin(psi+delta+ph);

Cx=C.*cos(psi+delta+ph);

若令β=60°,r b =3.0,h=0.5,r c =0.5,r f =0.375,m=0.375,则程序清单是:

beta=60*pi/180;rb=3;h=0.5;rc=0.5;rf=0.375;m=.375;n=23; phi=linspace(0,beta,n); ph=[phi beta+phi];

[Rx,Ry,Rx,Ry]=ContourRoller(o,rb,h,beta,rc,m,rf); rb=sqrt(Rx(1)^2+Ry(1)^2); delta=atan2(Ry(1),Rx(1));

[Rx,Ry,Cx,Cy]=ContourRoller(phi,rb,h,beta,rc,m,rf); ang=linspace(2*beta+delta,2*pi+delta,40);

plot(Rx,Ry,ˊk ˊ,Rx(1)*cos(ang)),Rx(1)*sin(ang),ˊk ˊ,0,0,ˊ

k+,Cx(1:5:2*n), …Cy(1:5:2*n),ˊk+ˊ) axis equal

phd=linspace(0,2*pi,50);

[x,phx]=meshgrid(Cx(1:5:2*n),phd); y=meshgrid(Cy(1:5:2*n),phd); hold on

plot(x+rc.*cos(phx),y+rc.*sin(phx),ˊk--ˊ)

title(ˊCam contour for cycloidal motion of an offset roller follower ˊ)

4.凸轮的曲率半径

凸轮轮廓的曲率半径如下给出:

ρ=

2

/)()()/)((2))((]

)/)(())([(2

2

2

2/322

?

????????d L d L d dL L d dL L -++

凸轮轮廓应该是这样的:从动件的曲率半径总是大于凸轮轮廓的最小曲率半径,有意义的是最小曲率半径。使用第1节中对无量纲位移、速度、加速度和瞬时加速度的定义,曲率半径可表示如下:

ρ/h=

A

S h r V

S h r V S h r b b b )/(2)/(])/[(22

2

/322

+-++++

为了确定最小的曲率半径(无量纲的),利用曲率半径与β的对称关系创建函数

CamCurvature。在0≤ ≤β区间是有效的。

function RadiusCurve=CamCurvature(phi,beta,rbh)

arg=2*pi*phi/beta;

S=phi/beta-sin(arg)/2/pi;

V=(1-cos(arg)) /beta;

A=2*pi/beta^2*sin(arg);

RadiusCurve=((rbh+S)^2+V^2)^1.5/((rbh+S)^2+2*V^2-(rbh+S)*A);

那么对于r b/h和β的任意值,程序清单是:

rbh=input(ˊEnter ratio rb/h:ˊ);

beta=input(ˊEnter angle beta(degrees):ˊ)*pi/180);

options=optimset(ˊdisplayˊ,ˊoffˊ);

phimin=fminbnd(ˊCamCurvatureˊ,0,beta,options,beta,rbh);

rmin=CamCurvature(phimin,beta,rbh);

disp([ˊWhen beta=ˊnum2str(beta*180/pi)ˊdegrees and rb/h=ˊ…

num2str(rbh)ˊthe mininmun radius of curvature for aˊ]) disp([ˊcycloidal cam profile is=ˊnum2str(rmin)ˊh,which occurs atˊ…

num2str(phimin*180/pi)ˊdegrees.ˊ])

程序执行后,在MATLAB命令窗口中显示如下信息:

Enter ratio rb/h:4

Enter angle beta(degrees):80

When beta=80 degrees and rb/h=4 the minimum radius of curvature for a

cycloidal cam profile is=2.9777h,which occurs at 58.8421degrees.

参考文献:

[美]Edward B. Magrab 等著,高会生,李新叶,胡智奇等译. MATLAB原理与工程应用. 北京:电子工业出版社,2002年

MATLAB编程作业

《Matlab 编程训练》 作业 专 业 学生姓名 班级 学 号 指导教师 完成日期

实训一 MATLAB 语言介绍和数值计算 1.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存变量。 12 2sin851z e =+ . 2. 已知 1234413134787,2033657327A B --???? ????==???? ????-???? ,求下列表达式的值: (1) A+6*B 和A-B+I (其中I 为单位矩阵) A+6*B:

A-B+I: (2)A*B和A.*B A*B程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] c=A*B 结果: A.*B程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] D=A.*B 结果:

(3)A^3和A.^3 A^3程序: A=[12 34 -4;34 7 87;3 65 7] E=A^3 结果: A.^3程序: A=[12 34 -4;34 7 87;3 65 7] C=A.^3 (4)A/B及B\A A/B程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] C=A/B 结果:

B\A程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] D=B\A 结果: (5)将矩阵C=B\A的右下角2*2子矩阵赋给D, 并(3)保存变量(mat文件)程序: A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; C=B*inv(A); D=C(2:3,2:3) 结果:

计算机程序设计(C)综合实践

计算机程序设计(C)综合 实践 设计报告 学院:电子通信与物理学院 设计名称:职工信息管理系统 专业班级:电子信息科学与技术14-2 学生:本良 学号: 201401100211 组号: 140203 指导教师:宋戈 完成时间: 2015年 7月23日

目录 第1部分实训题目与要求 (2) 1. 问题提出 (2) 2. 功能要求 (2) 3. 任务分工 (2) 第2部分设计实训题目功能......................................................................... . (3) 1. 总体设 计...................................................................... (3) 2. 数据结 构...................................................................... (4) 3. 程序设 计...................................................................... (5) 4. 测试与调 试......................................................................

(8) 第3部分实训总结......................................................................... . (12) 1. 个人总 结...................................................................... (12) 2. 结束 语...................................................................... (12) 第4部分参考文献......................................................................... . (13) 《C程序设计综合实践》评分表......................................................................... (14)

MATLAB程序设计作业

Matlab程序设计 班级 姓名 学号

《MATLAB程序设计》作业 1、考虑如下x-y 一组实验数据: x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y=[1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2] 分别绘出plot的原始数据、一次拟合曲线和三次拟合曲线,给出MATLAB代码和运行结果。 代码如下: x=[1,2,3,4,5,6,7,8,9,10]; y=[1.2,3,4,4,5,4.7,5,5.2,6,7.2]; plot(x,y); title('原始数据'); p=polyfit(x,y,1); q=polyval(p,x); figure,plot(x,q); title('一次拟合'); p=polyfit(x,y,2); q=polyval(p,x); figure,plot(x,q); title('二次拟合'); 运行结果如下:

1 2 3 4 5 6 7 8 9 10 12 3 4 5 6 7 8 原始数据 123 456789 102 2.5 3 3.54 4.5 55.56 6.57一次拟合 123456789 101 2 3 4 5 6 7 二次拟合 2、在[0,3π]区间,绘制y=sin(x)曲线(要求消去负半波,即(π,2π)区间内的函数值置零),求出曲线y 的平均值,以及y 的最大值及其最大值的位置。给出执行代码和运行结果。 代码如下: clear clc x=(0:0.01:3*pi); y=sin(x); plot(x,y); y1=(y>=0).*y; figure,plot(x,y1);

C++程序设计实践教程思考题答案

实验1 C++基础 6.编写程序,输入某大写字母的ASCII码值,输出该字母的对应小写字母。 #include using namespace std; int main() { int i; cin>>i; if(i>=65 && 1<=90 ) cout< #include using namespace std; int main()

{ float a,b,c; 潣瑵?请输入直角三角形的两条边长:; cin>>a>>b; c=sqrt(a*a+b*b); 潣瑵?直角三角形的斜边=< using namespace std; int main() { char c; 1 潣瑵?请输入一个字符:; cin>>c; if(c>='A'&& c<='Z') c+='a'-'A'; cout<

3.输入一个学生的成绩,如高于60分,则输出“pass”;否则,输出“failed”。 #include using namespace std; int main() { float grade; 潣瑵?请输入成绩:; cin>>grade; if(grade>=60) cout<

MATLAB 语言程序设计基础(2)

%第六章微分方程问题的解法 % 微分方程的解析解方法 % 常微分方程问题的数值解法 % 微分方程问题算法概述 % 四阶定步长Runge-Kutta算法及MATLAB 实现 % 一阶微分方程组的数值解 % 微分方程转换 % 特殊微分方程的数值解 % 边值问题的计算机求解 % 偏微分方程的解 % 6.1 微分方程的解析解方法 % y=dsolve(f1, f2, …, fm ,'x') % syms t; u=exp(-5*t)*cos(2*t+1)+5; % uu=5*diff(u,t,2)+4*diff(u,t)+2*u % syms t y; % y=dsolve(['D4y+10*D3y+35*D2y+50*Dy+24*y='... % '87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10'],'y(0)=3','Dy(0)=2','D2y(0)=0','D3y(0)=0') % [x,y]=dsolve('D2x+2*Dx=x+2*y-exp(-t)',... % 'Dy=4*x+3*y+4*exp(-t)') % syms t x; % x=dsolve('Dx=x*(1-x^2)+1') % Warning: Explicit solution could not be found; implicit solution returned. % > In D:\MATLAB6p5\toolbox\symbolic\dsolve.m at line 292 % x = % t-Int(1/(a-a^3+1),a=``..x)+C1=0 % 故只有部分非线性微分方程有解析解。 % 6.2 微分方程问题的数值解法 % 6.2.1 微方程问题算法概述 %Euler算法% %function [outx,outy]=MyEuler(fun,x0,xt,y0,PointNum) % fun 表示f(x,y); x0,xt:自变量的初值和终值; % y0:函数在x0处的值,其可以为向量形式; % PointNum表示自变量在[x0,xt]上取的点数 % if nargin<5 |PointNum<=0 %PointNum 默认值为100 % PointNum=100; % end % if nargin<4 % y0默认值为0

D2_《C/C 语言程序设计》计算机实践_题目列表

要求:所有程序至少由二个函数完成 A类-简单题 A1:设计一个菜单程序,选择数字键1~3分别在屏幕中间输出正三角形、菱形和空心的平行四边形,选择数字4结束操作并回到操作系统状态。 A3:从键盘上输入三个矩阵,输出三个矩阵主对角线的和及乘积。 A4:字符左右排序 要求编制函数jsSort(),以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组中。 排序条件:将字符串从中间一分为二,左边部分按字符的ASCII码升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参与处理,仍放在原位置上。 例如,原字符串: dcbahgfe 432198765 则处理后字符串: hgfe abcd 876591234 A5:简单的文件操作 编程完成读出文件 sfile.txt 中的内容,反序写入另一个文件 dfile.txt 中去。 A6:有一个一维数组,内放10个学生成绩,输出各分数段人数、平均分、最高分和最低分,保留小数点后一位。 A7:编写程序求出555555的约数中最大的三位数是多少。 A8:编写程序,实现比较两个分数的大小。 比较方法是:先比较两个数的分母,分母相同比较分子;否则通分后比较。 A9:求这样一个三位数,该三位数等于其每位数字的阶乘之和。 A10:求兔子问题。第1年有1对兔子,每对兔子从出生后第3个年起,就可每年生1对兔子,兔子的寿命是6年,问第n年有多少对兔子? A11:用C实现时钟程序。 A12:有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3个人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。问第1个人多少岁,他说是10岁。请问第5个人多大? A13.用指针编写字符串函数strcpy,strcmp,strcat,strlen。并编写程序加以验证。 A14:给定某个年、月、日,计算出这一天为该年的第几天。要求写出计算闰年的函数和计算日期的函数。

matlab程序设计第三章课后习题答案

1. p138 第6题在同一坐标轴中绘制下列两条曲线并标注两曲线交叉点。 >> t=0:0.01:pi; >> x1=t; >> y1=2*x1-0.5; >> x2=sin(3*t).*cos(t); >> y2=sin(3*t).*sin(t); >> plot(x1,y1,'r-',x2,y2,'g-') >> axis([-1,2,-1.5,1]) >> hold on >> s=solve('y=2*x-0.5','x=sin(3*t)*cos(t)','y=sin(3*t)*sin(t)'); >> plot(double(s.x),double(s.y),'*'); 截图:

p366 第4题绘制极坐标曲线,并分析对曲线形状的影响。 function [ output_args ] = Untitled2( input_args ) %UNTITLED2 Summary of this function goes here % Detailed explanation goes here theta=0:0.01:2*pi; a=input('请输入a的值:'); b=input('请输入b的值:'); n=input('请输入n的值:'); rho=a*sin(b+n*theta); polar(theta,rho,'k'); end 下面以a=1,b=1,n=1的极坐标图形为基础来分析a、b、n的影响。

对a的值进行改变:对比发现a只影响半径值的整倍变化 对b的值进行改变:对比发现b的值使这个圆转换了一定的角度

对n的值进行改变:对比发现当n>=2时有如下规律 1、当n为整数时,图形变为2n个花瓣状的图形 2、当n为奇数时,图形变为n个花瓣状的图形 分别让n为2、3、4、5

vb程序设计实验教程习题答案

实验教材实验一 1:单项选择题: A A C C C D C B B C 2:填空题: (1).bas (2).vbp,.frm (3)视图工具箱 (4)对象 (5)属性对象事件方法 (6)Windows (7)事件行为 (8)窗体模块 实验二 1:单项选择题: A D C C A B A B D C B B C B C B A B D C 2:基本运算题: (1)27 (2)3.33333333333333 (3)3 (4)0 (5)-3 (6)2 (7)ab33 (8)类型不匹配 (9)3 (10)AB3 实验三 1:单项选择题: B C B D C 2:填空题: (1)300 (2)321456 (3)Shanghai (4)6 7 6 (5)True (6)2+3=5 (7)”area=” 12.56 (8)VISUAL 实验四 1:单项选择题: C A A C A 2:填空题: (1)7 (2)3 5

(3)输入的数小于0 (4)3 (5)False (6)2010 is not leap year. 试验五 1:单项选择题: A C C A B A C C C B 2:填空题: (1)9 (2)①n ②1 (3)①Len(a) ②n\2 ③Mid(a,(n-i+1),1) ④Mid(a,(n-i+1),1) (4)①n Mod 3=1 And n Mod 5=1 And n Mod 7=1 ②While CountN<5 (5)Mid(c1,1,i) 实验六 1:单项选择题: D B D C D A C A D D 2:填空题: (1)30 (2)3 (3)①a(2) ②a(3) ③a(1) (4)①1 ②2 ③a(i)=a(6-i) (5)①i+j ②0 ③a(i,j) (6)①Print ②k ③a(k,j)=a(j,k) ④a(k,j); 实验七 1:单项选择题: A B B A C B 2:填空题: (1)15 (2)①Preserve a(n+1) ②a(i+1)=a(i) ③Exit For ④a(i+1)=m⑤0 to n+1 (或LBound(a) to UBound(a)) (3)d,c,b,a 实验八 1:单项选择题: C A D B D C A C B 2:填空题: (1)a=9 b=4 (2) 36 25 16 9 4 1 (3)①a ②UBound(b) ③

matlab程序设计实践-牛顿法解非线性方程

中南大学MATLAB程序设计实践学长有爱奉献,下载填上信息即可上交,没有下载券的自行百度。所需m文件照本文档做即可,即新建(FILE)→脚本(NEW-Sscript)→复制本文档代码→运行(会跳出保存界面,文件名默认不要修改,保存)→结果。第一题需要把数据文本文档和m文件放在一起。全部测试无误,放心使用。本文档针对做牛顿法求非线性函数题目的同学,当然第一题都一样,所有人都可以用。←记得删掉这段话 班级: ? 学号: 姓名:

一、《MATLAB程序设计实践》Matlab基础 表示多晶体材料织构的三维取向分布函数(f=f(φ1,φ,φ2))是一个非常复杂的函数,难以精确的用解析函数表达,通常采用离散 空间函数值来表示取向分布函数,是三维取向分布函数的一个实例。 由于数据量非常大,不便于分析,需要借助图形来分析。请你编写一 个matlab程序画出如下的几种图形来分析其取向分布特征: (1)用Slice函数给出其整体分布特征; " ~ (2)用pcolor或contour函数分别给出(φ2=0, 5, 10, 15, 20, 25, 30, 35 … 90)切面上f分布情况(需要用到subplot函数);

(3) 用plot函数给出沿α取向线(φ1=0~90,φ=45,φ2=0)的f分布情况。 (

备注:数据格式说明 解: (1)( (2)将文件内的数据按照要求读取到矩阵f(phi1,phi,phi2)中,代码如 下: fid=fopen(''); for i=1:18 tline=fgetl(fid); end phi1=1;phi=1;phi2=1;line=0; f=zeros(19,19,19); [ while ~feof(fid) tline=fgetl(fid); data=str2num(tline); line=line+1;数据说明部分,与 作图无关此方向表示f随着 φ1从0,5,10,15, 20 …到90的变化而 变化 此方向表示f随着φ 从0,5,10,15, 20 … 到90的变化而变化 表示以下数据为φ2=0的数据,即f(φ1,φ,0)

Matlab语言程序设计

MATLAB 语言程序设计 1、应用题(20 分) 某工厂生产A和B两种产品,它们需要经过三种设备的加工,工时如表1所列。设备一、二、三每天可使用的时间分别不超过12、10和8小时。产品A和B的利润随市场的需求有所波动,如果预测未来某个时期内A和B的利润分别为4000元/吨和3000元/吨,问每天应安排产品A、B各多少吨,才能使工厂获利最大? 表 1 生产产品工时表 产品设备一设备二设备三 A/(小时/吨) 3 3 4 B/(小时/吨) 4 3 2 设备每天最多可工作时数/小时12 10 8 请写出具体解决方案,并编写该解决方案的具体MATLAB程序代码。 假设每天应安排生产产品A和B分别为和吨,依题意可建数学模型如下: max z=4000x 1+ 3000x2 3x1+ 4x2≤12 3x1+ 3x2≤10 4x1+ 2x2≤8 x1≥0, x2≥0 首先将目标函数转换为标准形式:min z=-4000-3000 M文件如下: f = [-4000;-3000]; A = [3 4;3 3;4 2]; b = [12;10;8]; lb = zeros(2,1); [x,fval] = linprog(f,A,b,[],[],lb) 结果如下图1所示: 图1

2、结合MATLAB 图像的读写知识,请你写出具体MATLAB 图像读写方法,结合实例,给出图像读写步骤。(20分) 读写方法: imfinfo(FileNAme) %从FileNAme中获取或显示图像文件的特征数据 [X,cmap]=imread(FileNAme) %读取变址图像的数据矩阵与伴随色图,并分别送给X 和cmap X=imread(FileNAme) %从FileNAme中读取强度图像或真彩图像的数据矩阵并送给X imwrite(X,cmap,FileName,Parameter,Value) %将变址图像写入文件 imwrite(X ,FileName,Parameter,Value)%将强度图像或真彩图像写入文件 [例2-1] M文件如下: I=imread('m2.png'); imwrite(I,'m2.tif'); [X,cmap]=imread('m2.tif'); image(X); colormap(cmap); axis image off; 结果如下图2所示: 图2 3、结合课本第四章所提供的18种绘图方法,请实现其中8种绘图,提供程序代码及所绘制的图形。(30分)

VB程序设计教程(第3版)课后实验答案最新版2

1、完成实验A(P.259)中的第1、 2、 3、5题。 2、参照第2章例2.6,建立一个类似记事本的应用程序,提供:(1) 剪切、复制和粘贴的编辑操作;(2) 字体大小的格式设置;此外,再对记事本的应用程序的功能进行一点扩允。 1.完成在实验B 顺序结构程序。(P.262)中的第1、2 、4 、5.、6题 2.完成实验C 选择结构(P.266)中的第1、2、4、5题 3.用上面实验B的第二题和实验C的第二题完成下面的实验报告。 1、完成实验D循环结构(P.268)中的第1、3、4、6题,其中第1题利用单循环结构显示如图D.1(P.268)所示的界面,而后将图形改为倒三角形。 2、选做实验E数组(P.271)中的第1、2、3题中的任意二题 3、以实验D中的第4题和实验E中的做完的某一题完成下面的实验报告。 A.1 Private Sub Command1_Click() Label3 = Text1 End Sub A.2 Private Sub Form_Load() Timer1.Interval = 0 End Sub Private Sub Command1_Click() '自动 Timer1.Interval = 200 End Sub Private Sub Command2_Click() '手动 Timer1.Interval = 0 Call MyMove End Sub Private Sub Timer1_Timer() Call MyMove End Sub Sub MyMove() Label1.Move Label1.Left - 50 If Label1.Left < 0 Then Label1.Left = Form1.Width End Sub A.3 Private Sub Form_Click() Text1 = Val(Text1) + 1 End Sub Private Sub Form_Load() Text1 = 0 End Sub A.5

《面向过程程序设计实践》课题资料.doc

任务 18 课题名称 某航空公司飞机购票模拟系统(服务器端) 课题内容 文件信息: 航线信息:航线编码、起点、终点、公里数、飞行时间。 航班信息:航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)。 售票信息:航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s 以顺序存储结构设计程序能实现以下航空公司服务器端功能: (1)航线的维护(创建、修改、删除(不能删除已出票、售完航班)(2)航班的维护(创建、修改、删除(不能删除已出票、售完航班))。 ))。 (3)显示航班列表。 (4)显示指定航班的售票情况(明细和统计值)。 (5)显示各航班的销售情况。 int hbId; int userId; char userName[NUMBER]; char buytime[NUMBER]; 任务 19 课题名称 某航空公司飞机购票模拟系统(客户端) 课题内容 航班文件信息: 航线信息:航线编码、起点、终点、公里数、飞行时间。 航班信息:航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)。 售票信息:航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s )。 以链式存储结构设计程序能实现以下顾客端功能: (1)搜索指定航线、指定时间段的航班 (2)购票 (3)退票 (4)输入顾客 ID ,显示顾客的购票信息

主菜单 /****************************************/ /* 模块名称: Menu.c 功能描述:实现菜单功能*/ #include "stdio.h"/* 输入输出函数的头文件 */ #include "shoupiao.c" #include "hangban.c" #include "hangxian.c" void menu(); /* 菜单 */ // 航班 void init_hb(hbnum *hb);// 初始化列表 void create_hb(hbnum *hb);// 从文件中加载数据 void append_hb(hbnum *hb, hbinfo x);/* 添加数据 */ void display_hb(hbnum hb);/* 输出航班信息表 */ void display_xs(hbnum hb);/* 输出航班销售信息表 */ hbinfo search_hb(hbnum hb, int id);// 根据 id 查找航班的售票情况hbnum update_hb(hbnum hb,hbinfo x);// 根据 id 修改航班信息 void dele_hb(hbnum *hb, int id);// 删除航班信息 void InsertSort_hb(hbnum *r);// 排序 void save_hb(hbnum *hb);// 将数据保存到文件中 // 航线 void init_hx(hxnum *hx);// 初始化列表 void create_hx(hxnum *hx);// 从文件中加载数据 void append_hx(hxnum *hx, hxinfo x);/* 添加数据 */ void display_hx(hxnum hx);/* 输出航班信息表 */ hxinfo search_hx(hxnum hx, int id);// 根据 id 查找航班的售票情况hxnum update_hx(hxnum hb,hxinfo x);// 根据 id 修改航线信息 void dele_hx(hxnum *hx, int id);// 删除航班信息 void InsertSort_hx(hxnum *r);// 排序 void save_hx(hxnum *hx);// 将数据保存到文件中 // 售票 void init_sp(spnum *sp);// 初始化列表 void create_sp(spnum *sp);// 从文件中加载数据 void append_sp(spnum *sp, spinfo x);/* 添加数据 */ void display_sp(spnum sp);/* 输出航班信息表 */ spinfo search_sp(spnum sp, int id);// 根据 id 查找航班的售票情况void search_mx(spnum sp, int id); int search_tj(spnum sp, int id); void dele_sp(spnum *sp, int id);// 删除航班信息 void InsertSort_sp(spnum *r);// 排序 void save_sp(spnum *sp);// 将数据保存到文件中 /* 主函数 */ main(){ hbnum hb;

实验二--MATLAB程序的设计(含实验报告)

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1

MATLAB程序设计教程课后答案

实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; a=n(1);

for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[]; for n=1:40

1实验一 Matlab程序设计与M文件(1)

实验一 Matlab 程序设计与M 文件 一、实验目的 1. 掌握Matlab 程序设计常用命令,如,循环、选择、暂停、显示输出、输入变量值等。 2. 掌握Matlab 的M 文件的创建于使用,包括脚本文件和函数文件。 3. 掌握常用的编程技巧。 二、实验内容 1. 输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。其中90分~100分为A ,80分~89分为B ,79分~79分为C ,60分~69分为D ,60分以下为E 。 要求: (1) 分别用if 语句和switch 语句实现。 (2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 2. 硅谷公司员工的工资计算方法如下: (1) 工作时数超过120小时者,超过部分加发15%。 (2) 工作时数低于60小时者,扣发700元。 (3) 其余按每小时84元计发。 试编程按输入的工号和该号员工的工时数,计算应发工资。 3. 根据2 222211116123n π=++++,求π的近似值。当n 分别取100、1000、10000时,结果是多少? 要求:分别用循环结构和向量运算(使用sum 函数)来实现。 4. 考虑以下迭代公式: 1n n a x b x +=+ 其中a 、b 为正的学数。 (1) 编写程序求迭代的结果,迭代的终止条件为|x n+1-x n |≤10-5,迭代初值x 0=1.0,迭代次数不超过500次。 (2) 如果迭代过程收敛于r ,那么r 的准确值是,当(a,b)的值 取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较。

5. 已知 12312311021 323 n n n n f n f n f n f f f f n ---==??==??==??=-+>? 求f 1~f 100中: (1) 最大值、最小值、各数之和。 (2) 正数、零、负数的个数。 6. 若两个连续自然数的乘积减1是素数,则称这两个边疆自然数是亲密数对,该素数是亲密素数。例如,2×3-1=5,由于5是素数,所以2和3是亲密数,5是亲密素数。求[2,50]区间内: (1) 亲密数对的对数。 (2) 与上述亲密数对对应的所有亲密素数之和。 7. 设2411()(2)0.1(3)0.01 f x x x =+-+-+,编写一个MATLAB 函数文件fx.m ,使得调用f(x)时,x 可用矩阵代入,得出的f(x)为同阶矩阵。 8. 一物理系统可用下列方程组来表示: 111211 12 220cos sin 0sin 0cos 000sin 000cos 1a m m a m g m N m N m g θθθθθθ--??????????????????=??????-??????-?????? 从键盘输入m 1、m 2和θ的值,求a 1、a 2、N 1和N 2的值。其中g 取9.8,输入θ时以角度为单位。 要求:定义一个求解线性方程组AX=B 的函数文件,然后在命令文件中调用该函数文件。

05级通信工程、电子信息工程《MATLAB语言程序设计》考试卷

安徽农业大学2006―2007学年第二学期 《MATLAB 语言程序设计》试卷(A 卷) 考试形式: 闭卷笔试,2小时 适用专业: 05级通信工程、电子信息工程 一、填空题(本题满分30分,每空3分) 1. 设有程序 A=[1,2,3,4;4,3,2,1;1, -2 ,1, -2];B=[3,1,-1;0,4,2];A1=A(:,[1 3]); M=size(A1)+ length(B(:,2)) 将下列命令的运行结果填在横线上 M= ;A1+B' = . 2. A=[1,2,3,4;2,3,4,5;3,4,5,6]; A1=sum(A<4,2);A([2,3],:)=[],A2=A A1= ; A2= ; 3.P=[1,2,3,4;3,0,1,2];max(P)= ;mean(P,2)= 院: 专业班级: 姓名: 学号: 装 订 线

二、(本题满分12分)试编写计算程序 V; 与特征向量 U 的特征值 B 2 A 求 (4). E; 5 B A 2B BX 解矩阵 . (3) ); A B) (B(A R R 的秩 A (2). |; B) 2 B)(A (A | D (1). , 6 2 1 5 7 2 , 2 1 5 1 2 3 3 2 1 1 1 + + = + = + - = ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? = - - T T T B A 方程 设

三、(本题满分8分) 的程序组写出求解超定线性方程?????? ?=++-=++=--=++1 21212:321 321321 321x x x x x x x x x x x x 四、(本题满分16分)运用符号运算功能写出下列各题Matlab 程序 解求方程03.12=-x e x Adx dx A d x wx x x xe A x ??? ????=-1 022,,cos )sin(sin .2并计算 生成符号矩阵

程序设计实践

程序设计实践-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

苏州科技学院 二○一四~二○一五学年第二学期电子与信息工程学院课程设计报告书 课程名称: 班级: 学号: 姓名: 指导教师: 二○一五年三月

1.题目 小型图书信息管理系统 2.功能 1、信息录入,包括记录的追加和插入; 2、信息删除; 3、信息修改; 4、信息排序和查询; 5、信息的保存和装载; 6、简单的帮助。 3.要求 (1)整个系统均用C语言实现; (2)利用指针、链表来实现图书馆的数据结构设计; (3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能; (4)系统的各个功能模块都用函数的形式来实现; (5)可以将图书信息保存在文件中。 (6)可以将图书信息从文件中读取出来。 4.设计内容 整个系统除了主函数外,另外还有6个函数,实现八大功能:输入功能,查找功能,插入功能,保存功能,删除功能,读取功能。各个函数的详细设计说明分别如下: 主函数 main() 利用无限次循环for(;;)实现各函数的调用,系统根据输入的数字选项来调用相应的函数。 初始化函数 book *create() 这是一个无参函数,它的作用是使链表初始化,使head的值为NULL。 输入函数 Insert(book *head) 这是一个无参函数,用来执行图书信息的输入。 算法:先声明一个首节点head,并将head->next设为NULL。每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。 N-S

修改函数 change(book *head) 用于修改图书信息。 算法:输入需修改图书的书名,判断是否有本书,若有,再进行修改。 N-S 显示记录函数 void Print(book *head) 这是一个不返回值的有参函数,将记录的输出。 算法:先将p结点的指针指向第一个结点,将p结点的数据输出,再将p结点的指针指向下一结点,将下一结点的数据输出。重复执行此步聚直到p指针指向NULL为止。 N-S 查找记录函数 void search(book *head) 这是一个不返回值的有参函数,形参为“链表头的指针”,实现按书名对某书进行查找,并显示所查找到的记录。 算法:采用线性查找法往下一个节点查找。输入所要查找的图书的名称,设一个指针变量p,先指向第一个结点,当strcmp(p->name,name1) && p != NULL 时,使p后移一个结点,如果p!=NULL,输出p所指的结点。 N-S

Matlab编程与应用习题和一些参考答案

Matlab 上机实验一、二 3.求下列联立方程的解???????=+-+-=-+=++-=--+4 1025695842475412743w z y x w z x w z y x w z y x >> a=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]; >> b=[4;4;9;4]; >> c=a\b 4.设???? ??????------=81272956313841A ,??????????-----=793183262345B ,求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆阵。 >> A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; >> B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; >> C1=A*B' >> C2=A'*B >> C3=A.*B >> inv(C1) >> inv(C2) >> inv(C3) 5.设 ?? ????++=)1(sin 35.0cos 2x x x y ,把x=0~2π间分为101点,画出以x 为横坐标,y 为纵坐标的曲线。 >> x=linspace(0,2*pi,101); >> y=cos(x)*(0.5+(1+x.^2)\3*sin(x)); >> plot(x,y,'r') 6.产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var ) a=randn(8,6) mean(a) var(a) k=mean(a) k1=mean(k) i=ones(8,6) i1=i*k1 i2=a-i1 i3=i2.*i2 g=mean(i3) g2=mean(g)

c语言程序设计实践教程答案完整版

4.2练习题 一、选择题 1.D 2.B 3.A 4.B和D 5.C 6.A 7.B 二、填空题 1.//或/* */ 2.主或main 3.函数首部和函数体4.编译和连接 5.分号 5.2练习题 一、选择题 1.A 2.D 3.B 4.B 5.C 6.C 7.D 8.A 9.B 10.B 11.D 12.B 13.A或B 14.C 15.B

17.D 18.D 19.C 20.D 21.B 22.A 23.D 24.C 25.C 26.B 27.C 28.D 29.A 30.B 二、填空题 1.102,10 2.#define 宏名字符串 3.1 4.n=1 5.-4 6.a=1,b= ,c=2 7.c=A 8.n1=%d\nn2=%d 9.a+b>c&&a+c>b&&b+c>a 10.ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’11.7 12.0 13.8,4 6.2练习题 一、选择题 1.A 2.C 3.D 4.C 5.A 6.B

8.D 9.B 10.C 11.A 12.A 13.C 14.B 15.正确答案为: 二、填空题 1.10 2.y=1 x%i==0 3.屏幕中间输出一个由星号组成的菱形4.1 5.13 6.(cx=getchar())!=-1 front=cx; 7.m%n 8.4 9.*p px=&x py=&y 三、读程序,写结果 1.-1 2.3,1,-1, 3.a=16,y=60 4.x=12,y=4 5.59 7.2练习题 一、选择题 1.B 2.C 3.C 4.A 5.D 6.C 7.D

相关文档
最新文档