matlab平时作业

matlab平时作业
matlab平时作业

《MATLAB程序设计基础》平时作业

说明:1-17题为必做题,须分别提交纸质文档及与纸质文档对应的电子文档.doc版。

1.对于每输入的一个百分制成绩,要求输出对应的成绩等级A、B、C、D、E。其中A的分

值在区间[90,100)内;B的分值在区间[80,90)内;C的分值在区间[70,80)内;D的分值在区间[60,70)内;E的分值在区间[0,60)内;要求:

1)要有对输入成绩是否合理的判断:

①输入成绩如果含有小数,只能是“x.5”的形式,其实x为合理的整数。

②成绩必须在百分制范围内。

③如果输入的成绩不合理,应向命令窗口输出报错信息“输入的成绩不合理”

2)用if语句实现题目要求

x=input('输入一个数值:'); %输入

if mod(x,0.5)==0&&x>=0&&x<100; %mod(x,0.5)表示x除以0.5的余数,用以判断

成绩含小数是否为x.5

if x<0&x>=100 %不合理成绩

disp('输入的成绩不合理')

elseif x<100&x>=90%成绩[90 100)

disp('成绩等级为:A')

elseif x<90&x>=80 %成绩[80 90)

disp('成绩等级为:B')

elseif x<80&x>=70%成绩[70 80)

disp('成绩等级为:C')

elseif x<70&x>=60%成绩[60 70)

disp('成绩等级为:D')

else

disp('成绩等级为:E')%成绩[0 60)

end

else

disp('输入的成绩不合理')

end

运行结果:

输入一个数值:57

成绩等级为:E

输入一个数值:93.3

输入的成绩不合理

3)用switch语句实现题目要求

x=input('请输入一个成绩:'); %输入

if mod(x,0.5)==0&&x>=0&&x<100 %mod(x,0.5)表示x除以0.5的余数,用以判断成绩含小数是否为x.5

switch floor(x/10) %x除以10向下取整

case 9

disp('成绩等级为:A');

case 8

disp('成绩等级为:B');

case 7

disp('成绩等级为:C');

case 6

disp('成绩等级为:D');

case {5,4,3,2,1,0}

disp('成绩等级为:E');

otherwise

disp('输入的成绩不合理');

end

else

disp('输入的成绩不合理');

end

运行结果:

请输入一个成绩:0

成绩等级为:E

请输入一个成绩:120

输入的成绩不合理

请输入一个成绩:95.5

成绩等级为:A

2. 设计程序,完成[10,99]之间两位整数的加、减、乘、除四则运算。要求:

1)随机产生区间[10,99]之内的两位随机整数

2)在产生符合要求的随机数后,输入一个运算符号,做相应的运算

3)运算结果显示在命令窗口,其显示类似于“a=x+y=68”的形式。

x=round((99-10)*rand(1)+10); %在区间[10 99]随机选一个数x

y=round((99-10)*rand(1)+10); %在区间[10 99]随机选一个数y

sym=input('请输入运算符号(+-*/):','s');

switch sym %switch语句

case{'+'}

a=x+y;

disp(['输入的两数之和b=',num2str(x),'+',num2str(y),'=',num2str(a)]);

%输出显示类似于“a=x+y=68”的形式

case{'-'}

a=x-y;

disp(['输入的两数之差c=',num2str(x),'-',num2str(y),'=',num2str(a)]);

case{'*'}

a=x*y;

disp(['输入的两数之积d=',num2str(x),'*',num2str(y),'=',num2str(a)]);

case{'/'}

a=x/y;

disp(['输入的两数之商e=',num2str(x),'/',num2str(y),'=',num2str(a)]);

otherwise disp('输入符号错误')

end

运行结果:

请输入运算符号(+-*/):+

输入的两数之和b=95+31=126 请输入运算符号(+-*/):-

输入的两数之差c=64-53=11 请输入运算符号(+-*/):*

输入的两数之积d=89*78=6942 请输入运算符号(+-*/):/

输入的两数之商e=51/12=4.25

3. 求下列分段函数的值并绘制函数曲线。

2226,056,1,?+-<≠?

=-+≤≠≠??--?

x x x x y x x x x x x x 且 -30<10,2且 3其他

要求:

1)x 的值以向量的形式从键盘输入。 2)用if 语句实现,分别输出x =﹣5.0,﹣3.0,1.0,2.0,2.5,3.0,5.0时的y 值。 x=input('please input x='); if x<0 & x~=3 y=x.^2+x-6;

elseif x>=0 & x<10 & x~=2 & x~=3 y=x.^2-5.*x+6; else

y=x.^2-x-1; end

disp(['y=',num2str(y)]) 运行结果:

please input x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0 ] y=14 11 -1 1 2.75 5 19

3)自行拟定自变量的取值,绘制该分段函数的二维曲线。 x=-10:1:15; %自拟自变量的取值 if x<0 & x~=3 y=x.^2+x+6;

elseif x>=0 & x<10 & x~=2 & x~=3 y=x.^2-5.*x+6; else

y=x.^2-x-1; end

plot(x,y,'r-') %绘制分段函数 title('分段函数') xlabel('x') ylabel('y') hold on

图3(3)分段函数的二维曲线

4. 分别使用for循环语句和while循环语句找出最小的n值,使得n!>10100,并求出n!。

for循环语句如下:

s=1; %对s赋初值

for n=1:100 %默认步长为1

s=s*n; %s=n!

if(s>10100)

break; %如果s>10100,结束运行

end

end

disp(['n=',num2str(n)]) %输出n

disp(['s=',num2str(s)]) %输出s

运行结果:

n=8

s=40320

while循环语句如下:

s=1; %对s赋初值

n=0; %循环次数赋初值

while(s<=10100)

n=n+1; %不能使用++

s=s*n;

end

disp(['n=',num2str(n)]);

disp(['s=',num2str(s)]); %组合字符串

运行结果:

n=8

s=40320

5. 已知

f1=1,n=1

f2=0,n=2

f3=1,n=3

f n=f n-1-2f n-2+f n-3,n>3

求f1 ~ f50中:

1)最大值和最小值及它们的位置、各数之和

(最大值给变量MAX,其位置给变量x,

最小值给变量MIN,其位置给变量y,各数之和给变量SUM)。

2)正数、零、负数的个数

(依次赋值给变量N_positive,N_zero,N_negative)。

f(1)=1;

f(2)=0;

f(3)=1; %输入

n=3; %赋值

while (n<50)

n=n+1;

f(n)=f(n-1)-2*f(n-2)+f(n-3);

end

[MAX,x]=max(f) %MAX为向量f中最大值元素,x为最大值元素的索引号

[MIN,y]=min(f) %MAX为向量f中最小值元素,y为最小值元素的索引号

SUM=sum(f)

N_positive=numel(find(f>0)) %numel表示返还数组中的元素个数,

N_zero=numel(find(f==0)) %返还f中等于0的位置

N_negative=numel(find(f<0))

运行结果:

MAX =406631

x = 49

MIN =-403795

y =50

SUM =76861

N_positive =25

N_zero =2

N_negative =23

6. Fibonacci数组的元素满足Fibonacci规则:

a k+2=a k+a k+1,(k=1,2,3,…);且a1= a2=1。

请设计一段程序,求出该数组中第一个大于10000的元素对应的k值以及该元素值。

a(1)=1;

a(2)=1;

k=1;

while a(k)<=10000

a(k+2)=a(k)+a(k+1);

k=k+1;

end

disp(['k=',num2str(k)])

disp(['a(k)=',num2str(a(k))])

运行结果:

k=21

a(k)=10946

7. 定义自变量x的取值区间为[﹣5,5],编写一个函数文件,实现绘制函数y=ax3+bx2+cx+d

的曲线,其中给定各系数值分别为

①a=﹣1,b=2, c=﹣5,d=3;

②a=3, b=﹣7,c=1, d=4;

③a=0, b=4, c=0, d=﹣5

要另外编写调用该函数文件的m文件,实现调用。

function my1(a,b,c,d) %定义主函数,函数文件名为my1.m

x=-5:1:5; %输入x

y=a*x.^3+b*x.^2+c*x+d;

plot(x,y); %绘制曲线

xlabel('x轴'); %标志x轴

ylabel('y轴'); %标志y轴

title('函数图像'); %设置图名称

a=input('please input a='); %子函数

b=input('please input b=');

c=input('please input c=');

d=input('please input d='); %利用输出参数a,b,c,d向my1传递数据

my1(a,b,c,d); %调用的是啊,a,b,c,d四个参数

图7(1)图7(2)

图7(3)

8. 设计程序,在一个图形窗体中画出函数y=e x和y=logx的特性曲线。其中y=e x中x取值

区间为(﹣2,2),y=logx中x取值区间为(0.1,5)。

要求:

1)要有图例、标题('二维图')、坐标轴标签('x轴数据'和'y轴数据');

2)每条曲线的属性自己设置,但不能全用默认值。

x1=-2:0.1:2;

y1=exp(x1);

x2=0.1:0.1:5;

y2=log(x2);

plot(x1,y1,'r*--',x2,y2,'ko-')

legend('函数y=exp(x)的特性曲线','函数y=logx的特性曲线')

title('二维图')

xlabel('x轴数据')

ylabel('y轴数据')

图8

9. 采用2行2列子图的方式进行二维图形绘制,要求:

1)自变量x的取值区间为[0,2π]

2)三个函数分别为:y1=sin(x),y2=cos(x),y3=sin(x)+cos(x)

3)在第1幅子图绘制y1的曲线;在第2幅子图绘制y2的曲线;在第3幅子图绘制y3的曲线;在第4幅子图中绘制所有3条曲线

4)对每一幅子图,都要有图例、坐标轴标签;曲线的属性自己设置,不能全用默认值。

x=0:0.1:2*pi;

y1=sin(x);

y2=cos(x);

y3=sin(x)+cos(x);

subplot(2,2,1);

plot(x,y1,'ro-');

legend('sin曲线');

title('y=sin(x)');

xlabel('横坐标1');

ylabel('纵坐标1');

subplot(222);

plot(x,y2,'g*-'); legend('cos 曲线'); title('y=cos(x)'); xlabel('横坐标2'); ylabel('纵坐标2'); subplot(223); plot(x,y3,'b-p');

legend('sin(x)+cos(x)曲线'); title('y=sin(x)+cos(x)'); xlabel('横坐标3'); ylabel('纵坐标3'); subplot(224);

plot(x,y1,'ro-',x,y2,'g*-',x,y3,'b-p'); %同时绘制三个函数的图像 legend('sin 曲线','cos 曲线','sin(x)+cos(x)曲线'); title('三个函数的曲线'); xlabel('横坐标'); ylabel('纵坐标');

图(9)

10. 采用1行2列子图的方式进行二维图形绘制,要求:

1)在第1幅子图绘制三维曲线: x ∈[0,20] y=sin(x) z=cos(x)

2)在第2幅子图绘制三维曲面: x ∈[﹣20,20] y ∈[﹣10,10]

4

y 9x z 22-=

3) 对每一幅子图,都要有标题、坐标轴标签;曲线的属性自己设置,不能全用默认值。 subplot(121); %在第一个子图中绘图

x1=0:0.1:20; y1=sin(x1); z1=cos(x1);

plot(x1,y1,'ro-',x1,z1,'b*-');

legend('sin 曲线','cos 曲线'); %设置图例 title('图1'); xlabel('x1'); ylabel('y1');

subplot(122); %在第二个子图中绘图 x2=-20:1:20; y2=0.5*x2;

[X,Y]=meshgrid(x2,y2); %生成X 和Y 网络坐标矩阵 z=(X.^2)/9-(Y .^2)/4; %网格化后直接输入z mesh(X,Y,z); %曲面绘图 legend('双曲面'); title('图2'); xlabel('x2'); ylabel('y2'); zlabel('z') grid on;

图(10)

11. 已知函数0y x )1y (x 32322=--+,其中x 的取值区间为[﹣2,2],试编程绘制该二维曲线,要求:要有标题、坐标轴标签,曲线颜色用红色。

p=ezplot('(x.^2+y.^2-1).^3-x.^2.*y.^3',[-2 2]); %在区间[-2 2]绘制(x2+y2-1)^3-x2y2=0

的图像

set(p,'color','r'); %指定曲线颜色为红色 title('曲线图'); xlabel('x 轴'); ylabel('y 轴');

图(11)

12. 已知原始数据pi *4:1:0x =,)5/x exp(*).x sin(y -=,插值点为pi *4:3.0:0xi =,试

用4种不同的插值方法进行插值,并在一幅图的4个子图中分别绘出4种插值曲线,并各自注明所使用的插值方法。 x=0:1:4*pi;

y=sin(x).*exp(-x/5);

xi=0:0.3:4*pi; %设置新的插点 subplot(221)

yi=interp1(x,y,xi,'nearset'); %使用最近点插值 plot(xi,yi)

title('最近点插值') subplot(222)

yi=interp1(x,y,xi); %默认为线性插值 plot(xi,yi)

title('线性插值') subplot(223)

yi=interp1(x,y,xi,'cubic'); %使用三次立方插值 plot(xi,yi)

title('三次立方插值') subplot(224)

yi=interp1(x,y,xi,'spline'); %使用三次样条插值 plot(xi,yi)

title('三次样条插值')

图(12)

13.考虑表1中的数据:

完成以下功能:

1)将一周的气温温度数据,使用一个矩阵A 进行保存。

2)取出周二中午、周四上午、周日中午和夜晚的温度值,组成新的温度值向量。 3)取出矩阵A 中的前六个数值,组成新的温度值向量。

4)取出周二、周三、周四及周六的数据,组成新的温度值矩阵。 5)求每天温度的平均值

6)求一周的早晨、中午和夜晚温度的平均值 7)求一周的温度平均值及最高温度及最低温度

A=[15 15 18 13 13 15 16;20 21 25 19 20 22 25;16 17 12 14 16 18 19] %将一周的气温温度数据使用A 矩阵保存

B=A([5 10 20 21]) %取出周二中午周四上午周日中午和夜晚的温度组成新矩阵 C=A(1:1:6) %取出A 中的前六个组成新的矩阵

D=A(:,[2 3 4 6]) %取出周二周三周四和周六的数据组成新的矩阵 everyday=mean(A) %表示每一列的平均值,即每天气温的平均值 mae=mean(A') %一周早上,中午,晚上的平均值 all=mean(A(:))

%一周的温度平均值 MAX=max(A(:)) %一周的最高温度 MIN=min(A(:)) %一周的最低温度 14.考虑表2中的数据,这是一位举重教练收集的不同性别的举重动员每个年龄的最大举重

磅数,据信这三者之间存在着某种函数关系,请估算当前队伍中队员(要求13~20岁每一岁都有)的最大举重磅数。

y=[270 290 330 350 380;250 270 310 330 360]'; X=[ones(size(t)) t t.^2];%ones (size (t ))以t 的长度为矩阵的大小设置全1矩阵 Z=X\y; %得到系数 T=(13:20)';

Y=[ones(size(T)) T T.^2]*Z; MAXT=max(Y) 运行结果:

MAXT =[14305/38 13545/38]

15.某乡镇企业2009-2015年的生产利润如表3所示。

表3 过去7年生产利润

要求用多项式拟合法预测出该企业2016年和2017年的利润,并绘出拟合图。 x=2009:2015; %x 在[2009 2015]取值,间隔为1 y=[70 122 144 152 174 196 202]; %得到数据(x,y)

p=polyfit(x,y,1);

%对(x,y)数据进行1阶多项式拟合,得到多项式系数p x1=2009:2018;

y1=polyval(p,x1); %根据得到的多项式,计算x 处的函数值y

plot(x,y,'-ro',x1,y1,'-b*'); %样本点用红色线和o 表示,拟合曲线用蓝色线和*表示 title('某乡镇企业2009-2018年的生产利润') %设置图的标题

legend('09-15年的利润','09-18年的利润趋势线') %legend 表示为图例做标注 xlabel('年份') %x 轴表示年份 ylabel('利润') %y 轴表示利润

text(2016,polyval(p,2016),'<---2016年的利润') %在指定2016位置显示字符串 text(2017,polyval(p,2017),'<---2017年的利润') grid on

图(15)

16. 求下列方程组的解。

1)???

?

?=+-=-=+-9

4653532321

31321x x x x x x x x A=[2 -1 3;3 0 -5;4 -1 1];

b=[5;6;9]; B=[A b]; ra=rank(A)

rb=rank(B) %ra=rb=3,方程组有唯一解 x=inv(A)*b %AX=b,X=A-1b 运行结果: ra =3 rb =3

x = [2;-1;0]

2)???

??=--+=+--=+-0

895443353644321

4321431x x x x x x x x x x x

A=[4 0 -6 3;3 -1 -3 4;1 5 -9 -8];

b=[5;4;0]; B=[A b]; ra=rank(A)

rb=rank(B) %ra=rb=2<4,所以方程有无穷解

format rat %用有理数的形式显示数据(分数表示) R=rref(B) %计算B 的最简行矩阵 ra =2 rb =2

R =1 0 -3/2 3/4 5/4 0 1 -3/2 -7/4 -1/4 0 0 0 0 0 17.已知用来描述系统的微分方程为

)()(5)(t u t x t x

+-= 其中,)(t u 是幅值为1、频率为1rad/s 的方波信号,试建立该系统的SIMULINK 模型(如图1所示,须理解为什么是这样的模型)并进行仿真,给出仿真结果。

1

图(17)scope 仿真结果

说明:18-19题为选作题,如果完成(须提交设计的所有原始文件电子稿)可提高平时成绩。

18.利用GUI编程设计一个能够实现两个实数加减乘除四则运算的计算器。

19.利用GUI编程设计一个能够实现两个复数加减乘除四则运算的计算器。

MATLAB简介

MATLAB简介 MATLAB的名称源自Matrix Laboratory,它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力。 目前MATLAB产品族可以用来进行: ?数值分析 ?数值和符号计算 ?工程与科学绘图 ?控制系统的设计与仿真 ?数字图像处理 ?数字信号处理 ?通讯系统设计与仿真 ?财务与金融工程 MATLAB产品家族的构成见上图,下面对各个组成部分进行介绍: MATLAB是MATLAB产品家族的基础,它提供了基本的数学算法,例如矩阵运算、数值分析算法,MATLAB集成了2D和3D图形功能,以完成相应数值可视化的工作,并且提供了一种交互式的高级编程语言——M语言,利用M语言可以通过编写脚本或者函数文件实现用户自己的算法。

MATLAB Compiler是一种编译工具,它能够将那些利用MATLAB提供的编程语言——M语言编写的函数文件编译生成为函数库、可执行文件、COM 组件等等,这样就可以扩展MATLAB功能,使MATLAB能够同其他高级编程语言例如C/C++语言进行混合应用,取长补短,以提高程序的运行效率,丰富程序开发的手段。 利用M语言还开发了相应的MATLAB专业工具箱函数供用户直接使用。这些工具箱应用的算法是开放的可扩展的,用户不仅可以查看其中的算法,还可以针对一些算法进行修改,甚至允许开发自己的算法扩充工具箱的功能。目前MATLAB产品的工具箱有四十多个,分别涵盖了数据采集、科学计算、控制系统设计与分析、数字信号处理、数字图像处理、金融财务分析以及生物遗传工程等专业领域。 Simulink是基于MATLAB的框图设计环境,可以用来对各种动态系统进行建模、分析和仿真,它的建模围广泛,可以针对任何能够用数学来描述的系统进行建模,例如航空航天动力学系统、卫星控制制导系统、通讯系统、船舶及汽车动力学系统等等,其中包括连续、离散,条件执行,事件驱动,单速率、多速率和混杂系统等等。Simulink提供了利用鼠标拖放的方法建立系统框图模型的图形界面,而且Simulink还提供了丰富的功能块以及不同的专业模块集合,利用Simulink几乎可以做到不书写一行代码完成整个动态系统的建模工作。 Stateflow是一个交互式的设计工具,它基于有限状态机的理论,可以用来对复杂的事件驱动系统进行建模和仿真。Stateflow与Simulink和MATL AB紧密集成,可以将Stateflow创建的复杂控制逻辑有效地结合到Simulink的模型中。 在MATLAB产品族中,自动化的代码生成工具主要有Real-Time Wor kshop(RTW)和Stateflow Coder,这两种代码生成工具可以直接将Simulink 的模型框图和Stateflow的状态图转换成高效优化的程序代码。利用RTW生成的

matlab通信系统仿真

通信系统基于(15,11)汉明编码的matlab仿真 clear m=4; n=2^m-1; k=11; msg1=randint(1,6000*k,[0,1])%产生信息序列 code0=vec2mat(msg1,k); code1=encode(msg1,n,k,'hamming/binary');%进行汉明纠错编码 code2=reshape(code1,90,1000)'; code3=zeros(1000,90);%设置零矩阵,以便储存交织后的序列 for i=1:1000 temp=code2(i,:); temp1=reshape(temp,15,6);%按15*6交织 code3(i,:)=reshape(temp1',1,90); end [row,cloums]=size(code3); code4=code3'; [row1,cloums1]=size(code4); code5=reshape(code4,6,15000)'; %将交织后的序列转换为6行,15000列矩阵msg2=zeros(15000,6); for j=2:6, msg2(:,j)=xor(code5(:,j),code5(:,(j-1))); end msg2(:,1)=code5(:,1);%此时得到的msg2为gray映射后的信号序列 code8=msg2';%转置,便于比特符号转换 A=[32,16,8,4,2,1]; %为比特符合转换所设的序列 msg3=A*code8;%生成符号序列 msg4=qammod(msg3,64);%将符号序列进行64QAM调制 [row2,cloums2]=size(msg4); dB=0:1:20; for k=1:length(dB), snr=10.^(dB(k)./10); %信噪比 sgma=sqrt(63./(6*snr));%标准差 b1=real(msg4)+sgma*randn(row2,cloums2);%分路叠加噪声 b2=imag(msg4)+sgma*randn(row2,cloums2);%分路叠加噪声 rx=complex(b1,b2); %————————量化判决——————————% for m=1:row2, for n=1:cloums2, if ((b1(m,n)<-6)) b11(m,n)=-7;

MATLAB中如何直接曲线拟合

MATLAB中如何直接曲线拟合,而不使用cftool的GUI 界面 我们知道在MATLAB中有个很方便的曲线拟合工具:cftool 最基本的使用方法如下,假设我们需要拟合的点集存放在两个向量X和Y中,分别储存着各离散点的横坐标和纵坐标,则在MATLAB中直接键入命令 cftool(X,Y) 就会弹出Curve Fitting Tool的GUI界面,点击界面上的fitting即可开始曲线拟合。 MATLAB提供了各种曲线拟合方法,例如:Exponential, Fourier, Gaussing, Interpolant, Polynomial, Power, Rational, Smoothing Spline, Sum of Functions, Weibull等,当然,也可以使用 Custom Equations. cftool不仅可以绘制拟合后的曲线、给出拟合参数,还能给出拟合好坏的评价 参数(Goodness of fit)如SSE, R-square, RMSE等数据,非常好用。但是如果我们已经确定了拟合的方法,只需要对数据进行计算,那么这种GUI的操作方式就不太适合了,比如在m文件中就不方便直接调用cftool。 MATLAB已经给出了解决办法,可以在cftool中根据情况生成特定的m文件,让我们直接进行特定的曲线拟合并给出参数。具体方法在帮助文件的如下文档中" \ Curve Fitting Toolbox \ Generating M-files From Curve Fitting Tool " ,以下简单举例说明: 以双色球从第125期到第145期蓝球为Y值: Y=[12 15 4 1 7 11 5 7 1 6 16 1 1 14 2 12 9 13 10 12 11]; X=1:1:21; cftool(X,Y); 点击Fitting选择最常用的多项式拟合(Polynomial),选择3次多项式拟合(cubic),然后就会出现如下拟合图形: 然后在Curve Fitting Tool窗口中点击 " \ File \ Generate M-file " 即可生成能直接曲线拟合的m函数文件,其中使用的拟合方法就是刚才使用的三次多项式拟合,文件中这条语句证明了这一点: ft_ = fittype('poly3'); 保存该m文件(默认叫做createFit.m),调用方法和通常的m文件一样,使用不同的X和Y值就能拟合出不同的曲线。但是,这种调用方法只能看到一个拟合出的图形窗口,拟合参数以及Goodness of fit参数都看不到了,因此需要在刚才的m文件中稍作修改。 找到这句话: cf_ = fit(X(ok_),Y(ok_),ft_); 修改为: [cf_,gof] = fit(X(ok_),Y(ok_),ft_); 然后将函数声明 function createFit(X,Y) 修改为 function [cf_,gof] = createFit(X,Y) ,这样我们再调用试试看: Y=[12 15 4 1 7 11 5 7 1 6 16 1 1 14 2 12 9 13 10 12 11]; X=1:1:21;

基于matlab的GUI设计——机械原理教学演示系统

机械原理教学演示系统——基于matlab的GUI设计 xxx 指导老师: 20年月日

目录 一、功能简介 (3) 二、总界面 (3) 三、凸轮模块 (4) 四、齿轮模块 (6) 五.参考书目 (6) 六.附录(部分程序源代码) (7)

一、功能简介 本系统能实现机械原理教学过程中凸轮模块与齿轮模块的设计与运动仿真,加深对机械原理课程学习的理解。 二、总界面 总界面标题设置:set(gcf,'name','机械原理教学演示系统 made by 翟鲁鑫'); 背景图片设置:ximg=imread('机械原理课本.jpg'); imshow(ximg); 背景声音播放:Fs=44100; [ywav,Fs]=wavread('夜的钢琴曲 - 六3.wav'); sound(ywav,Fs); 到各个模块:到凸轮模块 clc close(gcf); clear all

GUItulun 到齿轮模块 clc close(gcf); clear all GUIchilun 关闭系统:clc question='真的要退出吗?'; title='确认退出?'; button=questdlg(question,title,'是','否','是'); switch button case'是' clear all close case'否' return end 三、凸轮模块 设计要点: 1.背景声音设置方法同主界面

2.推程角、远休角、回程角之和不能大于360度的判别条件;基圆半径、滚子半径、行程不能为0的判别条件 sr0=get(handles.edit2,'string'); r0=str2num(sr0); if isequal(r0,0) errordlg('基圆半径不能为0,请重新输入','出错'); return end srr=get(handles.edit3,'string'); rr=str2num(srr); if isequal(rr,0) errordlg('滚子半径不能为0,请重新输入','出错'); return end sh=get(handles.edit4,'string'); h=str2num(sh); if isequal(h,0) errordlg('行程不能为0,请重新输入','出错'); return end n3=phi01+phi02+phi03; %推程角、远休止角与回程角的总和 if n3>360 errordlg('角度之和大于360,请重新输入','出错'); end 3.仿真程序。采用for 循环以及m(j)=getframe之前要先使用moviein函数Initialize movie frame memory,否则要提示错误 4.仿真之前要先清除绘图时留下的图像,命令如下cla(handles.axes1); 5.回主界面之前要先clear all,关闭音乐、清空global定义的全局变量,以防全局变量影响下一程序 6.图像保存。绘制出的图像可以保存供以后查看。主要命令有uiputfile()、imwrite() [sfilename,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},... '保存图像文件','unititled.jpg'); if ~isequal([sfilename,sfilepath],[0,0]) sfilefullname=[sfilepath ,sfilename]; h_tulun = getframe(handles.axes1); imwrite(h_tulun.cdata,sfilefullname); else msgbox('您按了取消,保存失败','保存失败','error'); end

Matlab简介

MATLAB简介 MATLAB是一个集数值计算、符号分析、图象显示、文字处理于一体的大型集成化软件.它最初由美国的Cleve Moler博士所研制.其目的是为线性代数等课程中的矩阵运算提供一种方便可行的实验手段.经过十几年的市场竞争和发展,MATLAB已发展成为在自动控制、生物医学工程、信号分析处理、语言处理、图像信号处理、雷达工程、统计分析、计算机技术、金融界和数学界等各行各业中都有极其广泛应用的数学软件. 归纳起来,MATLAB具有以下几个特点:易学、适用范围广、功能强、开放性强、网络资源丰富. 由于MATLAB的强大功能,它能使使用者从繁重的计算工作中解脱出来,把精力集中于研究、设计以及基本理论的理解上,所以,MATLAB已成为在校大学生、硕士生、博士生所热衷的基本数学软件.在此,我们把MATLAB作为学习数学的工具介绍给读者,希望能有利于读者今后的学习. 一MATLAB的运行 启动MATLAB点击MATLAB图标,进入到MATLAB命令窗(MATLAB Command Window).在命令窗内,可以输入命令、编程、进行计算. 学会使用help命令在命令窗内输入help命令,再敲回车键.在屏幕上出现了在线帮助总览.(注意:MATLAB命令被输入后,必需敲回车键才能执行.为行文方便,以后不再每次

提醒“敲回车键”.)学会使用help命令,是学习MATLAB的有效方法.例如:要想知道MATLAB中的基本数学函数有哪些,可以在总览的第五行查到:MATLAB中的“基本数学函数”用elfun表示,于是,可进一步键入:“help elfun”,屏幕上将出现“基本数学函数”表.(注意:help elfun之间有空格,以后不再每次提醒.)如果想了解sin函数怎样使用,可进一步键入help sin.在工具栏中点击help按扭,或点击?号按扭,与上面获取帮助信息的方法是等效的. 学会使用demo命令在命令窗内输入demo命令,再敲回车,键屏幕上将出现演示窗口.(MATLAB Demo Window)一共有三个窗口,左边的窗口显示欲演示内容的大标题,选定其中一项,右下方的小窗口显示欲演示的具体内容,选中其中一栏,再点击run按扭,屏幕上将演示选定的演示程序.右上方的窗口显示关于大标题的一些说明.在命令窗内输入type (文件名),将显示演示程序的M文件,仔细研究演示程序的M文件,是学习MATLAB的又一有效方法. 进入演示窗还有另一方法:在工具栏中点击Help栏,下拉式菜单中点击examples and demos项,即可进入演示窗口. 退出在工具栏中点击File按钮,在下拉式菜单中单击Exit MATLAB项即可. 二变量、语句、矩阵与函数 1.变量

机械原理大作业

Harbin Institute of Technology 机械原理大作业(一) 课程名称:机械原理 设计题目:连杆机构运动分析 院系:机电工程学院 班级: 设计者: 学号: 指导教师:

一、题目(13) 如图所示机构,已知各构件尺寸:Lab=150mm;Lbc=220mm;Lcd=250mm;Lad=300mm;Lef=60mm;Lbe=110mm;EF⊥BC。试研究各杆件长度变化对F点轨迹的影响。 二、机构运动分析数学模型 1.杆组拆分与坐标系选取 本机构通过杆组法拆分为: I级机构、II级杆组RRR两部分如下:

2.平面构件运动分析的数学模型 图3 平面运动构件(单杆)的运动分析 2.1数学模型 已知构件K 上的1N 点的位置1x P ,1y P ,速度为1x v ,1Y v ,加速度为1 x a ,1y a 及过点的1N 点的线段12N N 的位置角θ,构件的角速度ω,角加速度ε,求构件上点2N 和任意指定点3N (位置参数13N N =2R ,213N N N ∠=γ)的位置、 速度、加速度。 1N ,3N 点的位置为: 211cos x x P P R θ=+ 211sin y y P P R θ=+ 312cos()x x P P R θγ=++ 312sin()y y P P R θγ=++ 1N ,3N 点的速度,加速度为: 211211sin ()x x x y y v v R v P P ωθω=-=-- 211121sin (-) y y y x x v v R v P P ωθω=-=- 312131sin() () x x x y y v v R v P P ωθγω=-+=--312131cos()() y y y x x v v R v P P ωθγω=-+=-- 2 212121()()x x y y x x a a P P P P εω=---- 2 212121()() y y x x y y a a P P P P εω=+--- 2313131()()x x y y x x a a P P P P εω=---- 23133(1)(1) y y x x y y a a P P P P εω=+--- 2.2 运动分析子程序 根据上述表达式,编写用于计算构件上任意一点位置坐标、速度、加速度的子程序如下: 1>位置计算 function [s_Nx,s_Ny ] =s_crank(Ax,Ay,theta,phi,s) s_Nx=Ax+s*cos(theta+phi); s_Ny=Ay+s*sin(theta+phi); end 2>速度计算 function [ v_Nx,v_Ny ] =v_crank(s,v_Ax,v_Ay,omiga,theta,phi) v_Nx=v_Ax-s*omiga.*sin(theta+phi); v_Ny=v_Ay+s*omiga.*cos(theta+phi); end 3>加速度计算 function [ a_Nx,a_Ny ]=a_crank(s,a_Ax,a_Ay,alph,omiga,theta,phi) a_Nx=a_Ax-alph.*s.*sin(theta+phi)-omiga.^2.*s.*cos(theta+phi);

MATLAB实现通信系统仿真实例

补充内容:模拟调制系统的MATLAB 仿真 1.抽样定理 为了用实验的手段对连续信号分析,需要先对信号进行抽样(时间上的离散化),把连续数据转变为离散数据分析。抽样(时间离散化)是模拟信号数字化的第一步。 Nyquist 抽样定律:要无失真地恢复出抽样前的信号,要求抽样频率要大于等于两倍基带信号带宽。 抽样定理建立了模拟信号和离散信号之间的关系,在Matlab 中对模拟信号的实验仿真都是通过先抽样,转变成离散信号,然后用该离散信号近似替代原来的模拟信号进行分析的。 【例1】用图形表示DSB 调制波形)4cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%%一般选取的抽样频率要远大于基带信号频率,即抽样时间间隔要尽可能短。 ts=1/fs; %%根据抽样时间间隔进行抽样,并计算出信号和包络 t=(0:ts:pi/2)';%抽样时间间隔要足够小,要满足抽样定理。 envelop=cos(2*pi*t);%%DSB 信号包络 y=cos(2*pi*t).*cos(4*pi*t);%已调信号 %画出已调信号包络线 plot(t,envelop,'r:','LineWidth',3); hold on plot(t,-envelop,'r:','LineWidth',3); %画出已调信号波形 plot(t,y,'b','LineWidth',3); axis([0,pi/2,-1,1])% hold off% xlabel('t'); %写出图例 【例2】用图形表示DSB 调制波形)6cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%抽样时间间隔要足够小,要满足抽样定理。 ts=1/fs; %%根据抽样时间间隔进行抽样

机械原理大作业3 凸轮结构设计

机械原理大作业(二) 作业名称:机械原理 设计题目:凸轮机构设计 院系:机电工程学院 班级: 设计者: 学号: 指导教师:丁刚陈明 设计时间: 哈尔滨工业大学机械设计

1.设计题目 如图所示直动从动件盘形凸轮机构,根据其原始参数设计该凸轮。 表一:凸轮机构原始参数 序号升程 (mm) 升程运动 角(o) 升程运动 规律 升程许用 压力角 (o) 回程运动 角(o) 回程运动 规律 回程许用 压力角 (o) 远休止角 (o) 近休止角 (o) 12 80 150 正弦加速 度30 100 正弦加速 度 60 60 50 2.凸轮推杆运动规律 (1)推杆升程运动方程 S=h[φ/Φ0-sin(2πφ/Φ0)]

V=hω1/Φ0[1-cos(2πφ/Φ0)] a=2πhω12sin(2πφ/Φ0)/Φ02 式中: h=150,Φ0=5π/6,0<=φ<=Φ0,ω1=1(为方便计算) (2)推杆回程运动方程 S=h[1-T/Φ1+sin(2πT/Φ1)/2π] V= -hω1/Φ1[1-cos(2πT/Φ1)] a= -2πhω12sin(2πT/Φ1)/Φ12 式中: h=150,Φ1=5π/9,7π/6<=φ<=31π/18,T=φ-7π/6 3.运动线图及凸轮线图 运动线图: 用Matlab编程所得源程序如下: t=0:pi/500:2*pi; w1=1;h=150; leng=length(t); for m=1:leng; if t(m)<=5*pi/6 S(m) = h*(t(m)/(5*pi/6)-sin(2*pi*t(m)/(5*pi/6))/(2*pi)); v(m)=h*w1*(1-cos(2*pi*t(m)/(5*pi/6)))/(5*pi/6); a(m)=2*h*w1*w1*sin(2*pi*t(m)/(5*pi/6))/((5*pi/6)*(5*pi/6)); % 求退程位移,速度,加速度 elseif t(m)<=7*pi/6 S(m)=h; v(m)=0; a(m)=0; % 求远休止位移,速度,加速度 elseif t(m)<=31*pi/18 T(m)=t(m)-21*pi/18; S(m)=h*(1-T(m)/(5*pi/9)+sin(2*pi*T(m)/(5*pi/9))/(2*pi)); v(m)=-h/(5*pi/9)*(1-cos(2*pi*T(m)/(5*pi/9))); a(m)=-2*pi*h/(5*pi/9)^2*sin(2*pi*T(m)/(5*pi/9)); % 求回程位移,速度,加速度

matlab曲线拟合实例

曲线拟合 求二次拟合多项式 解:(一)最小二乘法MA TLAB编程: function p=least_squar(x,y,n,w) if nargin<4 w=1 end if nargin<3 n=1 end m=length(y); X=ones(1,m) if m<=n error end for i=1:n X=[(x.^i);X] end A=X*diag(w)*X';b=X*(w.*y)';p=(A\b)' 输入: x=[1 3 5 6 7 8 9 10]; y=[10 5 2 1 1 2 3 4] p=least_squar(x,y,2) 运行得: p = 0.2763 -3.6800 13.4320 故所求多项式为:s(x)=13.432-3.68x+0.27632x (二)正交多项式拟合MATLAB编程: function p=least_squar2(x,y,n,w) if nargin<4 w=1; end if nargin<3 n=1; end m=length(x); X=ones(1,m); if m<=n error end for i=1:n X=[x.^i;X]; end A=zeros(1,n+1);

A(1,n+1)=1; a=zeros(1,n+1); z=zeros(1,n+1); for i=1:n phi=A(i,:)*X;t=sum(w.*phi.*phi); b=-sum(w.*phi.*x.*phi)/t a(i)=sum(w.*y.*phi)/t; if i==1 c=0;else c=-t/t1; end t1=t for j=1:n z(j)=A(i,j+1); end z(n+1)=0 if i==1 z=z+b*A(i,:); else z=z+b*A(i,:)+c*A(i-1,:); end A=[A;z]; end phi=A(n+1,:)*X;t=sum(w.*phi.*phi); a(n+1)=sum(w.*y.*phi)/t; p=a*A; 输入: x=[1 3 5 6 7 8 9 10]; y=[10 5 2 1 1 2 3 4]; p=least_squar2(x,y,2) 运行得: b = -6.1250 t1 = 8 z = 0 1 0 b = -4.9328 t1 = 64.8750 z = 1.0000 -6.1250 0 p = 0.2763 -3.6800 13.4320 故所求多项式为:s(x)=13.432-3.68x+0.27632x

MATLAB模块介绍$

MATLAB 模块介绍 -------- 数学 & 金融 u Curve Fitting Toolbox Curve Fitting Toolbox 扩展MATLAB 环境,集成数据管理,拟合,显示,检验和输入分析过程等功能。所有能通过GUI 使用的功能都可以通过命令行来进行。

u Database Toolbox ——与关系数据库交换数据 Database Toolbox提供了同任何支持ODBC/JDBC标准的数据库进行数据交换的能力。利用在工具箱中集成的Visual Query Builder工具,无需学习任何SQL语句就可以实现在数据库中查寻数据的功能。这样MATLAB就能够对存储在数据库中的数据进行各种各样的复杂分析。在MATLAB环境中,也可以使用SQL命令来进行如下操作: 对数据库数据进行读、写操作;应用简单或复杂的条件查询数据库中的内容。 特点: ?与支持ODBC/JDBC 数据库建立连接,包括Oracle 、Sybase SQL Server ,Sybase SQL Anywhere ,Microsoft SQL Sever ,Microsoft Access ,Informix Ingres 等。?支持SQL 语句,可以在MATLAB 环境下直接执行SQL 查询命令 ?动态数据调入:可以根据需要使用SQL 在MATLAB 中获取数据,本工具箱对某一种类型的数据库进行大量或小量的查询 ?数据类型保持:在MATLAB 中对数据的调入或调出操作都能保持原有的数据类型 ?多个对话能力,采用本工具箱可在MATLAB 中从一个数据库中调入数据,对那些数据进行分析,然后输出到另一个数据库中 ?处理大量数据的能力:采用本工具箱你可以一次或分几次处理大量的数据,这样能让你根据任务高效地进行数据处理 ?连续状态的数据库联接:一旦和某个数据库的联接建立起来后,数据库一直是打开的,除非你在MATLAB 中执行关闭语句。这提高了数据库的读取速度,减少了不必要的命令来调入、输出数据。 ?无需了解SQL 也能够对数据库数据进行查询。 功能: Database Toolbox 可以与流行的数据库交互数据,其中包括Oracle ,Sybase ,Microsoft SQL Server 及Informix 等。工具箱还允许在单个MATLAB 进程中对多个数据库进行操作,同时支持对大量数据处理。工具箱中包含的Visual Query Builder ,即使不知道SQL ,也能可视化地与数据库打交道。 u Financial Derivatives Toolbox Financial Derivatives Toolbox 用于分析金融衍生工具和投资。 特点 ?提供各种利息率模型 ?提供七种金融工具一系列计算的函数

MATLAB中简单的数据拟合方法与应用实例①

MATLAB中简单的数据拟合方法与应用实例 仅供努力学习matlab的同学们参考参考,查阅了M多资料,总结了以下方法 按步骤做能够基本学会matlab曲线拟合的 1.1数据拟合方法 1.1.1多项式拟合 1.多项式拟合命令 polyfit(X,Y,N):多项式拟合,返回降幂排列的多项式系数。 Polyval(P,xi):计算多项式的值。 其中,X,Y是数据点的值;N是拟合的最高次幂;P是返回的多项式系数;xi是要求的横坐标 拟合命令如下: x=[1 2 3 4 5 6 7 8 9]; y=[9 7 6 3 -1 2 5 7 20]; P=polyfit(x,y,3); xi=0:.2:10; yi=polyval(P,xi); plot(xi,yi,x,y,'r*'); 拟合曲线与原始数据如图1-1 图1-1 2图形窗口的多项式拟合 1)先画出数据点如图1-2 x=[1 2 3 4 5 6 7 8 9]; y=[9 7 6 3 -1 2 5 7 20]; plot(x,y,'r*');

图1-2 2)在图形窗口单击Tools—Basic Fitting,如图1-3勾选. 图1-3 图1-3右方分别是线性、二阶、三阶对数据进行多项式拟合。下面的柱状图显示残差,可以看出,三阶多项式的拟合效果是最好的。 1.1.2指定函数拟合 已知M组数据点和对应的函数形式f t (t)=acos(kt)e X Y 编写M文件:

syms t x=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15]; y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02]; f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'}); cfun=fit(x,y,f) xi=0:.1:20; yi=cfun(xi); plot(x,y,'r*',xi,yi,'b-'); 图1-4 运行程序,在命令窗口可达到以下运行结果,图像如图1-4 Warning: Start point not provided, choosing random start point. > In fit>handlewarn at 715 In fit at 315 In Untitled2 at 5 cfun = General model: cfun(t) = a*cos(k*t)*exp(w*t) Coefficients (with 95% confidence bounds): a = 0.9987 ( 0.9835, 1.014) k = 1.001 (0.9958, 1.006) w = -0.2066 (-0.2131, -0.2002) 从结果可以看出,拟合的曲线为: (0.2066) ()0.9987cos(1.001)*t f t t e- =。拟 合曲线给出了数据大致趋势,并给出了各参数的置信区间。

Matlab数据拟合程序

课程设计名称:设计二:数据拟合指导教师:张莉 课程设计时数: 6 课程设计设备:安装了Matlab、C++软件的计算机 课程设计日期:实验地点:第五教学楼北902 课程设计目的: 1. 了解最小二乘拟合的原理,掌握用MA TLAB作最小二乘拟合的方法; 2. 学会利用曲线拟合的方法建立数学模型。 课程设计准备: 1.在开始本实验之前,请回顾相关内容; 2.需要一台准备安装Windows XP Professional操作系统和装有数学软件的计算机。 课程设计内容及要求 要求:设计过程必须包括问题的简要叙述、问题分析、实验程序及注释、实验数据及结果分析和实验结论几个主要部分。 1. 用切削机床进行金属品加工时,为了适当地调整机床,需要测定刀具的磨损速度,在一定的时间测量刀具的厚度,得数据如表所示,请选用合适的函数来描述切削时间与刀具厚度的关系。 首先对数据进行分析,画出离散的点,观察点近似的曲线: t=0:1:15; y=[30.0 29.1 29.8 28.1 28.0 27.7 27.5 27.2 27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8]; plot(t,y,'r*')

判断出曲线是近似直线函数,所以对数据进行测试可以做三次函数拟合: t=0:1:15; y=[30.0 29.1 29.8 28.1 28.0 27.7 27.5 27.2 27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8]; %plot(t,y,'r*') A=polyfit(t,y,3) z=polyval(A,t); plot(t,y,'r*',t,z,'b') 051015 拟合结果: A = -0.3099 29.5676 拟合函数为:y=-0.3099t+29.5676

MATLAB与系统仿真

学习中心/函授站_ 成都学习中心 姓名赵洪学号7020140122093 西安电子科技大学网络与继续教育学院 2015学年上学期 《MATLAB与系统仿真》期末考试试题 (综合大作业) 考试说明: 1、大作业于2015年4月3日公布,2015年5月9日前在线提交; 2、考试必须独立完成,如发现抄袭、雷同、拷贝均按零分计。 3、程序设计题(三(8,10))要求写出完整的程序代码,并在matlab软件环境调试并运行通过,连同运行结果一并附上。 一、填空题(1? ×25=25?) 1、Matlab的全称为矩阵实验室。 2、在Matlab编辑器中运行程序的快捷键是:F5 。 3、Matlab的工作界面主要由以下五个部分组成,它们分别是:菜单栏、 工具栏、当前工作目录窗口、工作空间管理窗口和命令窗口。 4、在Matlab中inf表示:无穷大;clc表示:清空命令窗口中的显示内容;more表示:在命令窗口中控制其后每页的显示内容行数;who表示:查阅Matlad内存变量名;whos表示:列出当前工作空间所有变量。 5、在Matlab命令窗口中运行命令Simulink 可以打开Simulink模块库浏览器窗口。 6、求矩阵行列式的函数:det ;求矩阵特征值和特征向量的函数eig 。 7、Matlab预定义变量ans表示:没有指定输出变量名;eps表示:系统精度 ;nargin表示:函数输入参数的个数。 8、Matlab提供了两种方法进行程序分析和优化,分别为:通过Profiler工具优化和通过tic和toc函数进行优化。 9、建立结构数组或转换结构数组的函数为:struct ; 实现Fourier变换在Matlab中的对应函数为:fourier() ;Laplace变换的函数:Laplace() 。

哈工大机械原理大作业_凸轮机构设计(第3题)

机械原理大作业二 课程名称:机械原理 设计题目:凸轮设计 院系:机电学院 班级: 1208103 完成者: xxxxxxx 学号: 11208103xx 指导教师:林琳 设计时间: 2014.5.2

工业大学 凸轮设计 一、设计题目 如图所示直动从动件盘形凸轮,其原始参数见表,据此设计该凸轮。 二、凸轮推杆升程、回程运动方程及其线图 1 、凸轮推杆升程运动方程(6 50π?≤ ≤) 升程采用正弦加速度运动规律,故将已知条件mm h 50=,6 50π =Φ带入正弦加速度运动规律的升程段方程式中得: ??? ?? ???? ??-=512sin 215650?ππ?S ;

?? ? ?????? ??-= 512cos 1601ππωv ; ?? ? ??= 512sin 1442 1?π ωa ; 2、凸轮推杆推程远休止角运动方程( π?π ≤≤6 5) mm h s 50==; 0==a v ; 3、凸轮推杆回程运动方程(9 14π ?π≤≤) 回程采用余弦加速度运动规律,故将已知条件mm h 50=,9 5'0π= Φ,6 s π = Φ带入余弦加速度运动规律的回程段方程式中得: ?? ? ???-+=)(59cos 125π?s ; ()π?ω--=59 sin 451v ; ()π?ω-=59 cos 81-a 21; 4、凸轮推杆回程近休止角运动方程(π?π 29 14≤≤) 0===a v s ; 5、凸轮推杆位移、速度、加速度线图 根据以上所列的运动方程,利用matlab 绘制出位移、速度、加速度线图。 ①位移线图 编程如下: %用t 代替转角 t=0:0.01:5*pi/6; s=50*((6*t)/(5*pi)-1/(2*pi)*sin(12*t/5)); hold on plot(t,s); t=5*pi/6:0.01:pi; s=50; hold on plot(t,s); t=pi:0.01:14*pi/9; s=25*(1+cos(9*(t-pi)/5));

MATLABsimulink系统仿真分析仿真报告

仿真报告 课程名称:自动化技术导论 报告题目:MATLAB/simulink系统仿真分析 班级 姓名 学号 xxxxxx自动化学院 2016年4月 软件版本:MATLAB R2010b MATLAB强处理能力 MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。 MATLAB图形处理 MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。 MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。MATLAB程序接口

机械原理课程设计Matlab编程

/*Matlab程序*/ l1 = 59.1000; l2 = 263.9000; l3=120; l4=266.83; l5=180; l6=45; x2=170; y2=132.7289; w1=9.4248; N=42:10:402; ay=119:10:479 a=2*l1*l3*sin(N/180*pi); b=2*l3*(l1*cos(N/180*pi)-l4); c=l2^2-l1^2-l3^2-l4^2+2*l1*l4*cos(N/180*pi); jiao3=2*atan((a- sqrt(a.^2+b.^2-c.^2))./ (b-c))/pi*180+77 g=2*l1*l2*sin(N/180*pi); h=2*l2*(l1*cos(N/180*pi)-l4); m=l1^2+l2^2+l4^2-l3^2-2*l1*l4*cos(N/180*pi); jiao2=2*atan((g- sqrt(g.^2+h.^2-m.^2))./ (h-m))/pi*180+77 lof=-sqrt(l6^2-x2^2-l5^2+2*l5*x2*cos((180+jiao3)/180*pi)+l5^2*sin(j iao3/180*pi).^2)+y2-l5* sin((180+jiao3)/180*pi)

j12=N-(jiao2-77); j32=jiao3-jiao2; j13=(N-(jiao3-77)); j23=(jiao2-jiao3); w3=(w1*l1*sin(j12/180*pi))./ (l3*sin(j32/180*pi)) w2=(-1*w1*l1*sin(j13/180*pi))./(l2*sin(j23/180*pi)) a3=(w1^2*l1*cos(j12/180*pi)+w2.^2*l2-(w3.^2).*(l3*cos(j32/180*pi)) )./ (l3*sin(j32/180*pi)) a2=(-w1^2*l1*cos(j13/180*pi)-(w2.^2).*(l2*cos(j23/180*pi))+l3*w3.^ 2)./ (l3*sin(j23/180*pi)) jiao4=acos((x2-l5*cos((180+jiao3)/180*pi))/l6)/pi*180 w4=((-l5*sin((pi+jiao3)/180*pi)).*w3)./ (l6*sin(jiao4/180*pi)) vof=((l5*sin((180+jiao3-jiao4)/180*pi)).*w3).* sin(jiao4/180*pi) aof=(l6*w4.^2+(l5*w3.^2).*(cos((180+jiao3-jiao4)/180*pi))+l5*a3.*si n((180+jiao3-jiao4)/180*pi))./sin(jiao4/180*pi) 作图程序: /*F点的位移*/ plot(N+77,lof,'-xk') xlabel('AB杆的角度'),ylabel('F点的位移/(mm)') title('F点的位移曲线图') text(100, 171.3339,'初始值= 171.3339')

相关文档
最新文档