数学建模国赛matlab知识点


1.基础

命令行太长,可加上三个小数点:“…” 进行分割(续行符),如

s=1-1/2+1/3-1/4...
+1/5-1/6+1/7

数值数据默认双精度double

clear命令,清除工作区的所有变量

class(变量)得到变量类型

复型数据,虚数部分用i或j表示,如6+5i ,real函数求复数实部,imag函数求复数的虚部

以角度为单位的函数,在函数名后加“d”,如sin(pi/2)=sind(90)

abs(xx)可求实数绝对值,复数的模,字符串的ascii码

rem(m,10)求m/10的余数

isprime(n)求n是否为素数,是返回1,否返回0

exp(pi/2)为e的2/Π次方

整形转换

x=int8(129)        //转有符号的int,最大127,即这里x=127
x=uint(129)        //转无符号uint,即x=129

取整函数

round()函数按照四舍五入
ceil()向上取整
floor()向下取整
fix()取靠近0的整数

矩阵的建立

//no.1
A=[1,2,3;4,5,6;7,8,9]  //第一行1,2,3,第二行4,5,6

冒号表达式

e1:e2:e3   //分别为初始值,步长(两两之间间隔的大小,如果省略步长,则步长为1),终止值
inspace(a,b,n)//分别对应第一个元素,最后一个元素,元素总数(省略时为100)

结构矩阵&单位矩阵

//结构矩阵   结构矩阵元素.成员名=表达式
a(1).x1=10;  a(1).x2='liu';  a(1).x3=[11,21;34,78];
//单元矩阵,用大括号
b={10,'liu',[11,21;34,78]}

2.矩阵

引用矩阵元素

A(3,2)表示A矩阵第三行,第二列元素

可用序号引用,如在A=[1,2,3;4,5,6;7,8,9]中,A(3)=7 (矩阵元素按列储存)

D=sub2ind(S,I,J),分别为行数和列数组成的向量,转换矩阵元素的行下标,转换矩阵元素的列下标,D为序号(下标转序号)

size(A)求矩阵A的行列数

[I,J]=ind2sub(S,D),分别为行数和列数组成的向量,序号(序号转下标)

k=find(ch>='a'&ch<'z') 找到符合条件的元素的序号

利用冒号获得子矩阵

A(i,:)   第i行的所有元素
A(:,j)   第j列的所有元素
A(i:i+m,k:k+m)   第i~i+m行且在第k~k+m行的所有元素

end运算符:表示某一维末尾下标 如:A(end,:),是指A矩阵最后一行所有元素

利用空矩阵删除矩阵的元素

将想要的元素范围赋值空矩阵[]即可,如A(:,[2,4])=[],删除第二列,第四列元素

改变矩阵形状

reshape(A,m,n):在矩阵综援素不变的情况下,将A重新排列成m×n的二维矩阵

注意:并不改变元素个数及其储存顺序

A(:):将矩阵A每一列元素堆叠起来成为一个列向量

3.算术运算&字符串

须知:加减运算两矩阵必须同型,乘法运算要求A行数和B的列数相同

点运算:两矩阵进行点运算是指它们对应元素进行运算,要求两矩阵同型

逻辑运算符:&,|,~

字符串和数值之间的转换:数值(ASCII码)=abs(字符串) 字符串=char(ASCII码)

strncmp(s1,s2):用于比较字符串s1,s2是否相等

strncmp(s1,s2,n):用于比较字符串s1,s2前n个字符是否相等

strcmpi(s1,s2):忽略大小写

4.特殊矩阵

zeros函数:产生全零矩阵

ones函数:产生全1矩阵

eye函数:产生对角线为1的函数

rand函数:产生(0,1)区间均匀分布的随机矩阵

randn函数:产生均值为0,方差为1的标准正态分布随机矩阵

inv(矩阵):求其逆矩阵

zeros(m):产生m×m零矩阵
zeros(m,n):产生m×n零矩阵

特殊矩阵介绍:

魔方矩阵M=magic(8) (8行8列)

范德蒙矩阵vander(1:5)

希尔伯特矩阵:H=hilb(4)

伴随矩阵:A=compan(P)

帕斯卡矩阵:P=pascal(5)

对角阵

对角矩阵:对角线上元素非零

数量矩阵:对角线上元素相等

对角矩阵:对角线上元素为1

diag(A):提取矩阵A对角线元素,产生一个列向量

diag(A,k):提取矩阵A第k条对角线元素,产生一个列向量

构造对角矩阵:diag(V):以向量V为主对角线元素,产生对角矩阵

三角阵

triu(A):提取矩阵A的主对角线及以上的元素

tril(A):提取矩阵A的主对角线及以下的元素

triu(A,k):提取矩阵A的第k条主对角线及以上的元素

矩阵的转置

A=[1,3;3+4i,1-2i]

转置:A.’

共轭转置:A’

若矩阵为实数,转置和共轭转置是一样的

矩阵旋转:rot90(A,k),将矩阵A逆时针旋转90°的k倍,k为1可省略

矩阵左右翻转:fliplr(A)

矩阵上下翻转:flipud(A)

矩阵其他功能

把一个方阵看作一行列式,并对其按行列式的规则求值:det(A)

求矩阵的秩:rank(A)

求矩阵的迹,即对角线元素之和:trace(A)

求矩阵A全部特征值,构成向量E:E=eig(A)

或者 [X,D]=eig(A) A的全部特征值构成对角阵D,X的各列是对应的特征向量

5.subplot画图

subplot(m,n,p)或者subplot(mnp)此函数最常用:subplot是
将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,
也就是整个figure中有n个图是排成一行的,一共m行,
如果第一个数字是2就是表示2行图。p是指你现在要把曲线画到figure中哪个图上,
最后一个如果是1表示是从左到右第一个位置。 )

6.MatLab中关于程序的操作

建立函数,新建脚本,开头为: function C = 函数名( 参数A,参数B),并且通过C返回(当有多个形参时,可用逗号分隔,而C为输出形参表,多个输出形参需要用方括号[] 括起来)

数据的输入:A=input(‘请输入A的值:’);

数据的输出:disp(输出项)

程序暂停:pause(延迟数秒),如果省略参数,则一直暂停,除非用户按任意键就可以继续执行

x^(1/3)=power(x,1/3)

matlab中的switch case相对于C,java不需要break,且最后一个的default改成otherwise

匿名函数:简化了函数的过程:如f=@(x,y)x^2+y^2,f(3,4)进行调用,但是不适用于复杂函数

7.Plot函数

plot(x,y),x,y分别存储x,y坐标的数据

最简单的plot调用格式:plot(x),下标为横坐标,值为纵坐标

x,y为同型矩阵,则分别对应x,y坐标绘画出曲线图

多条曲线可以plot(x1,y1,x2,y2,x3,y3……)

x=linspace(0,2*pi,100) ,位置0到2pi的100个元素存于x

plot(x,y,选项)

选项有线性,颜色,数据点标记

线型:“ - ” 实线, “ : ”虚线, “ -. ”点画线, “ – ” 双画线

颜色:“ r ”红,“ g ”绿,“ b ”蓝。。。。。。

数据点标记:“ * ”星号,“ o ”圆圈,” s “方块。。。。

8.fplot函数

fplot(f,lim,选项),f是函数,lim是x的取值范围,用二元向量[xmin,xmax]表示,默认[-5,5],选项和plot相同

自变量无法间隔采样时使用fplot(函数变化趋势未知,或者在不同区间函数变化频率过大,如sin(x/1))

9.曲线拟合

polyfit()进行拟合,找一个函数去逼近数据,再根据找到的函数预测下一个点的值(如 人口预测问题)(它实际上是求得最小二乘法拟合的多项式系数)

p=ployfit(x,y,3)生成三次多项式函数,调用ployval(p,2020)进行计算(求2020年的人口)


文章作者: Hello
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hello !
 上一篇
matlab期末知识点汇总 matlab期末知识点汇总
regress命令 用于一元及多元线性回归 B = regress(Y,X)[B,BINT] = regress(Y,X)[B,BINT,R] = regress(Y,X)[B,BINT,R,RINT] = regress(Y,X)B,B
2020-08-06
下一篇 
模拟退火算法 模拟退火算法
1.模拟退火算法可能的情况很多,数据量太大,用模拟退火搜索出需要的解(求最值)(最大值问题可以添加负号转换成求最小值问题) 启发式搜索:利用搜索过程中获取的信息改进搜索策略。启发式搜索有利于找到问题最优解,且有助于加速求解过程。 模拟退火可
2020-08-06
  目录