文档库 最新最全的文档下载
当前位置:文档库 › MATLAB实验四代码

MATLAB实验四代码

MATLAB实验四代码
MATLAB实验四代码

MATLAB

实验指导书

实验四MATLAB符号计算

一、实验目的

1.掌握基本符号运算

2.掌握符号微积分的运算

3. 掌握符号方程的求解方法

二、实验环境

1.计算机

2.MATLAB7.0集成环境

三、实验说明

1.熟练操作MATLAB7.0运行环境

2.自主编写程序,必要时参考相关资料

3.实验前应写出程序大致框架或完整的程序代码

5.实验学时:2学时

四、实验内容和步骤

1.实验内容

(1)创建符号表达式f(x)=sin(x)+x,计算表达式在x=pi/6处的值,并将结果设置为以下5种精度:小数点后1位、2位、5位有效数字。

x=pi/6;

f=sin(x)+x;

fprintf('f1=%.1f\n',f);

fprintf('f2=%.2f\n',f);

fprintf('f3=%.3f\n',f);

fprintf('f4=%.4f\n',f);

fprintf('f5=%.5f\n',f);

f1=1.0

f2=1.02

f3=1.024

f4=1.0236

f5=1.02360

(2)设x为符号变量,f(x)=x4+x2+1,g(x)=x3+4x2+5x+8,试进行如下运算:f=[1 0 1 0 1]

f =

1 0 1 0 1

>> g=[1 4 5 8]

g =

1 4 5 8

①f(x)+g(x)

F=f+[0 g]

F =

1 1 5 5 9

②f(x)×g(x)

G=conv(f,g)

G =

1 4 6 1

2 6 12 5 8

③对f(x)进行因式分解

>> y=poly2sym(f)

y =

x^4 + x^2 + 1

>> h=factor(y)

h =

(x^2 - x + 1)*(x^2 + x + 1)

④求g(x)的反函数

>> clear

>> syms x

>> finverse(x^3+4*x^2+5*x+8)

Warning: finverse(x^3+4*x^2+5*x+8) is not unique.

> In sym.finverse at 43

ans =

1/6*(-656+108*x+12*(2988-984*x+81*x^2)^(1/2))^(1/3)+2/3/(-65 6+108*x+12*(2988-984*x+81*x^2)^(1/2))^(1/3)-4/3

⑤求复合函数g(f(x))

>> clear

>> syms x y;

>> f=x^4+x^2+1;g=x^3+4*x^2+5*x+8;

>> compose(g,f)

ans =

(x^4+x^2+1)^3+4*(x^4+x^2+1)^2+5*x^4+5*x^2+13

(3)分别对x 和y 合并同类项

3x 2y-4xy 2-3+5x 2y+2xy 2+5

S=sym('x^2*y+x^2+2*x*y+x+x*y^2+y^2+y')

S =

x^2*y + x^2 + x*y^2 + 2*x*y + x + y^2 + y

>> S1=collect(S)

S1 =

(y + 1)*x^2 + (y^2 + 2*y + 1)*x + y^2 + y

>> syms y

>> S2=collect(S,y)

S2 =

(x + 1)*y^2 + (x^2 + 2*x + 1)*y + x^2 + x

(4)计算下列各式 ①0tan sin lim 1cos 2x x x x

→-- >> limit((tan(x)-sin(x))/(1-cos(2*x)),x,0)

ans =

2 lim

x

x

x x

e

→∞

+

>> limit((x^2+x)/exp(x),x,0)

ans =

③y=x3-2x2+sinx,求'y

>> syms x

>> f=x^3-2*x^2+sin(x);

>> fd=diff(x^3-2*x^2+sin(x))

fd =

3*x^2-4*x+cos(x)

④2

ln()

f x y

=+,求2

/,/,/

f x f y f x y

???????>> syms x y

>> f=log(x+y^2);

>> fx=diff(f,x)

fx =

1/(x+y^2)

>> fy=diff(f,y)

fy =

2*y/(x+y^2)

>> f2xy=diff(fx,y)

f2xy =

-2/(x+y^2)^2*y

⑤/60cos(43),cos(43)x dx x dx π++??

>> syms x

>> f1=cos(4*x+3);

>> F1=int(f1)

F1 =

1/4*sin(4*x+3)

>> R=int(f1,x,0,pi/6)

R =

1/8*3^(1/2)*cos(3)-3/8*sin(3) ⑥1(1)(2)(3)n n n n n ∞=+++∑ >> syms n

>> symsum(n/((n+1)*(n+2)*(n+3)),n,1,inf)

ans =

⑦sin(x)在0附近的Taylor 展开

>> syms x

>> taylor(sin(x))

ans =

x-1/6*x^3+1/120*x^5

(5)求解方程组

2x+3y=1

3x+2y=-1

>> syms x y

>> [x y]=solve(2*x+3*y-1,3*x+2*y+1)

x =

-1

y =

1

(6) 求解微分方程

①0)0(,1)(22==+y y ds

dy >> dsolve('(Dy)^2+y^2=1','y(0)=0')

ans =

sin(t)

-sin(t)

②0)/(',1)0(,sin 22===a pi y y x dx

y d >> dsolve('D2y=sin(x)','y(0)=1','Dy(pi/a)=0')

ans =

1/2*sin(x)*t^2-sin(x)*pi/a*t+1

2.实验步骤

(1)分析实验内容,写出程序大致框架或完整的程序代码。

(2)进入MATLAB7.0集成环境。

(3)编辑程序并进行保存。

(4)运行程序,若有错误,修改错误后再次运行,如此反复进行到不显示出错为止。

(5)检查程序输出结果。

matlab实验四

实验目的 (1) 利用计算机完成控制系统的根轨迹作图。 (2) 了解控制系统根轨迹作图的一般规律。 (3) 利用根轨迹进行系统分析。 实验步骤 (1)运行matlab 。 (2)练习根轨迹的相关函数。 rlocus(sys) rlocus(sys,k) r=rlocus(sys) [r,k]=rlocus(sys) (3)实验内容 1)给定如下系统的开环传递函数,作出它们的根轨迹,并完成给定要求。 ()()()21++= s s s k s G 要求:准确记录根轨迹的起点、终点和根轨迹的条数。 确定根轨迹的分离点与相应的根轨迹增益。 确定临界稳定时根轨迹增益k 。 (1) num=[1]; den=conv([1 0],conv([1 1],[1 2])); sys=tf(num,den); rlocus(sys)

-1、0终点为无穷远∞。 (2) num=[1]; den=conv([1 0],conv([1 1],[1 2])); sys=tf(num,den); rlocus(sys); [kd,pd]=rlocfind(sys) Select a point in the graphics window selected_point = -0.4207 - 0.0000i kd = 0.3849 pd = -2.1547 -0.4247

分离点为-0.4207,增益为0.3849 (3) num=[1]; den=conv([1 0],conv([1 1],[1 2])); sys=tf(num,den); rlocus(sys); [k,p]=rlocfind(sys) Select a point in the graphics window selected_point = 0.0153 - 1.4136i k = 6.0566 p = -3.0051 0.0026 + 1.4197i ()()()()164112 ++-+=s s s s s k s G 要求:确定根轨迹与虚轴交点并确定系统稳定的根轨迹增益k 。 num=[1 1]; den=conv([1 0],conv([1 -1],[1 4 16])); sys=tf(num,den); rlocus(sys);

Matlab上机实验答案

Matlab上机实验答案 实验一 MATLAB运算基础 1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。 >> z1=2*sin(85*pi/180)/(1+exp(2)) z1 = >> x=[2 1+2i; 5]; >> z2=1/2*log(x+sqrt(1+x^2)) z2 = - + + -

>> a=::; >> z3=(exp.*a)-exp.*a))./2.*sin(a++log(+a)./2) (>> z33=(exp*a)-exp*a))/2.*sin(a++log(+a)/2)可以验证z3==z33,是否都为1) z3 = Columns 1 through 5 + + + + + Columns 6 through 10 + + + + + Columns 11 through 15 + + + + + Columns 16 through 20 + + + + +

Columns 21 through 25 + + + + + Columns 26 through 30 + + + + + Columns 31 through 35 + + + + + Columns 36 through 40 + + + + + Columns 41 through 45 + + + + + Columns 46 through 50

+ + + + + Columns 51 through 55 + + + + + Columns 56 through 60 + + + + + Column 61 + (4) 2 2 4 2 01 112 2123 t t z t t t t t ?≤< ? =-≤< ? ?-+≤< ? ,其中t=0:: >> t=0::; >> z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^ 2-2.*t+1) z4 =

实验四 MATLAB程序设计

实验四 MATLAB 程序设计 1.实验目的 (1)熟练掌握MATLAB 的程序流程控制结构。 (2)掌握M 文件的结构,M 函数文件编写、使用。 (3)熟练掌握函数调用和参数传递。 2.实验仪器 (1)Matlab6.5应用软件安装版 一套 (3)PC 机 一台 3. 实验原理 依据MA TLAB 的编程的原理,编写M 函数文件,调用M 函数文件,完成曲线绘制。 4. 实验步骤 (1)利用for 、while 控制语句和sum 指令求和。 (2)使用MA TLAB 函数文件绘图。 (3)利用置换指令绘制脉冲响应曲线. (4)利用feval 指令实现指定的函数。 5. 实验报告内容(选做其中两题) (1)分别用for 和while 循环语句计算∑==630i i 2 K 的程序,再写出一种避免循环的计算程序。 (提示:可考虑利用MA TLAB 的sum (X,n )函数,实现沿数组X 的第n 维求和。)保存为M 文件. (2)将课本例4-8子函数编程及调用演示,三个子图上的圆和多边形绘制在同一坐标系中。并保存为M 文件。保存输出结果图。 (3)利用置换指令subs(X,new),例4-18中的脉冲响应在t=[0,18]的曲线。并保存为M 文件。保存输出结果图。 (4)试利用feval ()指令计算F(x)+F 2(x),其中F 可取‘sin ’、‘cos ’。(提示:先编写以个M 函数function y=trif(F,x)实现F(x)+F 2(x)的计算,在编写调用函数完成F 为‘sin ’、‘cos ’的计算),并保存为M 文件。(指定完成sin(pi/2)+sin(pi/2)^2; cos(pi/3)+cos(pi/3)^2)

MATLAB全部实验及答案

MATLAB全部实验及答案 实验一、MATLAB基本操作 实验内容及步骤 4、有关向量、矩阵或数组的一些运算 (1)设A=15;B=20;求C=A+B与c=a+b? (2)设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B与 A.*B? A*B就是线代里面的矩阵相乘 A.*B是对应位置的元素相乘(3)设a=10,b=20;求i=a/b=0.5与j=a\b=2? (4)设a=[1 -2 3;4 5 -4;5 -6 7] 请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全 下标的形式),并将其单下标转换成全下标。 clear,clc a=[1 -2 3;4 5 -4;5 -6 7]; [x,y]=find(a<0); c=[]; for i=1:length(x) c(i,1)=a(x(i),y(i)); c(i,2)=x(i); c(i,3)=y(i); c(i,4)=(y(i)-1)*size(a,2)+x(i); end c

(5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?前面那 个是虚数矩阵,后面那个出错 (6)请写出完成下列计算的指令: a=[1 2 3;3 4 2;5 2 3],求a^2=?,a.^2=? a^2= 22 16 16 25 26 23 26 24 28 a.^2= 1 4 9 9 16 4 25 4 9 (7)有一段指令如下,请思考并说明运行结果及其原因 clear X=[1 2;8 9;3 6]; X( : ) 转化为列向量 (8)使用三元组方法,创建下列稀疏矩阵 2 0 8 0 0 0 0 1 0 4 0 0 6 0 0 0 方法一: clear,clc

matlab实验报告

MATLAB 数学实验报告 指导老师: 班级: 小组成员: 时间:201_/_/_

Matlab 第二次实验报告 小组成员: 1 题目:实验四,MATLAB 选择结构与应用实验 目的:掌握if 选择结构与程序流程控制,重点掌握break,return , pause语句的应用。 问题:问题1:验证“哥德巴赫猜想” ,即:任何一个正偶数(n>=6)均可表示为两个质数的和。要求编制一个函数程序,输入一个正偶数,返回两个质数的和。 问题分析:由用户输入一个大于6 的偶数,由input 语句实现。由if 判断语句判断是否输入的数据符合条件。再引用质数判断函数来找出两个质数,再向屏幕输出两个质数即可。 编程:function [z1,z2]=gede(n); n=input('please input n')

if n<6 disp('data error'); return end if mod(n,2)==0 for i=2:n/2 k=0; for j=2:sqrt(i) if mod(i,j)==0 k=k+1; end end for j=2:sqrt(n-i) if mod(n-i,j)==0 k=k+1; end end if k==0 fprintf('two numbers are') fprintf('%.0f,%.0f',i,n- i) break end

end end 结果分析 如上图,用户输入了大于6的偶数返回两个质数5和31,通过 不断试验,即可验证哥德巴赫猜想。 纪录:if判断语句与for循环语句联合嵌套使用可使程序结构更加明晰,更快的解决问题。 2题目:实验四,MATLAB选择结构与应用实验 目的:用matlab联系生活实际,解决一些生活中常见的实际问 题。

Matlab实验五分支结构程序设计答案

实验五分支结构程序设计 实验内容 (1)从键盘输入一个数,将它反向输出,例如输入693,输出为396 >> clear >> format long g s=input('s=') n=fix(log10(s)); A=0; for i=1:n a=fix(s/10^n); x=fix(mod(s,10^i)/10.^(i-1)); A=A+x*10^(n+1-i); end A+a s=693 s = 693 ans = 396 (2)输入一个百分制成绩,要求输出成绩等级A,B,C,D,E其中90-100位A,80-89为B,70-79为C,60-69为D,60以下为E 1)分别用if语句和switch语句实现 2)输入百分制成绩后要判断成绩的合理性,对不合理的成绩应输出出错信息 If语句 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理');

elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩98 a = 98 A 成绩合理 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理'); elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩148 a = 148 成绩错误 switch语句 >> a=input('输入成绩') switch a; case num2cell(0:59) disp('E 成绩合理'); case num2cell(60:69) disp('D 成绩合理'); case num2cell(70:79) disp('C 成绩合理'); case num2cell(80:89) disp('B 成绩合理'); case num2cell(90:100) disp('A 成绩合理'); otherwise disp('成绩错误'); end

MATLAB)课后实验答案[1]

实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 0 12 2sin851z e =+ (2) 221ln(1)2 z x x =++,其中2 120.45 5i x +??=? ?-?? (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+= ++=-- (4) 2242011 122123t t z t t t t t ?≤=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1)

4. 完成下列操作: (1) 求[100,999]之间能被21整除的数的个数。 (2) 建立一个字符串向量,删除其中的大写字母。 解:(1) 结果: m=100:999; n=find(mod(m,21)==0); length(n) ans = 43 (2). 建立一个字符串向量例如: ch='ABC123d4e56Fg9';则要求结果是: ch='ABC123d4e56Fg9'; k=find(ch>='A'&ch<='Z'); ch(k)=[] ch =

MATLAB 实验四报告

实验四 线性控制系统的时域响应分析 一、 实验目的 1.熟悉MATLAB 有关命令的用法; 2.用MATLAB 系统命令对给定系统进行时域分析; 二、实验内容 求连续系统的单位阶跃响应有关命令的用法: 命令格式: [y,x,t]=step(num, den) [y,x,t]=step(num, den, t) [y,x,t]=step(A,B,C,D) [y,x,t]=step(A,B,C,D,iu) [y,x,t]=step(A,B,C,D,iu,t) 练习4-1. 给定系统的传递函数如下: 求该系统的阶跃响应曲线,记录超调量、上升时间、过渡过程时间。 结果: num=[25]; den=[1 4 25]; step(num,den) grid 练习4-2. 已知系统的开环传递函数为: 求出该系统在单位负反馈下的阶跃响应曲线,记录超调量、上升时间、过渡过程时间。 结果: num=[20]; s s s s s G 4036820 )(234+++=25 425)()(2++=S S S R S C

+ — — den=[1 8 36 40 0]; [numc,denc]=cloop(num,den,-1); step(numc,denc) 练习4-3 已知系统的传递函数为: ①求系统的阶跃响应; ②阶跃响应曲线线型用“*”号表示; ③阶跃响应图应加上横坐标名、纵坐标名和标题名,并加上网格线。 结果: G1=tf([6.3233 6.3233*2*1.4235 1.4235*1.4235*6.3233 ],[1 0]); G2=tf([1],[1 1 10 0]); sys1=series(G1,G2); sys=feedback(sys1,-1); [y,t,x]=step(sys) plot(t,y,'*'); xlabel('time'); ylabel('y'); title('响应'); grid 练习4-4 求T1、T2、T3系统的阶跃响应; ①将 T1、T2、T3系统的阶跃响应图画在同一窗口内; ②T1、T2、T3系统的阶跃响应曲线分别用不同的线形和颜色表示; ③将‘T1、T2、T3’分别标注在对应的曲线上。 s s 2)4235.1(3233.6+ ) 5)(1(1++s s s

Matlab实验第一次实验答案

实验一Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句 3、熟悉Matlab绘图命令及基本绘图控制 4、熟悉Matlab程序设计的基本方法 二、实验内容: 1、帮助命令 使用help命令,查找sqrt(开方)函数的使用方法; 解:sqrt Square root Syntax B = sqrt(X) Description B = sqrt(X) returns the square root of each element of the array X. For the elements of X that are negative or complex, sqrt(X) produces complex results. Remarks See sqrtm for the matrix square root. Examples sqrt((-2:2)') ans = 0 + 1.4142i 0 + 1.0000i

1.0000 1.4142 2、矩阵运算 (1)矩阵的乘法 已知A=[1 2;3 4]; B=[5 5;7 8]; 求A^2*B 解:A=[1 2;3 4 ]; B=[5 5;7 8 ]; A^2*B (2)矩阵除法 已知A=[1 2 3;4 5 6;7 8 9]; B=[1 0 0;0 2 0;0 0 3]; A\B,A/B 解:A=[1 2 3;4 5 6;7 8 9 ]; B=[1 0 0;0 2 0;0 0 3 ]; A\B,A/B (3)矩阵的转置及共轭转置

matlab所有实验及答案

实验二 习题 1、 矩阵Y= ???? ? ???? ???3472123100451150425 ,给出元素1的全下标和单下标,并用函数练习全下标和单下标的转换,求出元素100的存储位置。取出子矩阵?? ? ? ??21301,并求该矩阵的维数。 解:命令为: Y=[5,2,4;0,15,1;45,100,23;21,47,3] Y(2,3) Y(10) sub2ind([4 3],2,3) [i,j]=ind2sub([4 3],10) find(Y==100) sub2ind([4 3],3,2) B=Y(2:2:4,3:-2:1) 或 B=Y([2 4],[3 1]) [m n]=size(Y) 2、 建立一个数值范围为0—100内4*5的整数随机矩阵。 求出大于50的元素的位置。 解:命令为: G=int8(100*rand(4,5)) find(G>50) 3、 已知矩阵A=[1 0 -1 ;2 4 1; -2 0 5],B=[0 -1 0;2 1 3;1 1 2] 求2A+B 、A 2-3B 、A*B 、B*A 、A .*B ,A/B 、A\B 解:命令为: A=[1 0 -1 ;2 4 1; -2 0 5] B=[0 -1 0;2 1 3;1 1 2] E=2*A+B F=A^2-3*B G=A*B H=B*A I=A.*B J=A/B K=A\B 4、 利用函数产生3*4阶单位矩阵和全部元素都为8的 4*4阶矩阵,并计算两者的乘积。 解:命令为: A=eye(3,4) B=8*ones(4) C=A*B 5、 创建矩阵a=????? ???????------7023021.5003.120498601 ,取出其前两列构成的矩阵b ,取出前两行构成矩阵c ,转置矩阵b 构成矩阵d ,计算a*b 、c

实验四 MATLAB图形系统

实验四 MATLAB图形系统 实验性质:验证性实验级别:必做 开课单位:信息与通信工程学院通信工程系学时:2学时 一、实验目的: 1、掌握利用MATLAB提供的图形函数来建立图形 2、理解MATLAB图形系统的概貌 二、实验器材: 安装matlab软件的计算机 三、实验原理 3.1 二维曲线绘图的基本操作 plot的基本调用格式的运用 3.2 三维绘图的基本操作 三维线图指令plot3 3.3 高级图形 一个图形由安排在一个层次结构上的五个图形对象组成。首先有一个窗口,这是一个图形对象。然后由两个轴对象来定义相应的坐标轴。这些都可以用s u b p l o t命令来完成。最后,用p l o t命令来创建两个线条对象。 对于每一个对象都可以修改它的一些属性。例如,可以改变图形窗口的位置和图形对象的背景色。对于一个轴对象可以改变它在图形区域内的刻度大小和位置。线条对象可以变得更细,改变成另一种颜色,另一种线型等等。 四、实验内容: 1、画出对数和指数函数,并分别加上标题,轴标记和曲线说明.这里要求采用多种方法 来标注曲线. 2、将图形窗口分成两格,分别绘制正割和余割函数曲线,并加上适当的标注. 3、将图形分成两个窗格分别绘制出函数在[-3,3]区间上的曲线,并利用axis调整轴 刻度,使它们具有相同的缩放尺寸 4、有一位研究生,在一年中平均每月的费用为生活费190元,资料费33元,电话费45

元,购买衣服42元,其它费用45元.请以一饼图表示出他每月的消费比例,并分离出 表示资料费用的切片.请给出每一块加以标注. 五、实验步骤: 1、画出对数和指数函数,并分别加上标题,轴标记和曲线说明; 2、将图形窗口分成两格,分别绘制正割和余割函数曲线,并加上适当的标注. 3、将图形分成两个窗格分别绘制出函数在[-3,3]区间上的曲线,并利用axis调整轴 刻度,使它们具有相同的缩放尺寸; 4、根据内容4编写m文件,并以一饼图表示出他每月的消费比例。 六、实验结果 1、画出对数和指数函数,并分别加上标题,轴标记和曲线说明.这里要求采用多种方法来标注曲线 代码:

matlab实验四及其答案

实验四GUI 设计专业 学号姓名成绩电气工程及其自 动化201409140305 杨诚1.创建GUI 绘制方程c bx ax y ++=2图形,需要显示绘图结果的坐标系窗口,还能够输入 a , b , c 的值和x 取值范围(最大值和最小值)。 回调函数的编写: a=str2num(get(handles.edit1,'String'));b=str2num(get(handles.edit2,'String'));c=str2num(get(handles.edit3,'String'));xmin=str2num(get(handles.edit4,'String'));xmax=str2num(get(handles.edit5,'String'));x=xmin:0.1:xmax;y=a*x.^2+b*x+c;plot(x,y); 设计的运行界面截图:

2.设计一个GUI,完成画出y=sin(x)、y=cos(x)和y=x 3.的波形图。回调函数的编写: x=-5:0.1:5 plot(x,sin(x)) x=-5:0.1:5 plot(x,cos(x))

x=-5:0.1:5 y=x.^3 plot(x,y)

设计的运行界面截图: 3.创建一个GUI,含有下拉菜单,下拉菜单中有背景颜色选择。回调函数的编写: yanse=get(handles.popupmenu1,'value'); switch yanse case1 set(gcf,'color','r'); case2 set(gcf,'color','y'); case3 set(gcf,'color','g'); end 设计的运行界面截图:

MATLAB上机实验(答案)

MATLAB工具软件实验(1) (1)生成一个4×4的随机矩阵,求该矩阵的特征值和特征向量。程序: A=rand(4) [L,D]=eig(A) 结果: A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 L = -0.7412 -0.2729 - 0.1338i -0.2729 + 0.1338i -0.5413 -0.3955 -0.2609 - 0.4421i -0.2609 + 0.4421i 0.5416 -0.4062 -0.0833 + 0.4672i -0.0833 - 0.4672i 0.4276 -0.3595 0.6472 0.6472 -0.4804 D = 2.3230 0 0 0 0 0.0914 + 0.4586i 0 0 0 0 0.0914 - 0.4586i 0 0 0 0 0.2275 (2)给出一系列的a值,采用函数 22 22 1 25 x y a a += - 画一组椭圆。 程序: a=0.5:0.5:4.5; % a的绝对值不能大于5 t=[0:pi/50:2*pi]'; % 用参数t表示椭圆方程 X=cos(t)*a; Y=sin(t)*sqrt(25-a.^2); plot(X,Y) 结果: (3)X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2], (a)写出计算其负元素个数的程序。程序: X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2]; L=X<0; A=sum(L) 结果: A =

实验4 Matlab程序设计1

实验4 Matlab 程序设计1 实验目的: 1、 掌握建立和执行M 文件的方法; 2、 掌握实现选择结构的方法; 3、 掌握实现循环结构的方法。 实验内容: 1. 从键盘输入一个4位整数,按如下规则加密后输出。加密规则:每位数字都加上7,然 后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 2. 求分段函数的值。 ,x x x x y x x x x x x x ?+- <≠-?=-+ ≤<≠≠??-- ?2226035605231且且及其他 用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。 3. 输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E ,其中90~100分为A ,80~89 分为B ,70~79分为C ,60~69分为D ,60分以下为E 。 要求: (1) 分别用if 语句和swich 语句实现。 (2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 4. 硅谷公司员工的工资计算方法如下: (1) 工作时数超过120小时者,超过部分加发15%; (2) 工作时数低于60小时者,扣发700元; (3) 其余按每小时84元计发。

试编程按输入的工号和该号员工的工时数,计算应发工资。 5.设计程序,完成两位数的加、减、乘、除四则运算。即:输入两个两位随机整数,再输 入一个运算符号,做相应的运算,并显示相应的结果。 6.建立5×6矩阵,要求输出矩阵的第n行元素。当n值超过矩阵的行数时,自动转为输 出矩阵的最后一行元素,并给出出错信息。 7.产生20个两位随机整数,输出其中小于平均数的偶数。 实验代码及实验结果 1. >> a=input('请输入一个四位整数:'); 请输入一个四位整数:9988 >> a1=fix(a/1000); >> a2=rem(fix(a/100),10); >> a3=rem(fix(a/10),10); >> a4=rem(a,10); >> a1=rem(a1+7,10); >> a2=rem(a2+7,10); >> a3=rem(a3+7,10); >> a4=rem(a4+7,10); >> b=a1;a1=a3;a3=b; >> b=a2;a2=a4;a4=b; >> c=a1*1000+a2*100+a3*10+a4; >> disp(c)

河南城建学院MATLAB上机实验答案

一熟悉Matlab工作环境 1、熟悉Matlab的5个基本窗口 思考题: (1)变量如何声明,变量名须遵守什么规则、是否区分大小写。 答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。变量名要遵守以下几条规则:?变量名必须以字母开头,只能由字母、数字或下划线组成。 ?变量名区分大小写。 ?变量名不能超过63个字符。 ?关键字不能作为变量名。 ?最好不要用特殊常量作为变量名。 (2)试说明分号、逗号、冒号的用法。 分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。 逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。 冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。 (3)linspace()称为“线性等分”函数,说明它的用法。 LINSPACE Linearly spaced vector. 线性等分函数 LINSPACE(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2. 以X1为首元素,X2为末元素平均生成100个元素的行向量。 LINSPACE(X1, X2, N) generates N points between X1 and X2. For N < 2, LINSPACE returns X2. 以X1为首元素,X2为末元素平均生成n个元素的行向量。如果n<2,返回X2。 Class support for inputs X1,X2: float: double, single 数据类型:单精度、双精度浮点型。 (4)说明函数ones()、zeros()、eye()的用法。 ones()生成全1矩阵。 zeros()生成全0矩阵。 eye()生成单位矩阵。 2、Matlab的数值显示格式

MATLAB实验题目及答案

实验二一维二维数组的创建和寻访 一、实验目的 1、掌握一维数组、二维数组创建和寻访的几种方法。 2、区别数组运算和矩阵运算的差别。 3、熟悉执行数组运算的常用数组操作函数。 4、掌握数组运算中的关系和逻辑操作及常用的关系、逻辑函数。 5、掌握“非数”、“空”数组在MA TLAB中的应用。 二、实验主要仪器与设备 装配有MA TLAB7.6软件的计算机 三、预习要求 做实验前必须认真复习第三章MATLAB的数值数组及向量化运算功能。 四、实验内容及实验步骤 1、一维数组的创建方法有哪几种?举例说明。 答:一维数组的创建方法有: ①递增/递减型一维数组的创建:冒号生成法:x=a:inc:b 线性(或对数)定点法:x=linspace(a,b,n),x=logspace(a,b,n) ②逐个元素输入法:如x=[0.1,sin(pi/5),-exp(-3),-2*pi] ③运用MA TLAB函数生成法:例ones,rand等。 2、输入以下指令,并写出运行结果。本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。 A=zeros(2,6) %创建(2×6)的全零数组 A(:)=1:12 %赋值号左边:单下标寻访(2×6) 数组A的全部12个元素 %赋值号右边:拥有12个元素的一维数组 A(2,4) %双下标:A数组的第2行第4列元素 A(8) %单下标:数组A的第8个元素 A(: , [1,3]) %双下标:显示A的“第1列和第3列上全部行的元素” A([1, 2, 5, 6]') %单下标:把A数组第1,2,5,6个元素排成列向量 A(: , 4:end) %双下标:显示A的“从第4起到最后一列上全部行的元素” %在此end用于“列标识”,它表示“最后一列” A(2,1:2:5)=[-1, -3, -5] %把右边的3个数分别赋向A数组第2行的第1,3,5个元素位置 B=A([1, 2, 2, 2], [1, 3, 5]) %取A数组的1,3,5列的第1行元素作为B的第1行 %取A数组的1,3,5列的第2行分别作为B的第2,3,4行 L=A<3 %产生与A维数相同的“0,1”逻辑数组 A(L)=NaN %把逻辑1标识的位置上的元素赋为“非数” 运行结果: A = 0 0 0 0 0 0 0 0 0 0 0 0

实验四matlab

Mstg函数 function st=mstg N=800 Fs=10000;T=1/Fs;Tp=N*T; t=0:T:(N-1)*T;k=0:N-1;f=k/Tp; fc1=Fs/10; fm1=fc1/10; fc2=Fs/20; fm2=fc2/10; fc3=Fs/40; fm3=fc3/10; xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t); xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t); xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t); st=xt1+xt2+xt3; fxt=fft(st,N); subplot(3,1,1) plot(t,st);grid;xlabel('t/s');ylabel('s(t)'); axis([0,Tp/8,min(st),max(st)]);title('(a) s(t)的波形') subplot(3,1,2) stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b) s(t)的频谱') axis([0,Fs/5,0,1.2]); xlabel('f/Hz');ylabel('幅度')

调幅信号y1(n) fp1=300;fs1=400;Fs=10000;T=1/Fs; wp1=2*fp1/Fs;ws1=2*fs1/Fs; rp=0.1;rs=60; [N,wn1]=ellipord(wp1,ws1,rp,rs); [b1,a1]=ellip(N,rp,rs,wn1); st1=mstg y1=filter(b1,a1,st1); [H,W]=freqz(b1,a1); m=abs(H); figure(2);subplot(3,1,1) plot(W/pi,20*log10(m/max(m)));grid;xlabel('频率(Hz)');ylabel('幅度(dB)');title('(c) H1(z)的幅频特性') subplot(3,1,2) N=800;Tp=N*T;t=0:T:(N-1)*T;k=0:N-1;f=k/Tp; plot(t,y1);grid;xlabel('t/s');ylabel('y1'); axis([0,Tp/8,min(y1),max(y1)]);title('(d) y1的波形') Y1=fft(y1) k=0:N-1; subplot(3,1,3) plot(f,abs(Y1)); stem(f,abs(Y1)/max(abs(Y1)),'.');grid;title('(e) y1的频谱') axis([0,Fs/5,0,1.2]); xlabel('f/Hz');ylabel('幅度')

matlab实验内容答案

实验报告说明: matlab 课程实验需撰写8个实验报告,每个实验报告内容写每次实验内容中标号呈黑体大号字显示的题目。 第一次实验内容: 实验一 MATLAB 运算基础 一、实验目的 1.熟悉启动和退出MA TLAB 的方法。 2.熟悉MA TLAB 命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握MA TLAB 各种表达式的书写规则以及常用函数的使用。 二、实验内容 1.先求下列表达式的值,然后显示MA TLAB 工作空间的使用情况并保存全部变量。 (1)2 2sin 8511z e ?= + (2 )12ln(2 z x =+ ,其中2120.45 5i +? ? =? ?-?? (3)0.30.33sin(0.3), 3.0, 2.9, 2.8,,2.8,2.9,3.02 a a e e z a a --= +=--- 提示:利用冒号表达式生成a 向量,求各点的函数值时用点乘运算。 (4)2 2 2 01 41 1221 23 t t z t t t t t ?≤

12344347873657A -????=??????,131203327B -???? =????-?? 求下列表达式的值: (1)A+6=B 和A-B+I(其中I 为单位矩阵)。 (2)A*B 和A.*B 。 (3)A^3和A^.3 。 (4)A/B 和B\A 。 (5)[A ,B]和[A([1,3],;);B^2] 。 3.设有矩阵A 和B 12345678910111213141516171819202122232425A ????????=????????, 30 161769 23497041311B ?? ?? -?? ??=-?? ????? ? (1) 求它们的乘积C 。 (2) 将矩阵C 的右下角3×2子矩阵赋给D (3) 查看MA TLAB 工作空间使用情况。 4.完成下列操作: (1)求[100,999]之间能被21整除的数的个数。 提示:先利用冒号表达式,再利用find 和length 函数。 (2)建立一个字符串向量,删除其中的大写字母。 提示:利用find 函数和空矩阵。 第二次实验内容: 实验三 选择结构程序设计 一、实验目的 1. 掌握建立和执行M 文件的方法。 2. 掌握利用if 语句实现选择结构的方法。 3. 掌握利用switch 语句实现多分支选择结构的方法。 4. 掌握try 语句的使用。 二 、实验内容

Matlab实验指导书(含答案)汇总

实验一:Matlab操作环境熟悉 一、实验目的 1.初步了解Matlab操作环境。 2.学习使用图形函数计算器命令funtool及其环境。 二、实验内容 熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算: 1.单函数运算操作。 求下列函数的符号导数 (1) y=sin(x); (2) y=(1+x)^3*(2-x); 求下列函数的符号积分 (1) y=cos(x); (2) y=1/(1+x^2); (3) y=1/sqrt(1-x^2); (4) y=(x-1)/(x+1)/(x+2); 求反函数 (1) y=(x-1)/(2*x+3); (2) y=exp(x); (3) y=log(x+sqrt(1+x^2)); 代数式的化简 (1) (x+1)*(x-1)*(x-2)/(x-3)/(x-4); (2) sin(x)^2+cos(x)^2; (3) x+sin(x)+2*x-3*cos(x)+4*x*sin(x); 2.函数与参数的运算操作。 从y=x^2通过参数的选择去观察下列函数的图形变化 (1) y1=(x+1)^2 (2) y2=(x+2)^2 (3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作 求和 (1) sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5 乘积 (1) exp(-x)*sin(x)

matlab实验四

matlab实验四

实验目的 (1) 利用计算机完成控制系统的根轨迹作图。 (2) 了解控制系统根轨迹作图的一般规律。 (3) 利用根轨迹进行系统分析。 实验步骤 (1)运行matlab 。 (2)练习根轨迹的相关函数。 rlocus(sys) rlocus(sys,k) r=rlocus(sys) [r,k]=rlocus(sys) (3)实验内容 1)给定如下系统的开环传递函数,作出它们的根轨迹,并完成给定要求。 ()()()21++= s s s k s G 要求:准确记录根轨迹的起点、终点和根轨迹的条数。 确定根轨迹的分离点与相应的根轨迹增益。 确定临界稳定时根轨迹增益k 。 (1) num=[1]; den=conv([1 0],conv([1 1],[1 2])); sys=tf(num,den); rlocus(sys)

-6 -5-4-3-2-1012 -4-3 -2 -1 1 2 3 4R oot Locus R eal Axis I m a g i n a r y A x i s 、-1、0终点为无穷远∞。 (2) num=[1]; den=conv([1 0],conv([1 1],[1 2])); sys=tf(num,den); rlocus(sys); [kd,pd]=rlocfind(sys) Select a point in the graphics window selected_point = -0.4207 - 0.0000i kd = 0.3849 pd = -2.1547 -0.4247 -0.4207

MATLAB实验报告材料(1-4)

信号与系统MATLAB第一次实验报告 一、实验目的 1.熟悉MATLAB软件并会简单的使用运算和简单二维图的绘制。 2.学会运用MATLAB表示常用连续时间信号的方法 3.观察并熟悉一些信号的波形和特性。 4.学会运用MATLAB进行连续信号时移、反折和尺度变换。 5.学会运用MATLAB进行连续时间微分、积分运算。 6.学会运用MATLAB进行连续信号相加、相乘运算。 7.学会运用MATLAB进行连续信号的奇偶分解。 二、实验任务 将实验书中的例题和解析看懂,并在MATLAB软件中练习例题,最终将作业完成。 三、实验内容 1.MATLAB软件基本运算入门。 1). MATLAB软件的数值计算: 算数运算 向量运算:1.向量元素要用”[]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。2.x=x0:step:xn.其中x0位初始值,step表示步长或者增量,xn 为结束值。 矩阵运算:1.矩阵”[ ]”括起来;矩阵每一行的各个元素必须用”,”或者空格分开;矩阵的不同行之间必须用分号”;”或者ENTER分开。2.矩阵的加法或者减法运算是将矩阵的对应元素分别进行加法或者减法的运算。3.常用的点运算包括”.*”、”./”、”.\”、”.^”等等。 举例:计算一个函数并绘制出在对应区间上对应的值。

2).MATLAB软件的符号运算:定义符号变量的语句格式为”syms 变量名” 2.MATLAB软件简单二维图形绘制 1).函数y=f(x)关于变量x的曲线绘制用语:>>plot(x,y) 2).输出多个图像表顺序:例如m和n表示在一个窗口中显示m行n列个图像,p表 示第p个区域,表达为subplot(mnp)或者subplot(m,n,p) 3).表示输出表格横轴纵轴表达范围:axis([xmax,xmin,ymax,ymin]) 4).标上横轴纵轴的字母:xlabel(‘x’),ylabel(‘y’) 5).命名图像就在subplot写在同一行或者在下一个subplot前:title(‘……’) 6).输出:grid on 举例1: 举例2: 3.matlab程序流程控制

相关文档