最近有很多同学问小编这样的问题,一个月的时间到底能不能掌握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人!
夏令营群
好啦~数模国赛即将来临啦
数乐君继续给大家发福利啦
里面都是一些数学建模竞赛中
经常能用到的必备干货商品
可以根据自己的需求去购买哦
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.