目录:
一.数学建模常用编程语言:
Matlab编程语言,R语言,Python语言
二.Matlab窗口界面功能
(1)主页窗口
新建脚本=新建m文件(快捷键:Ctrl+N)
预设——用来更改字体,样式等
(2)绘图窗口(用来根据数据绘制图像)
(3)App窗口(包含很多工具箱)
(4)编辑器窗口(运行,查找,替换)
(5)更改当前文件夹,直接将目录复制到导航栏,左侧会出现该文件夹下的所有文件。双击左侧文件即可打开对应文件。
(6)工作区,显示所有用到的变量
三.Matlab基本常识
(1)在每一行的语句后面加上分号(英文;)表示不显示运行结果。不加分号则显示运行结果。因此当运行不需要显示的中间结果时,一般都需要加分号。
(2)注释:语句前加%。快捷键:Ctrl+R;取消注释 快捷键:Ctrl+T
(3)clear:命令行窗口输入 clear ,清除工作区所有变量
(4)clc:命令行窗口输入 clc ,清除命令行窗口中的所有文本,让屏幕变得干净
(5);也用于分行
(6)clear;clc:这条语句通常放到代码开头,起到“初始化”的作用,防止之前的结果对新脚本文件(后缀名是 .m)产生干扰。
四.Matlab常用函数和运算符和语法
注:Matlab想执行哪条语句,选中该条语句,单击右键,执行所选内容。
(1) disp函数:
matlab中disp()就是屏幕输出函数,类似于c语言中的printf()函数
注:disp函数句尾加不加分号,结果都一样。
语法为
:(Matlab中的字符串用英文的单引号或双引号,且单双引号不做区分)
disp("")
disp('')
%示例
disp("小陈同学想吃果酱")
运行结果:
(2)向量表示法
用逗号(英文,)或空格来隔开行之间的元素;用分号(英文;)来隔开列之间元素
(3)拼接字符串
way1:strcat(str1,str2……,strn)
例如:
way2: [str 1,str 2,……, str n]或[str1 str2 …… strn]
例如:
(4)num2str :
将数字转换为字符串 (用这个函数可以将字符串和数字拼接)
c = 100
num2str(c)
disp(['c的取值为' num2str(c)])
disp(strcat('c的取值为', num2str(c)))
(5)input函数:
用于将输入的数、向量、矩阵、字符串等赋给一个变量
A = input('请输入A:');
B = input('请输入B:')
加分号,输入后会将输入的结果直接显现出来
运行结果:
(6)sum函数
如果是向量(无论是行向量还是列向量),都是直接求和
如果是矩阵,则需要根据行和列的方向作区分
1.按列求和(得到一个行向量)
%写法1
a = sum(E)
%写法2
a = sum(E,1)
%sum(E,dim) dim表示维度,dim=1表示按照列求和;dim=2表示按照行求和
2.按行求和(得到一个列向量)
%写法
a = sum(E,2)
3.对整个矩阵求和
%写法1
a = sum(sum(E))
%写法2
a = sum(E(:))
%E(:)表示将一个矩阵拼接成一个列向量;列数靠前的在上面
(7)matlab中提取矩阵中指定位置的元素
1.取指定行和列的一个元素(输出的是一个值)
%写法
A(2,1)
A(3,2)
2.取指定的某一行的全部元素(输出的是一个行向量)
%写法
A(2,:)%选取第二行所有元素
A(5,:)%选取第五行所有元素
3.取指定的某一列的全部元素(输出的是一个列向量)
%写法
A(:,1)%选取第一列所有元素
A(:,3)%选取第三列所有元素
4.取指定的某些行的全部元素(输出的是一个矩阵)
补充知识:Matlab中生成等差数列:
a:b:c 表示从生成从a到c,间隔为b的等差数列。
a:c 表示从生成从a到c,间隔为1的等差数列(默认b为1)。
%写法
A([2,5],:) % 只取第二行和第五行(一共2行)
A(2:5,:) % 取第二行到第五行(一共4行)
A(2:2:5,:) % 取第二行和第四行 (从2开始,每次递增2个单位,到5结束)
不知道有几行,用end来表示最后一行或一列
%写法
A(:,2:end) %取第二列到最后一列
A(2:end,:) % 取第二行到最后一行
A(2:end-1,:) % 取第二行到倒数第二行
5.取全部元素(按列拼接的,最终输出的是一个列向量)
%写法
clc;A
A(:)
运行结果:
(8)size函数
% size(A)函数是用来求矩阵A的大小的,它返回一个行向量,第一个元素是矩阵的行数,第二个元素是矩阵的列数
[r,c] = size(A)
% 将矩阵A的行数返回到第一个变量r,将矩阵的列数返回到第二个变量c
r = size(A,1) %返回行数
c = size(A,2) %返回列数
(9)repmat函数
% B = repmat(A,m,n):将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。
A = [1,2,3;4,5,6]
B = repmat(A,2,1)
B = repmat(A,3,2)
运行结果:
(10) 求逆矩阵
inv(A)
(11)矩阵之间的乘法与除法(A/B = A*inv(B))
%乘法有一种计算方法
A * B
%除法有两种计算方法
A * inv(B)
A / B
(12)点乘和点除(形状相同的矩阵,对应位置的元素进行运算)
A .* B
A ./ B
(13)每个元素同时和常数相乘或相除
%乘常数
A * 2
A .* 2
%除常数
A / 2
A ./ 2
(14)乘方
%每个元素同时乘方
A .^ 2
%相当于A * A
A ^ 2
(15)特征值和特征向量
只求特征值
%矩阵A的全部特征值,构成向量E。
E=eig(A)
同时求特征值和对应的特征向量
%求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量)
[V,D]=eig(A)
注:每一个特征向量乘以常数可以构成无数个特征向量
(16)find函数
用来返回向量或者矩阵中不为0的元素的位置索引
%返回所有不为0的元素的位置
ind = find(X)
% 其有多种用法,比如返回前2个不为0的元素的位置:
ind = find(X,2)
%注意,矩阵在matlab中存贮时,是按列存储的,因此返回的位置也是如此
% 假如需要按照行列的信息输出
[r,c] = find(X) %r中存贮不为0元素的行标;c中存储不为0元素的列标
[r,c] = find(X,1) %只找第一个非0元素
[r,c] = find(X,1) %查找前两个非0元素
(17)矩阵与常数的大小判断运算
共有三种运算符:大于> ;小于< ;等于 == (一个等号表示赋值;两个等号表示判断),返回的结果是一个逻辑数组
例如:X > 0 矩阵X中大于0的元素位置为1,小于等于0的元素位置为0
X == 4 矩阵中等于4的元素位置为1,不等于4的元素位置为0
(18)判断语句
Matlab的判断语句,if所在的行不需要冒号,语句的最后一定要以end结尾 ;中间的语句要注意缩进。
例如:
if a >= 85
disp('成绩优秀')
elseif a >= 60
disp('成绩合格')
else
disp('成绩挂科')
end
(19)循环语句
语句要以end结尾。
for i = 1:n %循环,这一行后面不能加冒号,这里表示循环n次
disp(i)
end
for i = 1:2:n %循环,这里表示从1到n,间隔为2
disp(i)
end
(20)prod函数
prod函数和sum函数类似,一个用于乘,一个用于加 dim = 2 维度是行
(21)max()函数
找最大元素值
max(D)%找出每一列最大值
max(max(D))%找出整个矩阵中最大值