文档库 最新最全的文档下载
当前位置:文档库 › MATLAB实验答案

MATLAB实验答案

MATLAB实验答案
MATLAB实验答案

实验一:变量和矩阵的赋值、矩阵的初等运算

实验目的:

1. 熟悉MATLAB的工作环境

2. 掌握变量的赋值、矩阵的创建。

3. 掌握矩阵和数组的初等运算。

4. 熟悉和掌握inv、mean、var、randn、rand、ones、zeros、magic、eye函数的使用。实验内容:

1. 菜单栏File→Preferences→Command Window→Font and Colors修改字体,选择Use custom font改为24。同样方法File→Preferences→Editor/Debugger→Font and Colors 修改字体,选择Use custom font改为24。点击Apply,OK即可。

2. 在内产生均匀分布的200个点,形成1×200向量赋给变量X。(结果不必记录)

X=linspace(0,2*pi,200);

3. 在内每间隔3产生向量Y。

Y=[0:3:10];

4. 给矩阵赋值,,打开workspace查看矩阵的赋值。使用save data A B语句存储到data.mat数据文件中。输入Clear all命令清空所有变量,再使用load data加载矩阵A 和B。

A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 18];

B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7];

save data A B;

clear all;

load data;

5. 产生8*6阶的正态分布随机数矩阵R,求其各列的平均值和方差,并求全体的平均值和方差。

R=randn(8,6);

a=mean(R);

b= var(R);

c=mean(R(:));

d=var(R(:));

6. 模拟选号程序,现有10000人,按顺序编号为1,2,…10000号,一次随机选出一个编号,要求随机数均匀分布。

R=round(ceil(rand(10000,1)*10000));

7. 产生4*6阶的均匀分布随机数矩阵R,要求其元素在1~16之间取整数值,并求此矩阵前四列组成的方阵的逆阵。

R=round(ceil(rand(4,6)*16));

R=(:,[5,6])=[];

inv(R);

8. 使用矩阵运算产生99乘法表,显示数值即可。

R=[1:1:9];

R'*R;

9.求下列联立方程的解:

A=[3,4,-7,-12;5,-7,4,2;1,0,8,-5;-6,5,-2,10];

B=[4;-3;9;-8];

9. (选做)

产生1~100之间的奇数,按降序排列,赋给Z。(结果不必记录)

Z=[99:-2:1];

10. 将1~1000之间尾数为3的数取出,赋给M。(结果不必记录)

R=[1:1:1000];

M=R(rem(R,10)==3);

11. (选做)

a) 列出2*2阶的单位矩阵I,4*4阶的魔方矩阵M和4*2阶的全幺矩阵A,全零矩阵B。

I=eye(2);

M=magic(4);

A=ones(4,2);

B=zeros(4,2);

b) 将这些矩阵拼接为6*6阶的矩阵C:

C=[I,A';B,M];

c) 取出C的第2、4、6行,组成3*6阶的矩阵,取出C的第2、4、6列,组成6*3阶的矩阵。

C1=C([2,4,6],:);

C2=C(:,[2,4,6]);

d) 求和

D=C1*C2;

D=C2*C1;

实验要求:

记录命令代码或函数代码和输出结果,有图形输出

实验二:逻辑判断与流程控制

实验目的:

1. 掌握常用关系运算和逻辑运算。

2. 熟悉掌握选择结构(if语句)、循环结构(for语句,while语句)、多路分支结构(switch 语句)的流程控制语句。

3. 学习编写脚本文件(*.m文件)。掌握脚本文件的调用方法。

实验内容:

1. 找出1~100间3的倍数和尾数是3的数,按升序排列。提示:排序函数为sort(X)

程序源代码和调用及结果:

X=1:100;

Y=[X(rem(X,3)==0) X(rem(X,10)==3)];

Z=sort(Y);

for k=1:length(Z)

if (k+1)>length(Z) break, end

if Z(k)==Z(k+1) Z(k)=[]; end

end

Columns 1 through 15

3 6 9 12 13 15 18 21 23 2

4 27 30 33 36 39

Columns 16 through 30

42 43 45 48 51 53 54 57 60 63 66 69 72 73 75

Columns 31 through 39

78 81 83 84 87 90 93 96 99

2. 编写脚本文件exe31.m使用选择结构编写程序判断输入的成绩C为及格、中等、良好、优秀、满分还是不及格。

该脚本文件的第一行是:C=input('请输入成绩C= ');

程序源代码和调用及结果:

C=input('请输入成绩C= ')

if C<0|C>100 'error',

elseif C==100 '满分',

elseif C<100&C>=90 '优秀',

elseif C>=80&C<90 '良好',

elseif C>=70&C<80 '中等',

elseif C>=60&C<70 '及格',

else '不及格',

end

请输入成绩C= 67

C =

67

ans =

及格

3. 编写脚本文件exe32.m使用for循环计算1~1000的累加和。

程序源代码和调用及结果

S=0;

for x=1:1000

S=S+x;

end

S

S =

500500

思考:不使用循环,求解上题。(使用sum函数)

4. 编写脚本文件exe33.m使用while循环计算从1开始的奇数的联乘积S1,

S1=1×3×5×…。要求S1<1×106,显示S1和最后一个奇数的值。

程序源代码和调用及结果

n=1;

s=1;

while s<10^6

S1=s;

s=s*(n+2);

n=n+2;

end,

S1,n-2

S1 =

135135

ans =

13

5. (选做)编写脚本文件exe34.m使用switch语句改写exe31.m,完成相同功能。程序源代码和调用及结果

C=input('请输入成绩C= ')

if C<0|C>100 'error',

else switch fix(C/10),

case 10, '满分',

case 9 ,'优秀',

case 8 ,'良好',

case 7 ,'中等',

case 6, '及格',

otherwise '不及格',

end

end

请输入成绩C= 67

C =

67

ans =

及格

6. (选做)假设一个人从第1年到第N=10年每年投入本金S=10000元,每年利率为q=10%,编写循环求到第N+1年本利合计T,与本金总额S*N比较。(本题应先作出数学模型再编程)程序源代码和调用及结果

S=10000;S1=10000;N=10;q=0.1;

for i=1:N;

S2=S1*(1+q);S1=S2+10000 ;T=S2;

end

T

S*N

T =

1.7531e+005

ans =

100000

要求:记录程序源代码和调用及结果。

实验三:直角坐标系和极坐标系下基本2-D图形的绘制

实验目的:

1. 掌握用linspace函数和初值:步长:终值生成向量。

2. 熟悉使用plot在直角坐标系下绘制2-D图形。

3. 掌握用subplot函数绘制子图图形,使用xlabel、ylabel和title函数进行标注。

4. 掌握使用polar在极坐标系下绘制函数图形。

5. 使用plot3在直角坐标系下绘制3-D图形。

实验内容:

1. 设,把间分为101点,画出以x为横坐标,y为纵坐标的曲线。

x=linspace(0,2*pi,101);

y=cos(x).*(0.5+3*sin(x)./(1+x.^2));

plot(x,y);

2. 分别令r=2、3、4,用subplot画出参数t=0~10区间每隔0.1生成x~y曲线。

t=0:0.1:10;

for r=2:4;

x=r*cos(t)+3*t;

y=r*sin(t)+3;

subplot(1,3,r-1);

plot(x,y);

end

3. 设 ,

a) 若 =0.5,令N=1,2,3,4,使用循环语句在4个2*2子图中分别画出其曲线,横轴标注N 的取值。

a=0.5;t=0:0.1:10;

for N=1:4

x=sin(t);

y=sin(N*t+a);

subplot(2,2,N);

plot(x,y);

xlabel(N);

end

b) 若N=2,取,使用循环语句在4个2*2子图中分别画出其曲线,横轴标注的取值。

N=2; t=0:0.1:10;

a=[0,pi/3,pi/2,pi];

for m=1:4

x=sin(t);

y=sin(N*t+a(m));

subplot(2,2,m);

plot(x,y);

xlabel(a(m));

end

4. (选做)以下给出双曲螺线、三叶玫瑰线、箕舌线和双曲线的方程,在4个2*2子图中分别画出其曲线,横轴分别标注“双曲螺线”,“三叶玫瑰线”,“箕舌线”,“双曲线”。保存为curve.m文件。

双曲螺线,三叶玫瑰线 , 箕舌线,双曲线

其中a=2,b=3,

a=2;b=3;

theta=0:0.01:2*pi;

r=a./theta;

subplot(2,2,1);

polar(theta,r);

xlabel('双曲螺线');

r=a.*cos(3*theta);

subplot(2,2,2);

polar(theta,r);

xlabel('三叶玫瑰线');

x=-5:0.1:5;

y=8*a^3./(x.^2+4*a^2);

subplot(2,2,3);

plot(x,y);

xlabel('箕舌线');

y=-5:0.01:5;

x=sqrt(a^2/b^2+a^2*y.^2./b^2);

subplot(2,2,4);

plot(x,y,-x,y,'b');

xlabel('双曲线');

5. (选做)

a) 已知椭球面的曲面方程为,其中a=4,b=3,c=1.5用plot3函数作3-D图。

a=4;b=3;c=1.5;

x=-10:0.1:10;

y=x';

[X,Y]=meshgrid(x,y);

Z=sqrt(c^2-c^2.*X.^2./a^2-c^2.*Y.^2./b^2);

plot3(X,Y,Z,X,Y,-Z)

b) 已知鞍形曲面的方程为,其中p=4,q=3用mesh函数作3-D图。

p=4;q=3;

[x,y]=meshgrid(-10:0.2:10,-10:0.2:10);

z=-x.^2/2*p+y.^2/2*q;

mesh(x,y,z);

c) 保存为pict3d.m。

实验要求:

记录命令代码或函数代码和输出结果,有图形输出的要绘图。

实验四:matlab应用于数字图像增强和滤波

实验目的:

1. 熟悉灰度图像读入函数imread和图像显示函数imshow。

2. 掌握数据类型强制转换函数y=double(x)。(注意进行运算前类型为uint8的数据必须转

换为double类型)。

3. 掌握使用函数映射增强图像的方法。

4. 熟悉使用imhist函数显示图像直方图。

5. 熟悉使用histeq函数进行直方图均衡化,通过实验结果理解直方图均衡化的作用。

6. 掌握加噪函数imnoise函数。

7. 熟悉常用空域平滑滤波和锐化滤波模板,如下:

平滑滤波模板,

锐化滤波模板

8. 掌握空域滤波2-D卷积函数y=conv2(x,d,’same’)的调用。其中x为原始图像,y为滤波后图像,d为滤波模板。

9. (选做)熟悉切贝雪夫I型滤波器设计函数cheby1,滤波网络频率特性函数freqz和二维滤波filter2函数。

实验内容:

1.根据简单的函数映射规则编写程序experiment.m,完成图像求反、增强对比度、降低对比度。

(1). 在MATLAB中读入名为lena.bmp的图像给矩阵X,将X强制类型转换为double。(2). 对原始图像求反,即黑色??白色,形成底片效果,结果赋值给矩阵X1。

要求原图像灰度范围0~255,求反后灰度变化范围255~0。

(3). 对原始图像X降低对比度,结果赋值给矩阵X2。(提示:使用一次直线映射)

要求原图像灰度范围0~255,降低对比度后灰度变化范围0~127。

(4). 对降低对比度后的图像X2增强对比度(提示:使用指数函数映射), 结果赋值给矩阵X3,要求与原始图像外观类似。

(5). 在figure No.1显示原图像、求反图像、增强对比度图像和降低对比度图像的图像与直方图,并添加标注说明。

(6). 对降低对比度后图像矩阵X2使用histeq函数进行直方图均衡化,结果赋值给矩阵X4。在figure No.2显示降低对比度后图像与直方图均衡化后图像,并添加标注说明。

x=imread('lena.bmp');

x=double(x)/255;

x1=1-x;

x2=(floor(x*255/2)/255);

x3=(exp(x2*255/10))/255;

figure,subplot(4,2,1),imshow(x)

title('原图像');

subplot(4,2,2),imhist(x);

title('原图像直方图');

subplot(4,2,3),imshow(x1);

title('求反图像');

subplot(4,2,4),imhist(x1);

title('求反图像直方图');

subplot(4,2,5),imshow(x2);

title('增强对比度图像');

subplot(4,2,6),imhist(x2);

title('增强对比度图像直方图');

subplot(4,2,7),imshow(x3);

title('降低对比度图像');

subplot(4,2,8),imhist(x3);

title('降低对比度图像直方图');

figure,subplot(1,2,1),imshow(x2);

title('降低对比度图像');

subplot(1,2,2),imshow(x4);

title('直方图均衡化图像');

2.以下将所有代码写成名为imfil.m的脚本文件,存盘。在command window 中运行。(1). 在MATLAB中读入名为eight.tif的图像给矩阵X,将X强制类型转换为double,最大值归一化并显示X。

(2). 使用imnoise函数对图像矩阵X加噪,加噪后图像矩阵名为J。要求噪声为零均值,方差0.005的高斯噪声。

(3). 使用以上给出的平滑滤波模板和conv2函数对加噪图像进行平滑滤波即降噪,输出图像Y1并显示。

(4). 使用以上给出的锐化滤波模板和conv2函数对图像X进行锐化滤波即边缘增强,输出图像Y2并显示。

(5). 在一个图形窗口中建立2×2子窗口,分别显示原始图像X,加噪图像J,降噪后图像Y1和边缘增强图像Y2。

X=imread('eight.tif');

Y=double(X);

x=(255-Y)./255;

J=imnoise(x,'gaussian',0,0.005);

d1=0.1.*[1,1,1;1,2,1;1,1,1];

Y1=conv2(J,d1,'same');

d2=[0,-1,0;-1,5,-1;0,-1,0];

Y2=conv2(Y,d2,'same');

subplot(2,2,1),imshow(X);title('原图象');

subplot(2,2,2),imshow(J);title('加噪图象');

subplot(2,2,3),imshow(Y1);title('降噪后图象');

subplot(2,2,4),imshow(Y2/max(max(Y2))+Y/255);title('边缘增强图象');

3. (选做)编写程序specfil.m,完成理想滤波器对一幅图像的低通、高通滤波,比较并分析结果。

(1). 在MATLAB中读入名为lena.bmp的图像给矩阵X,将X强制类型转换为double。(2). 用cheby1分别设计低通和高通滤波器并对原始图像X进行滤波,低通滤波后图像为X1,高通滤波后图像为X2。

(3). 在Figure NO 1中开设1*3个子窗口显示原始图像X、低通滤波后图像X1和高通滤波后图像X2。

4.(选做)编写函数[f2,f3]=photo(ut),图像文件名为lena256.bmp,第ut行为破损行,即令该行值全为255,文件存为lena2.bmp,编写程序进行预测修补,文件保存为lena3.bmp。其中图像文件读入函数为imread,写出函数为imwrite,无符号8位整型数转换为双精度类型函数为double,其逆运算函数为uint8。

实验要求:

记录命令代码或函数代码和输出结果,实验三依次输入ut=1,ut=110和ut=256进行测试。

实验五:函数编写与程序调试

实验目的:

1. 掌握函数的编写[y1,y2…]=functionname(x1,x2,…),明确输入变量与输出变量,掌握函数的调用。

2. 熟悉使用if…end中插入error,break终止循环。

3. 熟悉掌握使用设置断点的方法进行程序调试。

实验内容:

1.设,写出一个MATLAB函数程序f31.m,使得调用f31时,x可用矩阵代入,得出的f(x)为同阶矩阵。画出x=[0,4]区间内的f31曲线。(P87 4.19)

function y=f31(x)

y=1./((x-2).^2+0.1)+1./((x-3).^4+0.01);

plot(x,y);

2.寻找Fibonacc数组中大于N的元素T并显示从1开始截止到N的全部数组S, Fibonacc 数组如下: {1 1 2 3 5 8 13 21 34 55……}。

方法一. 编写function [S,T]=findfib(N)函数文件,使用while循环。

function [S,T]=findfib(N)

S=[1,1];i=1;

while S(i)+S(i+1)

S(i+2)=S(i+1)+S(i);

i=i+1;

end

T=S(i+1)+S(i);

输出结果:

[S,T]=findfib(100)

S =

1 1

2

3 5 8 13 21 3

4 5

5 89

T =

144

方法二. 编写function [S,T]=findfib1(N)函数文件,使用for循环,用if 条件语句找到符合条件的元素使用break并退出循环。

function [S,T]=findfib1(N)

f=[1,1];

for m=1:1000

f(m+2)=f(m+1)+f(m);

if f(m+2)>N;

break;

end

end

T=f(m+2);

f(m+2)=[];

S=f;

输出结果:

[S,T]=findfib1(100)

S =

1 1

2

3 5 8 13 21 3

4 5

5 89

T =

144

3. 使用两种方法根据模型画出一组椭圆,其中a为0.5~

4.5间隔0.25的一组数,要求横轴标注’X’,纵轴标注’Y’,图形标题标注’一组a=0.5~4.5的椭圆’。

方法一.使用for循环做出exp1.m文件。

clear all;close all;

for a=0.5:0.25:4.5;

thita=0:0.01:2*pi;

x=a.*cos(thita);

y=sqrt(25-a.^2).*sin(thita);

plot(x,y);

axis('equal');

grid on;

hold on;

title('一组a=0.5~4.5的椭圆');

xlabel('X');

ylabel('Y');

end

方法二.不使用for循环,编写函数function [x,y]= exp2(a),在command window中给a赋值,调用exp2函数作图。

function [x,y]= exp2(a)

thita=0:0.01:2*pi;

x=cos(thita')*a;

y=sin(thita')*sqrt(25-a.^2);

plot(x,y,'b-');

axis('equal');

grid on;

hold on;

title('一组a=0.5~4.5的椭圆');

xlabel('X');

ylabel('Y');

比较两种方法。

提示:使用下列一段程序可以画单位圆。

clear all;close all;

thita=0:0.01:2*pi; R=1;

x=R*cos(thita);y=R*sin(thita);

plot(x,y);axis('equal');grid on;

4.(选做) 现有一个2维数组X,X=[1:10;45 98 67 54 83 64 85 95 72 24].第一行对应学号,第二行对应成绩,找出成绩在A~B之间的同学的学号及对应的成绩,形成数组Y输出。提示:if条件控制语句与循环语句结合使用,考虑使用何种循环结构。实验要求:

记录命令代码或函数代码和输出结果,

实验六:MATLAB常用函数库:多项式函数库

实验目的:

1. 掌握线性方程的求解和矩阵特征值与特征向量的求解。

2. 熟悉掌握多项式的求导、求根和求值。

3. 熟悉常用的数据分析与统计函数。

4. 掌握roots、poly和polyval函数并比较区别。

实验内容:

1. 求方程AX=B的解,并求矩阵A的特征值和特征向量。方程如下:

A=[3,1,0,5;0,-6,7,3;0,4,3,0;2,-1,2,6];

B=[2;4;7;8];

X=A\B

[e,r]=eig(A)

X =

-4.8247

1.3944

0.4741

3.0159

e =

-0.1431 -0.9081 -0.6849 0.4388

0.9226 0.0627 -0.2268 -0.4036

-0.3327 -0.1107 -0.1737 -0.7568

0.1330 0.3989 -0.6702 0.2680

r =

-8.0919 0 0 0

0 0.7348 0 0

0 0 8.2238 0

0 0 0 5.1333

2. 求代数方程的所有根。

a=[3,4,7,2,9,12];

ra=roots(a)

ra =

-0.8612 + 1.4377i

-0.8612 - 1.4377i

0.6737 + 1.0159i

0.6737 - 1.0159i

-0.9583

3. 把1开五次方,并求其全部五个根。

b=[1,0,0,0,0,-1];

rb=roots(b)

rb =

-0.8090 + 0.5878i

-0.8090 - 0.5878i

0.3090 + 0.9511i

0.3090 - 0.9511i

1.0000

4. 设方程的根为x=[-3,-5,-8,-9],求它们对应的x多项式的系数。

x=[-3,-5,-8,-9];

a=poly(x)

a =

1 25 223 831 1080

5. 编写函数function [max1,min1,mean1]=stat(a)求从comp.mat文件中读入的成绩数组a 的最大值max1,最小值min1,和均值mean1。

function [max1,min1,mean1]=stat(a);

max1=max(a);

min1=min(a);

mean1=mean(a);

load comp;[max1,min1,mean1]=stat(a)

94

min1 =

29

mean1 =

72.3000

6. 设

a) x=[-2,8]之间函数的值(取100个点),画出曲线,观察有几个过零点。(用polyval 函数)

b) 用roots函数求此多项式的根。

x=linspace(-2,8,100);

y=[1,-4,0,3,-2,6];

z=polyval(y,x);

plot(x,z/1000)

grid on

r=roots(y)

r =

3.7999

-1.2607

1.3479

0.0564 + 0.9623i

0.0564 - 0.9623i

7. 上题写成一个函数文件f1.m,用fzero函数求它的过零点,若在该函数中加一项xsin(x),求过零点。

function f=f1(x);

a=[1 -4 0 3 -2 6];

f=polyval(a,x);

>> x=linspace(-2,8,100);z=fzero('f1',-1)

z =

-1.2607

>> x=linspace(-2,8,100);z=fzero('f1',1)

z =

>> x=linspace(-2,8,100);z=fzero('f1',3)

z =

3.7999

function f=f2(x);

a=[1 -4 0 3 -2 6];

y0=polyval(a,x);

y1=x.*sin(x);

f=y0+y1;

>> x=linspace(-2,8,100);z=fzero('f2',-1)

z =

-1.2943

>> x=linspace(-2,8,100);z=fzero('f2',1)

z =

1.4269

>> x=linspace(-2,8,100);z=fzero('f2',3)

z =

3.8125

8. (选做)使用多路分支结构switch语句编写函数z=polycal(x,y,s);完成多项式x与多项式y的加减乘除运算,其中s为字符串,意义如下:

'+' 表示多项式加法

'-' 表示多项式减法

'*' 表示多项式乘法

'/' 表示多项式除法

注意当两参与运算的多项式不等长时,多项式加法和减法的处理。

function z=polycal(x,y,s)

x1=length(x);

y1=length(y);

if (x1>y1)

y=[zeros(1,x1-y1),y];

else

x=[zeros(1,y1-x1),x];

end

switch s

case '+'

z=x+y;

case '-'

z=x-y;

case '*'

z=conv(x,y);

case '/'

z=deconv(x,y);

end

>> a=[1 3 5 7];b=[3 6 9];z=polycal(x,y,'+')

z =

1 4 6

>> a=[1 3 5 7];b=[3 6 9];z=polycal(x,y,'-')

z =

1 0 0

>> a=[1 3 5 7];b=[3 6 9];z=polycal(x,y,'*')

z =

0 2 7 12 9

实验要求:

记录命令代码或函数代码和输出结果。

实验七:MATLAB常用函数库-多项式函数库(2)和数值积分函数库

实验目的:

1. 掌握利用多项式求值函数polyval求系统频率特性的方法。

2. 熟悉多项式拟和函数polyfit的使用。

3. 熟悉线性微分方程的求解和求系统响应的方法。

4. 熟悉非线性函数的分析和fplot、fmin、fzero函数调用。

实验内容:

1. 已知系统传递函数,不使用freqs函数求系统幅频特性和相频特性曲线,横轴采用半对数坐标。

b=[1];

a=[1,1];

omg=logspace(-2,4);

H=polyval(b,j*omg)./polyval(a,j*omg);

subplot(2,1,1);semilogx(omg,abs(H));

xlabel('幅频特性');

subplot(2,1,2);semilogx(omg,angle(H));

xlabel('相频特性');

2. 一组原始数据为学生的序号和身高,存放在datt.mat文件中。拟和多项式次数为

n=1,2,4,7,9,10,使用循环编写程序作2*3=6幅子图,用红色圆圈标注原始数据点,用兰色实线绘制拟和曲线,横轴标注n的取值。

clear all;close all;

load datt;

x=data(:,1);

y=data(:,2);

M=[1 2 4 7 9 10]

xi=linspace(1,10,10);

for n=1:6

a=polyfit(x,y,M(n));

yi=polyval(a,xi);

subplot(2,3,n);

plot(x,y,'ro',xi,yi,'b');

xlabel(M(n));

end

3. 已知描述系统的微分方程如下:不使用impulse和step函数求输入为单位冲激信号和单位阶跃信号时系统响应的数值解,并出t在[0,6]区间的响应曲线。(提示:使用循环语句求数值解)

clear all;close all;

a=[1 3 2];

b=[1 3];

[r,p,k]=residue(b,a);

t=0:0.1:6;

yi=0;

for n=1:length(r)

yi=yi+r(n)*exp(p(n)*t);

end

subplot(1,2,1)

plot(t,yi);

a=[1 3 2 0];

b=[1 3];

[r1,p1,k1]=residue(b,a);

ys=0;

for m=1:length(r1)

ys=ys+r1(m)*exp(p1(m)*t);

end

subplot(1,2,2);

plot(t,ys);

4. 设,画出它在x=[0,4]区间内的曲线,求出它的过零点和两个过零点之间极小值的数值。clear all;close all;

f=inline('x.^3-2.*x.^2.*sin(x)+5.*x.*cos(x)+1./x')

fplot(f,[0,4])

z1=fzero(f,1)

z2=fzero(f,3)

min=fminbnd(f,1,3)

z1 =

1.5117

z2 =

2.6095

min =

2.1589

实验要求:

记录命令代码或函数代码和输出结果,有图形输出的要绘图。

实验八:MATLAB常用函数库-数值积分函数库和字符串函数库

实验目的:

1. 熟悉任意函数的数值积分使用quad和ode23函数。

2. 掌握字符串的赋值、执行eval函数。

3. 掌握字符串输入输出sprintf函数。

4. 熟悉字符串与数的转换函数num2str和字符串的串接。

实验内容:

1. 设,求此曲线在x轴上方第一块所围的面积的大小。

y=inline('x.^3-2.*x.^2.*sin(x)+5.*x.*cos(x)+1./x');

fplot(y,[-5,1]);

grid;

z1=fzero(y,-1);

z2=fzero(y,-3);

s=quad(y,z2,z1)

s =

2.2794

2. 已知微分方程,若y(0)=1,求它在x=[0,5]区间内的数值积分,并画出曲线。

function T=m(x,y);

T=x.^2/y-x.*cos(y);

>> x=[0:0.1:5];

[x,y]=ode23('m',[0,5],1);

plot(x,y);

grid

3. 用for循环和eval语句实现y(n)=magic(n),(n=3,4,5),编写程序。

for n=3:5

eval('magic(n)');

end

ans =

8 1 6

3 5 7

4 9 2

ans =

16 2 3 13

5 11 10 8

9 7 6 12

4 14 1

5 1

ans =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

4. 用sprintf命令写出字符串“自然对数底数e=2.71828…”,e的值应该由MATLAB自动生成,其小数点后要显示20位。

s=sprintf('自然对数底数e=%.20f',exp(1));

disp(s);

自然对数底数e=2.71828182845904550000

5. 使用循环和sprintf命令编写exe75.m程序,生成如下九九乘法表

1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9

2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18

3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27

4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36

5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45

6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54

7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63

8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

for i=1:9

m=[];

for j=1:9

m=[m sprintf('%d*%d=%d',i,j,i*j)];

end

disp(m)

end

1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=9

2*1=22*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18

3*1=33*2=63*3=93*4=123*5=153*6=183*7=213*8=243*9=27

4*1=44*2=84*3=124*4=164*5=204*6=244*7=284*8=324*9=36

5*1=55*2=105*3=155*4=205*5=255*6=305*7=355*8=405*9=45

6*1=66*2=126*3=186*4=246*5=306*6=366*7=426*8=486*9=54

7*1=77*2=147*3=217*4=287*5=357*6=427*7=497*8=567*9=63

8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=648*9=72

9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

实验要求:

记录命令代码或函数代码和输出结果,有图形输出的要绘图

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全部实验及答案 实验一、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实验五分支结构程序设计答案

实验五分支结构程序设计 实验内容 (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)课后实验答案

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

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

实验二 MATLAB 矩阵分析与处理 1. 设有分块矩阵33322322E R A O S ?????? =? ??? ,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22 E R RS A O S +?? =???? 。 解: M 文件如下; 5. 下面是一个线性方程组: 1 231 1 12340.951110.673450.5211145 6x x x ?? ??????????????=??? ?????????????????? ? ch = 123d4e56g9

(1) 求方程的解。 (2) 将方程右边向量元素b 3改为0.53再求解,并比较b 3的变化和解的相对变化。 (3) 计算系数矩阵A 的条件数并分析结论。 解: M 文件如下: 实验三 选择结构程序设计 1. 求分段函数的值。 2226035605231x x x x y x x x x x x x ?+-<≠-? =-+≤<≠≠??--? 且且及其他 用if 语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。 解:M 文件如下:

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、求以下变量的值,并在MATLAB中验证。( 1 ) a = 1 : 2 : 5 a = 1 3 5 ( 2 ) b = [ a' , a' , a' ;a ] b = 1 1 1 3 3 3 5 5 5 1 3 5 ( 3 ) c = a + b ( 2 , : ) c = 4 6 8 2、下列运算是否合法,为什么?如合法, 结果是多少? >> result2=a*b Error using * Inner matrix dimensions must agree. >> result3=a+b result3 = 3 6 2 5 8 11 >> result4=b*d result4 = 31 22 22 40 49 13 >> result5=[b;c']*d result5 = 31 22 22 40 49 13 -5 -8 7 >> result6=a.*b result6 = 2 8 -3 4 1 5 30 >> result7=a./b result7 = 0.5000 0.5000 -3.0000 4.0000 1.6667 1.2000>> result8=a.c Attempt to reference field of non-structure array. >> result9=a.\b result9 = 2.0000 2.0000 -0.3333 0.2500 0.6000 0.8333 >> result10=a.^2 result10 = 1 4 9 16 25 36 >> result11=2.^a result11 = 2 4 8 16 32 64 3、用MATLAB求解下面的的方程组。 (1) ? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - 1 7 4 13 2 3 1 5 11 2 2 2 3 15 9 2 1 2 7 4 3 2 1 x x x x >> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13] >> B=[4 7 -1 0] >> B=B' >> x=inv(A)*B (2) ? ? ? ? ? ? ? = - + + = - - = - + + = + + 5 6 5 3 3 3 3 2 8 2 1 w z y x w y x w z y x z y x >> A1=[1 1 1 0;1 2 1 -1;2 -1 0 -3;3 3 5 -6] >> B2=[1;8;3;5] >> x2=inv(A1)*B2 4、已知 ? ? ? ? ? ? ? ? ? ? ? ? - - - - = 13 2 3 1 5 11 2 2 2 3 15 9 2 1 2 7 A

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实验四及其答案

实验四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 =

河南城建学院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实验内容答案

实验报告说明: 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 工作环境熟悉及简单命令的执行 一、实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单 (Menu )、工具条 (Toolbar )、命令窗口(Command Window)、历史命令窗口、工作 空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。 三、实验步骤: 1、启动MATLAB ,熟悉MATLAB 的桌面。 2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-52?2-70)÷3 >>(365-52*2-70)/3 ans = 63.6667 (2)>>area=pi*2.5^2 area = 19.6350 (3)已知x=3,y=4,在MATLAB 中求z : () 2 3 2y x y x z -= >>x=3 >>y=4 >>z = x ^2 * y ^3 / (x - y) ^2 z = 576 (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。 m1=???? ? ???? ???11514412679810115133216 执行以下命令 >>m1 =[16 2 3 13 ; 5 11 10 8 ; 9 7 6 12 ; 4 14 15 1 ] >>m1( 2 , 3 ) ans = 10 >>m1( 11 ) ans = 6 >>m1( : , 3 ) ans =3 10 6 15 >>m1( 2 : 3 , 1 : 3 ) ans =5 11 10 9 7 6 >>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) ans = 34 (5)执行命令>>help abs

Matlab数学实验一2015(标准答案版)

Matlab数学实验一——matlab初体验 一、实验目的及意义 [1] 熟悉MATLAB软件的用户环境; [2] 了解MATLAB软件的一般目的命令; [3] 掌握MATLAB数组操作与运算函数; 通过该实验的学习,使学生能熟悉matlab的基础应用,初步应用MATLAB软件解决一些简单问题。 二、实验内容 1.认识matlab的界面和基本操作 2.了解matlab的数据输出方式(format) 3. MATLAB软件的数组(矩阵)操作及运算练习; 三、实验任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→原理→算法与编程→计算结果或图形→心得体会) 完成如下题目,并按照实验报告格式和要求填写实验报告 1.在commandwindow中分别输入如下值,看它们的值等于多少,并用matlab的help中查询这些缺省预定义变量的含义,用中文写出它们的意义。 ijeps inf nan pi realmaxrealmin 2.分别输入一个分数、整数、小数等,(如:a=1/9),观察显示结果,并使用format函数控制数据的显示格式,如:分别输入format short、format long、format short e、format long g、format bank、format hex等,然后再在命令窗口中输入a,显示a的值的不同形式,并理解这些格式的含义。 3.测试函数clear、clc的含义及所带参数的含义(利用matlab的help功能)。 4. 写出在命令窗口中的计算步骤和运行结果。 (1)计算 1.22 10 (ln log) 81 e ππ +- ; >>(log(pi)+log(pi)/log(10)-exp(1.2))^2/81 >>ans = 0.0348 (2) >> x=2;y=4; >> z=x^2+exp(x+y)-y*log(x)-3 z = 401.6562 (3)输入变量 13 5.3, 25 a b ?? ==?? ?? ,在工作空间中使用who,whos,并用save命令将变量存入”D:\exe0 1.mat”文件。测试clear命令,然后用load命令将保存的”D:\exe01.mat”文件载入>> a=5.3 a=

实验三MATLAB程序设计并且附有答案

实验三(1)、MATLAB程序设计 一、实验目的 1、掌握建立和执行M文件的方法 2、掌握利用if语句和switch语句实现选择结构的方法 二、实验内容及步骤 1、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。 其中90分~100分为A,80分~89分为B,70分~79为C, 60分~69分为D,60分以下为E。 要求:1)分别用if语句和switch语句实现a=input('please input the score:'); if mod(a,==0 &a>=0&a<=100; switch (floor(a/10)) case 9 disp('A'); case 8 disp('B'); case 7 disp('C'); case 6 disp('D'); otherwise disp('E'); end else disp('输入的成绩不合理') end double x; x=input('Input x please:'); if mod(x,~=0 || x>100 || x<0 disp('ê?è?μ?3é?¨2?o?àí'); elseif x>=90 & x<=100 disp('A'); elseif x>=80 & x<=89 disp('B'); elseif x>=70 & x<=79 disp('C'); elseif x>=60 & x<=69 disp('D'); elseif x>=0 & x<60

disp('E'); end 2)对不合理的成绩应输出出错信息“输入的成绩不 合理”(若成绩出现小数,则只能是“.5”) 2、设计程序,完成两位数的加、减、乘、除四则运算,即产 生两个两位随机整数,再输入一个运算符号,做相应的运 算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。 x=randint(1,1,[10 99]);或者x=round(rand(1)*100) y=randint(1,1,[10 99]);或者y=round(rand(1)*100) disp(['x=',num2str(x)]); disp(['y=',num2str(y)]); A=input('请输入一个运算符号:','s'); %书上114页有说明switch(A) case '+' a=x+y; disp(['a=x+y=',num2str(a)]); case '-' a=x-y;disp(['a=x-y=',num2str(a)]); case '*' a=x*y;disp(['a=x*y=',num2str(a)]); case '/' a=x/y;disp(['a=x/y=',num2str(a)]); end 3、求下列分段函数的值 2 2 2 6,0 56, 1, y χχχχ χχχχχ χχ ?+-<≠ ? =-+≤≠≠? ?-- ? 且-3 0<10,2且3 其他 要求:用if语句实现,分别输出x = ,,,,,,时的y值。其中

Matlab习题与答案

实验二二维/三维数据的可视化 一、实验目的 熟悉掌握简单的图形绘制函数;掌握MATLAB常用的二维、三维图形及其他图形绘制函数的使用方法;熟悉图形句柄的使用。 二、实验环境 硬件环境:计算机一台 软件环境:Matlab 6.0 三、实验内容 作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供了大量的二维、三维图形函数。由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面即常方便又高效。 1、二维绘图 (1)plot函数 函数格式:plot(x,y) 其中x和y为坐标向量 函数功能:以向量x、y为轴,绘制曲线。 例1 在区间0≤X≤2 ,绘制正弦曲线Y=SIN(X),其程序为: x=0:pi/100:2*pi; y=sin(x); plot(x,y) 例2同时绘制正、余弦两条曲线Y1=SIN(X)和Y2=COS(X),其程序为:x=0:pi/100:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2) plot函数还可以为plot(x,y1,x,y2,x,y3,…)形式,其功能是以公共向量x为X 轴,分别以y1,y2,y3,…为Y轴,在同一幅图内绘制出多条曲线。 例3 用不同线型和颜色重新绘制Y1=SIN(X)和Y2=COS(X),其程序为:x=0:pi/100:2*pi; y1=sin(x); y2=cos(x);

plot(x,y1,'go',x,y2,'b-.') 其中参数'go'和'b-.'表示图形的颜色和线型。g表示绿色,o表示图形线型为圆圈;b表示蓝色,-.表示图形线型为点划线。 在绘制图形的同时,可以对图形加上一些说明,如图形名称、图形某一部分的含义、坐标说明等,将这些操作称为添加图形标记。 title(‘加图形标题'); xlabel('加X轴标记'); ylabel('加Y轴标记'); text(X,Y,'添加文本'); 例4 在坐标范围0≤X≤2π,-2≤Y≤2内重新绘制正弦曲线,其程序为: x=linspace(0,2*pi,60);生成含有60个数据元素的向量X y=sin(x); plot(x,y); axis ([0 2*pi -2 2]);设定坐标轴范围 2、subplot函数 (1)subplot(m,n,p) 该命令将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。 例5 在一个图形窗口中同时绘制正弦、余弦、正切、余切曲线,程序为:x=linspace(0,2*pi,60); y=sin(x); z=cos(x); t=sin(x)./(cos(x)+eps); eps为系统内部常数 ct=cos(x)./(sin(x)+eps); subplot(2,2,1); 分成2×2区域且指定1号为活动区 plot(x,y); title('sin(x)'); axis ([0 2*pi -1 1]); subplot(2,2,2); plot(x,z); title('cos(x)'); axis ([0 2*pi -1 1]); subplot(2,2,3); plot(x,t); title('tangent(x)'); axis ([0 2*pi -40 40]);

Matlab实验四答案

实验四采用SIMULINK的系统仿真 一、实验目的: 1、熟悉SIMULINK 工作环境及特点 2、掌握线性系统仿真常用基本模块的用法 3、掌握SIMULINK 的建模与仿真方法 4、子系统的创建和封装设计 二、实验基本知识: 1.了解SIMULINK模块库中各子模块基本功能

2. SIMULINK 的建模与仿真方法 (1)打开模块库,找出相应的模块。鼠标左键点击相应模块,拖拽到模型窗口中即可。(2)创建子系统:当模型大而复杂时,可创建子系统。 (3)设置仿真控制参数。 三、实验容

练习A 1.SIMULINK 仿真实际应用 (1) 双环调速的电流环系统的方框图模型为: 图中参数设为 Ks=44;Ts=0.00167;Ta=0.017;R=1;Tm=0.075;Ce=0.1925;Kt=0.01178;T1=0.049;T2=0.088, (1)在Simulink 集成环境下建立模型,在给定信号作用点处输入单位给定阶跃响应信号,0.3秒后在扰动信号点输入单位阶跃响应信号。并绘制相应的响应曲线 (2)计算仿真结果的超调量、上升时间、调节时间、稳态误差。 (3)设计PID 调节器替代图中的比例积分调节器,调节P K , i T ,d T 用使系统满足超调量15%,上升时间0.3s ,调节时间0.4s 的要求。 (4)要求对加入的PID 控制器封装成一个模块使用 Gain3

To Work s pace Warning: Unable to reduce the step size without violating minimum step size of 1.015e-015 at time 0.0001. Continuing simulation with the step size restricted to 1.015e-015 and using an effective relative error tolerance of 0., which is greater than the specified relative error tolerance of 0.001. >> wentai=y(end) chaotiao=100*(max(y)-wentai)/wentai INDEXtm=find(max(y)==y); Tm=t(INDEXtm) ; TT=t(find((abs(y-wentai)/wentai)>0.05)); Ts=max(TT) m=length(y);

MATLAB程序设计与应用(第二版)实验参考答案1

MATLAB程序设计与应用(第二版)实验参考答案 %实验一MATLAB运算基础 %第一题 %(1) z1=2*sin(85*pi/180)/(1+exp(2)) %(2) x=[2,1+2i;-0.45,5]; z2=0.5*log(x+sqrt(1+x.^2)) %(3) a=-3.0:0.1:3.0; z3=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2) %(4) t=0:0.5:2.5; z4=t.^2.*(t>=0&t<1)+(t.^2-1).*(t>=1&t<2)+(t.^2-2*t+1).*(t>=2&t<3) %第二题 A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; A+6*B A-B+eye(size(A)) A*B A.*B A^3 A.^3 A/B B\A [A,B] [A([1,3],:);B^2] %第三题 A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25] B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11] C=A*B F=size(C) D=C(F(1)-2:F(1),F(2)-1:F(2)) whos %第四题 %(1): A=100:999; B=rem(A,21); C=length(find(B==0)) %(2):

A='lsdhKSDLKklsdkl'; k=find(A>='A'&A<='Z'); A(k)=[] %实验二MATLAB矩阵分析与处理%第一题 E=eye(3); R=rand(3,2); O=zeros(2,3); S=diag([2,3]); A=[E,R;O,S]; A^2 B=[E,(R+R*S);O,S^2] %第二题 H=hilb(5) P=pascal(5) Hh=det(H) Hp=det(P) Th=cond(H) Tp=cond(P) %第三题: A=fix(10*rand(5)) H=det(A) Trace=trace(A) Rank=rank(A) Norm=norm(A) %第四题: A=[-29,6,18;20,5,12;-8,8,5] [V,D]=eig(A) %数学意义略 %第五题方法一: %(1): A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6]; b=[0.95,0.67,0.52]'; x=inv(A)*b %(2): B=[0.95,0.67,0.53]'; x=inv(A)*B %(3): cond(A) %第五题方法二: A=hilb(4) A(:,1)=[]

相关文档