matlab实验报告

时间:2024.4.21

MATLAB教程及实训

实验报告

班级:10级专升本

学号:1010211021   

姓名:赵玉莉    

实验1  熟悉matlab的开发环境及矩阵操作

一、实验的教学目标

通过本次实验使学生熟悉MATLAB7.0的开发环境,熟悉MATLAB工作界面的多个常用窗口包括命令窗口、历史命令窗口、当前工作目录窗口、工作空间浏览器窗口等。掌握建立表达式书写规则及常用函数的使用,建立矩阵的几种方法。

二、实验环境

计算机、MATLAB7.0集成环境

三、实验内容

1熟悉命令窗口的使用,工作空间窗口的使用,工作目录、搜索路径的设置。命令历史记录窗口的使用,帮助系统的使用。(P288-298页)

2在当前命令窗口中输入以下命令:x=0:2:10   y=sqrt(x)  要求用format命令将x和y显示为指数的形式。

>> x=0:2:10

x =

     0     2     4     6     8    10

>> format short e

>> x

x =

     0     2     4     6     8    10

>> y=sqrt(x)

y =

            0  1.4142e+000  2.0000e+000  2.4495e+000  2.8284e+000  3.1623e+000

>> format short e

y

y =

            0  1.4142e+000  2.0000e+000  2.4495e+000  2.8284e+000  3.1623e+000

3在当前命令窗口中输入以下命令:a=[1 2;3 4]    b=[1 1;2 2]

要求将两个变量保存到exe1.mat文件中,并将两行命令保存为exe1.m文件,使用which命令查看文件信息,将exe1.m文件设置到搜索路径后,在命令窗口中运行exe1文件。

>> a

a =

     1     2

     3     4

>> b

b =

     1     1

     2     2

>> save exel a b

4求下列表达式的值(1)w=  

>> w=sqrt(2)*(1+0.34245*10e-6)

w =

    1.4142

(2)x=,其中a=3.5,b=5,c=-9.8

>> x=(2*pi*3.5+(5+(-9.8))/(pi+3.5*5*(-9.8))-eps*eps)/(tan(5-9.8)+3.5)

x =

    1.4793

5、A=[7 1 5 2;2 5 6 9; 3 1 5 10], B=[3 4 5;1 2 3; 8 7 6],在命令窗口中执行下列表达式,掌握其含义。(1) A(2,3)  A(:,2)    A(2,:)  A(:,1:2:3)   A(4) A(1:2,2:3)  A(end,:)  A([4;5;6]) A(2,[1 2 3])  A([1 3],:)

(2) 如何将矩阵A和B合并成一个新的矩阵?如何删除矩阵B的最后一行元素,倒数第二列元素?

>> A=[7 1 5 2;2 5 6 9;3 1 5 10]

A =

     7     1     5     2

     2     5     6     9

     3     1     5    10

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

B =

     3     4     5

     1     2     3

     8     7     6

>> A(2,3)

ans =

     6

>> A(:,2)

ans =

     1

     5

     1

>> A(2,:)

ans =

     2     5     6     9

>> A(:,1:2:3)

ans =

     7     5

     2     6

     3     5

>> A(4)

ans =

     1

>> A(1:2,2:3)

ans =

     1     5

     5     6

>> A(end,:)

ans =

     3     1     5    10

>> A([4;5;6])

ans =

     1

     5

     1

>> A(2,[1 2 3])

ans =

     2     5     6

>> A([1 3],:)

ans =

     7     1     5     2

     3     1     5    10

>> C=[A B]

C =

     7     1     5     2     3     4     5

     2     5     6     9     1     2     3

     3     1     5    10     8     7     6

>> B(3,:)=[]

B =

     3     4     5

     1     2     3

>> B(:,2)=[]

B =

     3     5

     1     3

四、实验总结

1,熟悉了命令窗口的使用,工作空间窗口的使用。

2, 了解了工作目录、搜索路径的设置方法。


实验2 MATLAB基本运算

一、实验的教学目标

通过本次实验使学生掌握向量和矩阵的创建方法;掌握矩阵和数组的算术运算、逻辑运算和关系运算;掌握字符数组的创建和运算;了解创建元胞数组和结构体的方法。

二、实验环境

计算机、MATLAB7.0集成环境

三、实验内容

1、创建3阶魔方矩阵a和3阶对角阵b,c=a(1:3,1:3)

>>a=magic(3)

a =

     8     1     6

     3     5     7

     4     9     2

>> b=eye(3)

b =

     1     0     0

     0     1     0

     0     0     1

>> c=a(1:3,1:3)

c =

     8     1     6

     3     5     7

     4     9     2

(1)计算矩阵a,b和c的行列式、逆矩阵并进行最大值的统计。

>> det(a)

ans =

  -360

>> det(b)

ans =

     1

>> det(c)

ans =

  -360

>> inv(a)

ans =

    0.1472   -0.1444    0.0639

   -0.0611    0.0222    0.1056

   -0.0194    0.1889   -0.1028

>> inv(b)

ans =

     1     0     0

     0     1     0

     0     0     1

>> inv(c)

ans =

    0.1472   -0.1444    0.0639

   -0.0611    0.0222    0.1056

   -0.0194    0.1889   -0.1028

>> max(a)

ans =

     8     9     7

>> max(b)

ans =

     1     1     1

>> max(c)

ans =

     8     9     7

(2)比较矩阵和数组的算术运算:b和c的*、/、^和.*、./、.^,以及exp和expm函数。

>> b*c

ans =

     8     1     6

     3     5     7

     4     9     2

>> b/c

ans =

    0.1472   -0.1444    0.0639

   -0.0611    0.0222    0.1056

   -0.0194    0.1889   -0.1028

>> b^c

??? Error using ==> ^

At least one operand must be scalar.   (当b为方阵时:c为矩阵时不能运算,会出错。)

>> b.*c

ans =

     8     0     0

     0     5     0

     0     0     2

>> b./c

ans =

    0.1250         0         0

         0    0.2000         0

         0         0    0.5000

>> b.^c

ans =

     1     0     0

     0     1     0

     0     0     1

>> exp(b)

ans =

    2.7183    1.0000    1.0000

    1.0000    2.7183    1.0000

    1.0000    1.0000    2.7183

>> exp(c)

ans =

  1.0e+003 *

    2.9810    0.0027    0.4034

    0.0201    0.1484    1.0966

    0.0546    8.1031    0.0074

>> expm(b)

ans =

    2.7183         0         0

         0    2.7183         0

         0         0    2.7183

>> expm(c)

ans =

  1.0e+006 *

    1.0898    1.0896    1.0897

    1.0896    1.0897    1.0897

    1.0896    1.0897    1.0897

2 、已知字符串s=’hello’

(1)将s逆序排列输出

>> s='hello'

s =

hello

>> n=length(s)

n =

     5

>> ss=[s(n),s(n-1),s(n-2),s(n-3),s(n-4)]

ss =

olleh

(2)使用str2num函数转换字符串s,查看结果。

>> str2num('hello')

ans =

     []

>> str2num(s)

ans =

     []

3、已知A={zeros(2,2,2),’hello’;17.35,int16(1:10)},比较B=A(1,2) 和C=A{1,2}的区别。

>> A={zeros(2,2,2),'hello';17.35,int16(1:10)}

A =

    [2x2x2 double]    'hello'    

    [     17.3500]    [1x10 int16]

>> B=A(1,2)

B =

    'hello'

>> C=A{1,2}

C =

Hello

四、实验总结

1,掌握了向量和矩阵的创建方法。

2,掌握矩阵和数组的算术运算、逻辑运算和关系运算。


实验三 数据的可视化

一、实验的教学目标

通过本次实验使学生掌握基本二维绘图函数plot;掌握在图形中添加文字等修饰;掌握绘制三维曲线图、三维网线图和三维表面图的方法。

二、实验环境

计算机、MATLAB7.0集成环境

三、实验内容

1、绘制[0,2]区间内的一条正弦曲线,采用线条宽度为2的蓝色点画线,标记为边缘红色,填充绿色,大小为12像素的五角星。图如下所示:

x=0:0.1:2*pi

y=sin(x)

plot(x,y,'b-.p')

  

 

2、在三个子坐标轴中分别显示三条曲线:上面两个坐标轴显示正弦曲线,且第一个无网格,第二个有网格,第三个坐标轴显示余弦曲线,且显示网格。图如下

>> x=0:0.2:2*pi;

>> subplot(2,2,1)

>> plot(x,sin(x))

>> subplot(2,2,2)

>> plot(x,sin(x))

>> grid on

>> subplot(2,2,[3,4])

>> plot(x,cos(x))

>> grid on

3、格式化绘图,要求标注图形标题,文本注释,轴标签和图例。在一个图形窗体中绘制正弦函数sin(x)和指数函数 , 图如下所示。

第3题                          第4题

>> x=0:0.1:2*pi;

>> y=exp(-x);

>> plot(x,y,'rp','markerfacecolor','r')

>> hold on

>> z=sin(x);

>> plot(x,z,'b-')

>> hold on

>> x=0:0.1:2*pi;

>> y=exp(-x);

>> plot(x,y,'rp','markerfacecolor','r')

>> hold on

>> z=sin(x);

>> plot(x,z,'b-')

>> gtext('2-D plots')

>> gtext('sin(t)')

>>  gtext('sin(\pi/3)')

4、用三维表面图绘制,利用surfc命令来绘制三维表面图并加等高线,图如下所示。

>> x=-4:4;

>> [x,y]=meshgrid(x);

>> z=5*x.^2-y.^2;

>> surfc(x,y,z)

四、实验总结

1,掌握基本二维绘图函数plot。

2,掌握MATLAB图形窗口的功能。


实验四 符号运算

一、实验的教学目标

    通过本次实验,要求学生熟练掌握符号对象的创建,符号表达式的化简,符号表达式的微分、积分和极限,符号方程的求解。

二、实验环境

计算机、MATLAB7.0集成环境

三、实验内容

1、要求用两种方法创建符号表达式:

>> syms a b x y t

>> f=a*(2*x-t)^3+b*sin(4*y)

f =

a*(2*x-t)^3+b*sin(4*y)

>> f2=sym('a*(2*x-t)^3+b*sin(4*y)')

f2 =

a*(2*x-t)^3+b*sin(4*y)

2、创建符号表达式 :,将符号表达式化简成合并同类项、因式分解和嵌套的形式。

>> f=sym('x^3+5*x^2+7*x+3')

f =

x^3+5*x^2+7*x+3

>> g1=collect(f)

g1 =

x^3+5*x^2+7*x+3

>> g12=factor(f)

g12 =

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

>> g2=horner(f)

g2 =

3+(7+(5+x)*x)*x

3、创建两个符号表达式 :

(1)计算符号表达式f当x->1、 y->1的极限;

>> syms x y

>> f=(x^2+y^2)^(x*y)

f =

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

>> fxy=limit(limit(f,'y',1),'x',1)

fxy =

2

(2)计算符号表达式g的一阶微分和一重不定积分。

>> g=(1+sin(x))/1+cos(x)

g =

1+sin(x)+cos(x)

>> gdf1=diff(g)

gdf1 =

cos(x)-sin(x)

>> gint=int(g)

gint =

x-cos(x)+sin(x)

 

4、分别求符号方程的解:

 

(3)

(1) >> syms x

>> eqn='33.6*x^4-22.12*x+101.3=0'

eqn =

33.6*x^4-22.12*x+101.3=0

>> x=solve(eqn)

x =

[ -.93414589926892917083301037789686-1.0241164280845785484550700020173*i]

[ -.93414589926892917083301037789686+1.0241164280845785484550700020173*i]

[  .93414589926892917083301037789686-.83453140382444385548175136291714*i]

[  .93414589926892917083301037789686+.83453140382444385548175136291714*i]

(2)>> syms x y

>> eqn1='x+y=p';

>> eqn2='x*y=q';

>> [x,y]=solve(eqn1,eqn2)

x =

[ 1/2*p-1/2*(p^2-4*q)^(1/2)]

[ 1/2*p+1/2*(p^2-4*q)^(1/2)]

y =

[ 1/2*p+1/2*(p^2-4*q)^(1/2)]

[ 1/2*p-1/2*(p^2-4*q)^(1/2)]

(3)>> [x,y]=dsolve('2*Dx-4*x+Dy-y=exp(t),Dx+3*x+y=0','x(0)=3/2','y(0)=0')

x =

2*cos(t)-4*sin(t)-1/2*exp(t) 

y =

14*sin(t)-2*cos(t)+2*exp(t)

四、实验总结

1,  通过本次实验,熟练掌握了符号对象的创建,多项式符号表达式的化简。

2, 符号表达式的微分、积分和极限,符号方程的求解。


实验五 程序设计和M文件

一、实验的教学目标

1、熟练运用M文件编辑/调试窗口中调试程序的方法

2、熟悉与函数相关的知识

3、熟练掌握分支结构、循环结构。

二、实验环境

计算机、MATLAB7.0集成环境

三、实验内容

1、编写程序,计算 2+4+6+8+…+(2n)的值(用 input 语句输入 n 的值, 用for语句实现)。

sum=0;

n=input('input n:');

for i=2:2:2*n

       sum=sum+i;

 end

sum

运行结果

input n:5

sum =

    30

2、利用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于(用while语句来实现)

sum=1;

i=1;

j=1;

while 1

    sum=sum+(1/(2*j+1)*(-i));

    i=-i;

    j=j+1;

    if abs(1/(2*j+1)*(-i))<abs(10^(-4))

         break;

     end   

end

pi=sum*4;

pi

运行结果

pi =

    3.1414

3、费波那契(fibonacci)数列:1 、1、2、 3、 5、 8、 13、 21、…

其递推公式为:  

编程实现求n项的费波那契数列的函数。(要求:在命令行窗体中,调用求解n项的费波那契数列得函数)

function y=fibonacci(n)

 a1=1;

 a2=1;

if (n<=2)

  str=['the xulie:',num2str(a1)];

  disp(str);

   str1=['the xulie:',num2str(a2)];

  disp(str1); 

else

  str=['the xulie:',num2str(a1)];

  disp(str);

   str1=['the xulie:',num2str(a2)];

  disp(str1); 

   for i=3:n

   y=a1+a2;

   a2=y;

   a1=a2;

  str3=['the xulie:',num2str(y)];

  disp(str3);

  end

end

四、实验总结

1,熟练运用M文件编辑/调试窗口中调试程序的方法。

2,熟悉与函数相关的知识。


实验六   程序设计和M文件(2)

一、实验的教学目标

熟练运用M文件编辑/调试窗口中调试程序的方法,熟悉与函数相关的知识,熟练掌握分支结构、循环结构。

二、实验环境

计算机、MATLAB7.0集成环境

三、实验内容

1、给定三个边长,看看它们是否能够组成一个三角形。

(编写M文件,输入为三个边长,而输出则为字符串,说明给定的边长是否能够组成三角形,若可能,可以进一步指出是否为等腰三角形。)

    a=input('input a=');

b=input('input b=');

c=input('input c=');

if((a+b>c&&a-b<c)&&(a+c>b&&a-c<b)&&(b+c>a&&b-c<a))

str='能够组成三角形'

disp(str)

       if(a==b||a==c||b==c)  

           str='等腰三角形'

       disp(str)

if(a==b&&a==c||a==b&&b==c)

str='等边三角形'

      disp(str)

end

else

      str='不能够组成三角形'

disp(str)

end

2、编写函数文件myfunc.m,任意输入一个正整数,如果是偶数,用2除,如果是奇数,用3乘再加1,反复这个过程,知道所得到的数为1,将依次得到的这个数列。(数列中包括输入的正整数)。

a=input(‘input a=’)

str=[‘数列是:’,num2str(a)]

disp(str)

x=a

while(x~=1)

    if rem(x,2)==0 x=x/2 str=[num2str(x)] disp(str)

    else  x=x*3+1  str=[num2str(x)] disp(str)

end

end

四、实验总结

1,熟悉与函数相关的知识,熟练掌握分支结构、循环结构。

2,主函数与子函数的调用。

实验7 图形用户界面设计(GUI)

一、实验目的

使用GUIDE编辑器编辑GUI,要分别编辑两个文件:一个是fig文件,包含了GUI对象的属性设置及其布局信息;另一个是M文件,包含了控制GUI 对象执行的回调函数。图形用户界面设计包括两个步骤,(1)GUI对象属性设置与布局;(2)编辑回调函数。

二、实验内容:

设计一个二进制与十进制相互转换的GUI界面,要求Edit text内输入正整数,当选中二进制时,该值转换为二进制,若选择为十进制,该值转换为十进制。

三、实验步骤:

(1)打开GUIDE编辑器,创建一个Edit text 和两个Radio Button 。设置属性:

a) Edit text

FontSize:10;HorizontalAlignment:right; String:0; Tag:num

b)第一个Radio Button

FontSize:10  ; String:binary;    Tag:bin

c)第二个Radio Button

FontSize:10  ; String:decimal;    Tag:dec; value:1

(2)编写回调函数,由十进制转换为二进制时,若文本框中输入非负数,先取整再转化;若文本框中输入非数或负数,提示“输入错误”。由二进制转换为十进制时,要求文本框中只能输入0和1,否则提示“输入错误”。

在Edit text对象上单击,选择View Callbacks|selectionChangeFcn,在该回调函数内编写如下代码:

str=get(handles.num,'string');

在第一个Radio Button对象上单击,选择View Callbacks|selectionChangeFcn,在该回调函数内编写如下代码:

switch get(hObject,'tag')

    case 'bin'

        val=floor(str2num(str));

        if (~isempty(val))&&(val>=0)

        set(handles.num,'string',dec2bin(val))

        else

          set(handles.num,'string','input error!') 

        end

    case'dec'

        if all(str=='0'|str=='1')

          set(handles.num,'string',num2str(bin2dec(str)))

        else

           set(handles.num,'string','input error!')

        end

end

在第二个Radio Button对象上单击,选择View Callbacks|selectionChangeFcn,在该回调函数内编写如下代码:

switch get(hObject,'tag')

    case 'bin'

        val=floor(str2num(str));

        if (~isempty(val))&&(val>=0)

        set(handles.num,'string',dec2bin(val))

        else

          set(handles.num,'string','input error!') 

        end

    case'dec'

        if all(str=='0'|str=='1')

          set(handles.num,'string',num2str(bin2dec(str)))

        else

           set(handles.num,'string','input error!')

        end

end

(3)保存GUI及其M文件,运行GUI。

 

四、实验总结

1,对GUI图形界面有了初步的了解,掌握了主要控件属性的设置。

2,了解编写回调函数的基本编程思想。

更多相关推荐:
matlab基本操作实验报告

实验一matlab基本操作一实验目的熟悉matlab的安装与启动熟悉matlab用户界面熟悉matlab功能建模元素熟悉matlab优化建模过程二实验设备与仪器1微机2matlab仿真软件三实验步骤1了解mat...

matlab实验报告

课程设计说明书(论文)题目带限数字基带传输系统的仿真课程名称Matlab通信仿真设计专业通信工程班级1203学生姓名徐xx学号2012xxxx20329指导教师文xx设计起止时间:20xx年12月18日至20x…

matlab音乐处理合成实验报告

MATLAB高级编程与工程应用语音合成综合实验姓名班级学号日期121简单的合成音乐1请根据东方红片断的简谱和十二平均律计算出该片断中各个乐音的频率在MATLAB中生成幅度为1抽样频率为8kHz的正弦信号表示这些...

东南大学几何与代数matlab实验报告

数学实验报告学号姓名吴雪松得分实验1求解线性方程组实验内容用MATLAB求解如下线性方程组Axb其中5100A00006510000006510000006510000006510000006510000006...

matlab实验报告

数学实验报告班级学号姓名实验序号1日期年月日实验名称特殊函数与图形问题背景描述绘图是数学中的一种重要手段借助图形可以使抽象的对象得到明白直观的体现如函数的性质等同时借助直观的图形使初学者更容易接受新知识激发学习...

Matlab实验报告一

数学与信息科学系实验报告实验名称程序设计所属课程数学软件与实验实验类型综合型实验专业信息与计算科学班级20xx级1班学号姓名指导教师1234567

matlab实验报告格式

数学实验报告实验序号:1日期:20XX年10月20日班级姓名学号实验名称:特殊函数与图形问题背景描述:绘图是数学中的一种重要手段,借助图形,可以使抽象的对象得到明白直观的体现,如函数的性质等。同时,借助直观的图…

matlab实验报告

MATLAB实验报告实验一MATLAB语言平台与SIMULINK工具箱一目的与任务1学习了解MATLAB语言环境2练习MATLAB命令4掌握SIMULINK工具箱的应用二内容与要求1实验内容1学习了解MATLA...

matlab实验报告

MATLAB实验报告1在区间11上分别取n1020用两组选中节点对龙格函数fx插值及三次样条插值对每个n值分别画出插值函数及fx的图形解n10在matlab命令窗口中键入gtgtx1021y1125x2y1in...

matlab实验报告

重庆交通大学学生实验报告实验课程名称专业综合实验开课实验室交通运输工程实验教学中心学院交通运输年级二年级专业班交通运输1班学生姓名学号63120xx20开课时间20xx至20xx学年第2学期

Matlab实验报告

程序设计训练报告题目学生姓名学生学号专业班级指导老师20xx年6月22日一实验名称用matlab处理基本运算与画图二实验目的1掌握二维曲线绘图的基本方法与命令2掌握一个窗口多个图形的画法分割子窗口的画法三实验说...

Matlab实验报告三(画二维图形与三维曲面)

数学与信息科学系实验报告实验名称所属课程数学软件与实验实验类型综合型实验专业信息与计算科学班级学号姓名指导教师1234567

matlab实验报告(13篇)