最近有很多同学问小编这样的问题,一个月的时间到底能不能掌握Matlab?首先小编非常理解大家焦灼的心情,同时也非常肯定的告诉大家:一个月的时间学习Matlab是肯定没有问题的。

那么今天就给大家分享的是数学建模MATLAB的入门级别的使用教程,主要包含在数学建模竞赛中的常用操作、数学与模型以及部分练习题的解析。希望可以帮助同学们在接下来的备赛中迅速掌握MATLAB。

一、常规操作

01

基本运算

PART2

MATLAB 内四则运算相当于计算机的加减乘除,对应输入数字、运算符,回车即可得出结果。例如:在命令行窗口直接输入:

1+2

回车可得到结果为:3

总体为:

>> 1+2

ans =

3

也可以进行相关的赋值操作,再进行运算,例如:

>> a=1;b=3;

c=a+b,d=a-b,e=a*b,f=a/b,g=b^a

回车可得到结果依次为:c=4,d=-2,e=3,f=0.3333,g=3。

(注:在MATLAB中分号“;”的使用不影响运算,但不显示该行运算结果)

02

函数的运用

MATLAB 内含有很多种函数包,从基本运算到各类操作均有涵盖,此处展示部分基本运算的函数,其余函数需要使用可自行查阅使用。

>> x=pi/4

i=sin(x)

j=sqrt(x)

以上为圆周率π、sin、开方的函数,回车即可得出结果,其余函数的使用大致方法相似,可自行查阅。

03

数组(向量)的输入

向量的输入可以有以下几种操作:

k=[1,2,3]

l=1:2:10 %1为首项,10为末项,公差为2(步长增长)

m=linspace(1,10,20) %首项末项之间平均生成20个数

即:直接输入、按照步长增长生成、使用均分计算函数生成

均分计算函数的用法:x=linspace(x1, x2, N)

功能:linspace(x1, x2, N)生成一个数组,首项为x1,末项为x2之间平均生成N个数

以上运算结果为:

k =

1 2 3

l =

1 3 5 7 9

m =

列 1 至 8

1.0000 1.4737 1.9474 2.4211 2.8947 3.3684 3.8421 4.3158

列 9 至 16

4.7895 5.2632 5.7368 6.2105 6.6842 7.1579 7.6316 8.1053

列 17 至 20

8.5789 9.0526 9.5263 10.0000

04

矩阵的输入

例如想要输入矩阵

可在命令行窗口输入:

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

>> [1,2,3;4,5,6;7,8,9]

>> [1 2 3

4 5 6

7 8 9]

以上为三种输入方式,均可得到相同的矩阵,按照各自喜好进行输入即可。

05

数量(向量)的相关运算

以下两数组(向量):

x=1 3 5 7 9

y=1.0000 3.2500 5.5000 7.7500 10.0000

相加:

>> x+y

ans =

2.0000 6.2500 10.5000 14.7500 19.0000

相减:

>> x-y

ans =

0 -0.2500 -0.5000 -0.7500 -1.0000

相加、相减即对应项相加、相减并依次输出即为最终结果。

(注:数组长度像等才可以相加减,否则会报错)

相乘:

>> x.*y

ans =

1.0000 9.7500 27.5000 54.2500 90.0000

此处相乘指的是点乘,对应项相乘,在传统的向量点乘中则是各项相乘再求和即:

传统向量点乘为:

>> z=x.*y

z =

1.0000 9.7500 27.5000 54.2500 90.0000

>> sum(z)

ans =

其他操作:

>> x+2

ans =

3 5 7 9 11

各项分别加2,再输出即为所得结果。

>> x.^2

ans =

1 9 25 49 81

对应各项分别平方。

(注:^和.^是有区别的,^是以矩阵为操作数的乘方,相当于A*A,此时要求矩阵A为方阵;.^是以矩阵中的每个元素为操作数的乘方)

06

矩阵的相关运算

以矩阵A、B为例,A=[1 2 3;4 5 6;7 8 9];B=[1 1 1; 2 2 2;3 3 3],

相加:

>> A+B

ans =

2 3 4

6 7 8

10 11 12

相减:

>> A-B

ans =

0 1 2

2 3 4

4 5 6

矩阵的相加减即对应项的相加减,这就要求矩阵的维度必须相同才能进行相加减。

矩阵相乘:

点乘

>> A.*B

ans =

1 2 3

8 10 12

21 24 27

星号乘

>> A*B

ans =

14 14 14

32 32 32

50 50 50

点乘为对应项相乘,星号乘即为线性代数中的矩阵相乘,对两矩阵的维度有一定的要求。

幂计算

>> A^2

ans =

30 36 42

66 81 96

102 126 150

>> A.^2

ans =

1 4 9

16 25 36

49 64 81

注意辨析^和.^,两个符号下所得的计算结果是不一样的。

(注:^和.^是有区别的,^是以矩阵为操作数的乘方,相当于A*A,此时要求矩阵A为方阵;.^是以矩阵中的每个元素为操作数的乘方)

07

矩阵、数组(向量)的相关操作

以矩阵A=[1 2 3;4 5 6;7 8 9]、数组x=1:2:10为例,进行相关操作

矩阵特定数值提取:

a1=A(2,2) %提取某一行某一列的特定数据

a2=A(2,:) %提取某一行

a3=A(:,1) %提取某一列

a4=A(:,1:2) %选择两列

a5=A(:,[1,3]) %选择1、3两列

a6=A([1,3],:) %选择1、3两行

a7=A([2,3],[2,3]) %提出矩阵的一部分2、3行、2、3列

以上分别为提取单个特定数据、提取单行、提取单列、选择两个连续列、选择两个特定列、选择两个特定行、提取矩阵某一分块,较大矩阵以此类推即可。

矩阵特定数据赋值:

A(3,2)=0 %3行2列数据赋值为0

A(:,1)=0 %第1列数据赋值为0

A(2,:)=0 %第2行数据赋值为0

A(:,1)=[] %清除第1列

A(1,:)=[] %清除第1行

以上分别为单个特定数据赋值、某一列赋值、某一行赋值、清除某一列、清除某一行,在进行其他较大数据时可依此类推进行操作。

相关计算:

b1=length(x)

b2=max(x)

b3=min(x)

b4=length(A)

b5=size(A) %针对行、列求其长度

b6=max(A) %矩阵内每一列的最大值

b7=min(A) %矩阵内每一列的最小值

b8=max(max(A)) %矩阵的最大值

以上为数组、矩阵相关最值的求法,其中b8为矩阵中所有元素的最大值,在其他大型矩阵中用法相同,照例使用即可。

二、M文件的使用

M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)

命令文件(Script File)

命令文件就是脚本文件,由一系列的MATLAB指令和命令组成的纯文本格式的M文件,执行脚本文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。脚本文件没有输入参数,也没有输出参数,脚本文件处理的数据或者变量必须在MATLAB的公共工作空间中。

例1:建立脚本文件计算10!

clear,clc

A=1

for i=1:10

A=A*i;

end

A

输出结果为:

A =

函数文件(Function File)

函数文件可以包含输入变量,并把结果传送给输出变量,函数文件是在脚本文件的基础之上多添加了一行函数定义行,常用于扩充MATLAB函数库、可以包含输入、输出变量、运算中生成的所有变量都存放在函数工作空间、包含函数声明行。

例2:建立一个函数文件,定义阶乘函数,然后在命令窗口计算10!。

function A=jiecheng(n)

A=1;

for k=1:n

A=A*k;

end

计算10!,结果为:

>> A=jiecheng(10)

A =

三、利用MATLAB作图

PART4

图像是结果的一种可视化表现,它能直观的体现你的结果,并且能体现你获得结果的准确性,在当前的大数据时代,在做数据分析的时候,将其可视化可以直观多维的展示数据,可以让人们更好的发现并且记住数据的特征,因此很多时候掌握一些绘图方法是非常重要的,而使用MATLAB可以非常简单的进行绘图,以下为简单的作图命令及代码。

直接上例题:

例3:在同一个坐标系内,做出函数y1=sinx,y2=x,y3=x-x^3/3!,y4=x-x^3/3!+x^5/5!,y5=x-x^3/3!+x^5/5!-x^7/7!的图像,并标注图像名称。

clear,clc

x=-2*pi:0.01:2*pi;

y1=sin(x);

y2=x

y3=x-(x.^3)/factorial(3);

y4=x-(x.^3)/factorial(3)+(x.^5)/factorial(5);

y5=x-(x.^3)/factorial(3)+(x.^5)/factorial(5)-(x.^7)/factorial(7);

plot(x,y1,x,y2,x,y3,x,y4,x,y5); %plot函数绘图

title('函数图像'); %显示图像标题

text(0.2,0.8,'y1=sinx'); %在点(0.2,0.8)处标注显示y1=sinx

legend('y1','y2','y3','y4','y5'); %给出y1,y2,y3,y4,y5的图例

输出图像为:

打开网易新闻 查看精彩图片

例2:在同一个图像幕布内,按照2*3做出函数y=sinx,y1=x,y2=x-x^3/3!,y3=x-x^3/3!+x^5/5!,y4=x-x^3/3!+x^5/5!-x^7/7!,y5=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!的图像,并标注图像名称。

clear,clc

x=-2*pi:0.01:2*pi;

y1=sin(x);

y2=x

y3=x-(x.^3)/factorial(3);

y4=x-(x.^3)/factorial(3)+(x.^5)/factorial(5);

y5=x-(x.^3)/factorial(3)+(x.^5)/factorial(5)-(x.^7)/factorial(7);

y6=x-(x.^3)/factorial(3)+(x.^5)/factorial(5)-(x.^7)/factorial(7)+(x.^9)/factorial(9);

subplot(2,3,1),plot(x,y1),title('y1') %定义为2行3列中的第1幅图,标题为y1

subplot(2,3,2),plot(x,y2),title('y2') %定义为2行3列中的第2幅图,标题为y2

subplot(2,3,3),plot(x,y3),title('y3') %定义为2行3列中的第3幅图,标题为y3

subplot(2,3,4),plot(x,y4),title('y4') %定义为2行3列中的第4幅图,标题为y4

subplot(2,3,5),plot(x,y4),title('y5') %定义为2行3列中的第5幅图,标题为y5

subplot(2,3,6),plot(x,y4),title('y6') %定义为2行3列中的第6幅图,标题为y6

输出图像为:

以上为(1-1)的所有内容,其中主要包含了在数学建模期间所遇到的数据处理的一些基本操作,如:数据的提取、数据赋值、数据变换,另外就是利用MATLAB进行一些基本的图像绘制,主要是图像对比上可以利用多个图像在同一画面展示从而便于比对,同时学会图表标题设置,图像标注等问题。总的来说,以上涉及的操作只需从头到尾操作一次还是比较容易掌握的,算是MATLAB的入门知识,但这点知识在数学建模上式明显不够用,也上不了台面的,在遇到同类问题时应该注意的是知识迁移与资料查阅引用,很多知识是可以现学现用的,但是基本操作是不可或缺的,祝备赛顺利!

官方培训:第七届“数维杯”数学建模夏令营倒计时17天

数维杯数夏令营每年举办一届,已经连续举办七届,每年举办一次,已成为高校数学建模培训示范性基地,属于系统性的数学建模学习,主要针对国赛及培训等其它区域赛,采用分班教学,专家教授授课,7天集训+3天模拟赛+赛后点评解析,累计指导学生近1000余队(2800余人次),国赛荣获800余项省级以上数模奖项,参培学员获奖率超过80%,每期仅限招200人!

夏令营群

好啦~数模国赛即将来临啦

数乐君继续给大家发福利啦

里面都是一些数学建模竞赛中

经常能用到的必备干货商品

可以根据自己的需求去购买哦