matlab知识介绍

本周周末协会的第五次活动是陈景升学长带来的“matlab基础编程”课程。

开始部分

课程开始时提出一道例题来引起大家的兴趣:

这是一道实际应用题,模拟6架及以下飞机在某区域的飞行过程,依然使用“决策变量,目标函数,约束条件”三步解决,具体的解题思路以及运用到的算法都在上课所使用的ppt中(在群文件中可以找到),在此我们便不再赘述。

为什么要学matlab?

1.求解模型最重要的软件

MATLAB 语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,自1984 年由美国 MathWorks 公司推向市场以来,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。MATLAB 功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。

2.提高自己对编程软件及算法的掌握

3.编程大佬容易组队

4.利于自己以后的科研项目

学长给出的建议是:组队过程中负责建立数学模型的人最好会编程。

在这里我们提供matlab2016a安装包及安装教程

提取码:v2r5

matlab简介

一、matlab简介

一个由来: Matrix Laboratory 矩阵实验室。 (美国TheMathWorks 公司)

两个组成: MATLAB内核及辅助工具箱。

三个基本功能: 数值计算、 符号计算和图形可视化。

四个特点:

1.语言简洁,效率高。 运算符和库函数极其丰富;

2.编程能力强。 既有结构控制语句,又面向对象;

3.图形功能强大。 绘制,修改,图像处理 ,可视化;

4.功能强大且易于扩充的工具箱。 功能性工具箱和学科性工具箱。

matlab运算

1、基本算术运算

MATLAB的基本算术运算有:+(加)、-(减)、 *(乘)、/(右除)、\(左除)、^(乘方)。

注意,运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。

2、点运算

在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。

点运算符有:点乘:.* 点除:./和.\ 点幂: .^

两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。

3、运算符

基本数学运算

变量与赋值

1.变量名区分字母大小写,如ltems, items, itEms及ITEMS都是不同的变量,长度不超过63个。

2.变量名必须以字母开头,之后可以是任意字母、数字或下划线,如ex12,ex_12. 标点符号在MATLAB中具有特殊含义,所以变量名中不允许使用标点符号.MATLAB语言将所识别的一切变量视为局部变量 ,若要将变量定义为全局变量,则应当对变量进行说明,即在该变量前加关键字global。

赋值语句

1.变量=表达式

2.表达式

>> x = 1+3i;

>> y = 3-sqrt(2);

>>z= (cos(abs(x+y))-sin(60*pi/180))/(x+abs(y))

特殊变量表

其他注意事项

注1:在运算式中, MATLAB通常不需要考虑空格;

注2:多条命令可以放在一行中, 它们之间需要用分号隔开;逗号告诉MATLAB显示结果, 而分号则禁止结果显示。

注3:复数可以表示为: a=10-9i, 复数运算不需要特殊处理,可以直接进行。

注4:从工作空间窗口可以进入变量编辑器, 从而对变量进行修改。

注5:利用 MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来, 扩展名是 .mat。MAT文件的生成和装入由save和load命令来完成。

常用格式为:

save 文件名 [变量名表] [-append][-ascii]

load 文件名 [变量名表] [-ascii]

其中,文件名可以带路径, 但不需带扩展名.mat,命令隐含一定对.mat文件进行操作。

–append 选项为追加。

matlab常用数学函数

值得注意的是,MATLAB 提供了许多数学函数, 函数的自变量规定为矩阵变量, 运算法则是将函数逐项作用于矩阵的元素上, 因而运算的结果是一个与自变量同维数的矩阵。

适用于向量的常用函数

min(x): 向量x的元素的最小值

max(x): 向量x的元素的最大值

mean(x): 向量x的元素的平均值

median(x): 向量x的元素的中位数

std(x): 向量x的元素的标准差

diff(x): 向量x的相邻元素的差

sort(x): 对向量x的元素进行排序(Sorting)

length(x): 向量x的元素个数

norm(x): 向量x的欧氏长度

sum(x): 向量x的元素总和

prod(x): 向量x的元素总乘积

cumsum(x): 向量x的累计元素总和

cumprod(x): 向量x的累计元素总乘积

dot(x, y): 向量x和y的内积

cross(x, y): 向量x和y的外积

随机抽取10 名学生的高等数学课程成绩, 并统计他们中的最高分、 最低分以及他们的平均成绩。

>>math=[88,90,77,69,92,80,74,66,95,85]; %产生10维向量

mathaver=sum(math)/10; %计算平均成绩

h=max(math); %求出最高分

l=min(math); %求出最低分

matlab矩阵

矩阵是 MATLAB 最基本的数据对象,MATLAB 的大部分运算或命令都是在矩阵运算的意义下执行的。在 MATLAB 中,不需对矩阵的维数和类型进行说明,MATLAB 会根据用户所输入的内容自动进行配置。

1. 矩阵的建立

(1)直接输入法

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

A= 1 2 3

注1:输入矩阵时要以“[ ]”为其标识符号,所有元素必须都在括号内;

注2:矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔;

注3: 矩阵大小不需要预先定义;

注4: 矩阵元素可以是运算表达式或小矩阵;

注5: 若“[ ]”中无元素表示空矩阵。

(2) 利用冒号和函数

>> a=1:0.5:4 % 格式是 初始值:步长:终止值

Columns 1 through 7

1 1.5 2 2.5 3 3.5 4

函数linspace(a,b,n)产生第一个元素为a,最后一个元素为b总数为n的行向量.

(3)矩阵合并

>> B=[1 1 1]

>> C=[A;B]

>> D=[A,B']

2. 矩阵的截取

(1) 矩阵元素显然,序号(Index)与下标(Subscript )是一一对应的,其相互转换关系也可利用sub2ind和ind2sub函数求得。

>> A(2,3) %下标引用

>> A(6)

8 >> sub2ind(size(A),2,3)

[i,j]=ind2sub(size(A),8)

(2) 使用冒号

可以用冒号表示“直到” 以及“所有行” , “所有列” , 还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。

>> B=A (1:2, : )

>> C=A([1,3],2:end)

(3)外部文件读入 File-Import Data ; m文件;load函数

3.矩阵分析

a’ 求矩阵a的转置

det(a) 求矩阵a的行列式

b=eig(a) 求矩阵a的特征值,构成向量b

inv(a)或a ^ (-1) 求矩阵a的逆矩阵

rank(a) 求矩阵a的秩

trace(a) 求矩阵a的迹(对角线元素之和)

rref(a) 求矩阵a的行最简形

null(A,’r’) 求系数矩阵为A的齐次方程的基础解系

pinv(A)*b 求非齐次方程的特解

rot90(A,k) 将矩阵A旋转90º的k倍

fliplr(A) 将A左右翻转

flipud(A) 将A上下翻转

在MATLAB中, 字符串是用单撇号(‘)括起来的字符序列。

MATLAB 将字符串当作一个行向量, 每个元素对应一个字符, 其标识方法和数值向量相同。也可以建立多行字符串矩阵。

字符串是以ASCII码形式存储的。 字符串矩阵与其所对应的ASCII码数值矩阵可以互相转化。

建立一个字符串向量, 然后对该向量做如下

(1) 取第1~5个字符组成的子字符串。

(2) 将字符串倒过来重新排列。

(3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。

(4) 统计字符串中小写字母的个数。

>> ch='ABc123d4e56Fg9';

subch=ch(1:5) %取子字符串

revch=ch(end:-1:1); %将字符串倒排

k=find(ch>='a'&ch<='z'); %找小写字母的位置

ch(k)=ch(k)-('a'-'A'); %将小写字母变成相应的大写字母

length(k); %统计小写字母的个数

1. M文件概述

所谓M文件就是由MATLAB语言编写的可在MATLAB语言环境下运行程序源代码文件。

M文件可以根据调用方式的不同分为两类:

命令文件(Script File): 自动重复执行的一组

MATLAB命令和函数组合, 不需输出输入参数。

函数文件(Function File): M文件的第一个可行以function开始, 便是函数文件, 每一个函数文件定义一个函数。

function [output, output2]=function-name(input1, input2)

2.M 文件的建立与打开

M文件是一个文本文件, 扩展名为“m”, 可以用任何

文本编辑器来建立和编辑, 通常使用 Matlab 自带的 M

文件编辑器。

(1) 新建一个 M 文件

方法一 菜单操作 ( File New M-File )

方法二 命令操作 ( edit M 文件名 )

方法三 快捷栏按钮

(2) 打开已有的 M 文件

方法一 菜单操作 ( File Open )

方法二 命令操作 ( edit M文件名 )

方法三 快捷栏按钮

方法四 双击 M 文件

3. M 文件的运行

(1) 从命令窗口

输入文件名即可运行。

(2) 从编辑器窗口

方法一 在编辑器菜单Debug--save and run

方法二 快捷栏按钮

方法三 快捷键F5

注1 命令文件产生的变量是全局变量, 函数文件内部的变量(非输入参数) 是局部变量。

注2 运行若出现死循环或其它需要中断程序运行:

1. 命令窗口使用组合键ctrl+c。

2. 组合键ctrl+alt+del调出任务管理器, 结束matlab进程。

3. 函数只能调用, 不能直接运行, 函数调用的一般格式是:[输出实参表]=函数名(输入实参表)

实参传递给形参

程序控制结构

程序控制结构有三种:顺序结构、选择结构和循环结构。任何复杂的程序都由这三种基本结构组成。

1.顺序结构

按排列顺序依次执行各条语句, 直到程序的最后。这是最简单的一种程序结构, 一般涉及数据的输入输出、 数据的计算或处理等。

(1) 数据的输入

从键盘输入数据:

A=input(‘提示信息’ ,‘s’);

加上‘s’选项, 则允许用户输入一个字符串。

>> xm=input('What''s your name?','s');

What's your name?张三

(2) 数据的输出

disp(输出项)

其中输出项既可以为字符串, 也可以为矩阵。

(3)程序的暂停

pause(延迟秒数)

如果省略延迟时间, 直接使用 pause, 则将暂停程序, 直到用户按任一键后程序继续执行

输入x,y的值, 并将它们的值互换后输

>> x=input('Input x please:');

y=input('Input y please:');

z=x;x=y;y=z;

disp(x);disp(y);

Input x please:1

Input y please:2

2.选择结构

选择结构是根据给定的条件成立或不成立, 分别执行不同的语句。

MATLAB 用于实现选择结构的语句有 if 语句和 switch 语句。

1)if语句

在MATLAB中, if语句有单分支, 双分支, 多分枝3种

①(单分支)

②(双分支)

③(多分支)

elseif 条件2

elseif 条件m

(2) switch语句

switch 表达式;%计算表达式的值

case 表达式1;%等于表达式1的值时,执行语句组1

case 表达式2 ;%等于表达式1的值时,执行语句组2

case 表达式m %等于表达式m的值时,执行语句组m语句组m

otherwise %不为上述值时,执行语句组n语句组n

end %当任意一个分支的语句执行完后,直接执行switch语句的下一句

if选择结构

1.计算分段函数的值。

>> x=input('请输入x的值:');

y= (x+sqrt(pi))/exp(2);

y=log(x+sqrt(1+x*x))/2;

switch选择结构

2.某商场对顾客所购买的商品实行打折销售,

标准如下(商品价格用price来表示):

price<200 没有折扣

200≤price<500 3%折扣

500≤price<1000 5%折扣

1000≤price<2500 8%折扣

2500≤price<5000 10%折扣

5000≤price 14%折扣

输入所售商品的价格, 求其实际销售价格。

>> price=input('请输入商品价格');

switch fix(price/100)

case {0,1} %价格小于200

case {2,3,4} %价格大于等于200但小于500

rate=3/100;

case num2cell(5:9) %价格大于等于500但小于

rate=5/100;

case num2cell(10:24) %价格大于等于1000但小于2500

rate=8/100;

case num2cell(25:49) %价格大于等于2500但小于5000

rate=10/100;

otherwise %价格大于等于5000

rate=14/100;

3.循环结构

循环结构是按照给定的条件, 重复执行指定的语句。

MATLAB 用于实现循环结构的语句有 for 语句和 while 语句。

(1)for语句

for 循环变量=表达式1:表达式2:表达式3

循环体语句

其中表达式 1 的值为循环变量的初值, 表达式2的值为步长, 表达式3的值为循环变量的终值。 步长为1时, 表达式2可以省略。

for 循环变量=矩阵表达式

循环体语句

执行过程是依次将矩阵的各列元素赋给循环变量, 然后执行循环体语句, 直至各列元素处理完毕。

(2)while语句

while语句的一般格式为:

while (条件)

循环体语句

其执行过程为: 若条件成立, 则执行循环体语句, 执行后再判断条件是否成立, 如果不成立则跳出循环

从键盘输入若干个数, 当输入0时结束输入,求这些数的平均值和它们之和。

>> sum=0;

val=input('Enter a number (end in 0):');

while (val~=0)

sum=sum+val;

val=input('Enter a number (end in 0):');

if (cnt > 0)

mean=sum/cnt

(3) break语句和continue语句

与循环结构相关的语句还有 break 语句和continue语句。它们一般与if语句配合使用break 语句用于终止循环的执行。当在循环体内执行到该语句时, 程序将跳出循环,继续执行循环语句的下一语句。continue 语句控制跳过循环体中的某些语句。当在循环体内执行该语句时,程序将跳过循环

求[100, 200]之间第一个能被21整除的整数。

>> for n=100:200

if rem(n,21)~=0

(4)循环嵌套

若一个数等于它的各个真因子之和,则称该数为完数, 如6=1+2+3, 所以6是完数。求[1,500]之间的全部完数。

>> for m=1:500

for k=1:m/2

if rem(m,k)==0

matlab数值计算

在此次讲课的最后,陈景生学长表达了自己对学习数学建模的同学们的期待,并鼓励同学们把数学建模的学习坚持下去——“建模一次,受益终身”。

文字 / 李圣杰

排版 / 张瓯

审核/张梦婷

数学建模

扫码了解更多相关知识