matlab学习过程

matlab笔记

高手的区别就只在一点,就是一直有自己的编程思路,需要什么知识就是学习什么知识,然后继续按照自己的思路编程,虽然在过程中,要不断学习,但最高效,也最容易建立强大的对 MATLAB 的使用信心。

也不用花太多时间去摸索函数用法,有效地提高解题速度。数模比赛中常用算法、函数的准备我会在之后详细介绍,基础核心却是 MATLAB 的编程理念。

正确且高效的 MATLAB 编程理念就是以问题为中心的主动编程。我们传统学习编程的方法是学习变量类型、语法结构、算法以及编程的其他知识,因为学习时候是没有目标的,也不知道学的知识什么时候能用到,收效甚微。

最重要的是,这种主动的编程方式会让学习者体验到学习的成就感的乐趣,有成就感,自然就强化对编程的自信了。这种内心的自信和强大在建模中会发挥意想不到的力量,所为信念的力量。

1)了解 MATLAB 的基本用法,包括几个常用的命令,如何获取帮助,脚本结构,程序的分节与注释,矩阵的基本操作,快捷绘图方式;

2)熟悉 MATLAB 的程序结构,编程模式,能自由地创建和引用函数(包括匿名函数);

3)熟悉常见模型的求解算法和套路,包括连续模型,规划模型,数据建模类的模型;

4)能够用 MALTAB 程序将机理建模的过程模拟出来,就是能够建立和求解没有套路的数学模型。

要想达到如上要求, 不能按照传统的学习方式一步一步地学习, 而要结合上述提到的学习理念制定科学的训练计划。

线性规划求解

多个约束条件求最优解。

linprog(f,A,b,Aeq,beq,lb,ub)

f:价值
向量(目标函数的系数)
A,b:线性不等式的约束
Aeq,beq:线性等式约束
lb,ub:上下线性约束

matlab只能求最小值不能求最大值

蒙特卡洛法

求曲边三角形的近似值

矩形面积乘以频率

unifrnd函数

函数功能:生成(连续)均匀分布的随机数

使用方法:R = unifrnd(A,B)

生成被A和B指定上下端点[A,B]的连续均匀分布的随机数组R。
如果A和B是数组,R(i,j)是生成的被A和B对应元素指定连续均匀分布的随机数。
如果N或P是标量,则被扩展为和另一个输入有相同维数的数组。

sum函数基本的用法为:

a=sum(A) %列求和

b=sum(A,2) %行求和

c=sum(A(😃) %矩阵求和

假定A为一个矩阵:

sum(A)以矩阵A的每一列为对象,对一列内的数字求和。

sum(A,2)以矩阵A的每一行为对象,对一行内的数字求和。

插值和拟合

插值插入一个数使其满足方程,拟合求解满足方程的x

函数 lsqnonlin

格式 x = lsqnonlin(fun,x0) %x0 为初始解向量;fun 为 ,i=1,2,…,m,fun
返回向量值F,而不是平方和值,平方和隐含在算法中,fun 的定义与前面相同。
x = lsqnonlin(fun,x0,lb,ub) %lb、ub 定义x 的下界和上界: 。
x = lsqnonlin(fun,x0,lb,ub,options) %options 为指定优化参数,若x 没
有界,则lb=[ ],ub=[ ]。

时间序列

image-20210419100915389

存储在m文件或者txt中然后进行调用或者调试得出结果

过去一组时间的序列变化规律,推断今后变化的可能性及其变化趋势

randn 函数

randn(N,1)就是产生服从方差为1,均值为0

for的用法

for循环格式
①for 循环变量 = 表达式1 :表达式2 :表达式3
*循环体*
end

模拟退火算法

zeros函数——生成零矩阵

B=zeros(n):生成n×n全零阵。

B=zeros(m,n):生成m×n全零阵。

B=zeros([m n]):生成m×n全零阵。

B=zeros(d1,d2,d3……):生成d1×d2×d3×……全零阵或数组。

B=zeros([d1 d2 d3……]):生成d1×d2×d3×……全零阵或数组。

B=zeros(size(A)):生成与矩阵A相同大小的全零阵。

ones函数——生成全1阵

inf的用法

在Matlab中,inf为无穷大量+∞,-inf为无穷小量-∞,在Matlab程序执行时,即使遇到了以0为除数的运算,也不会终止程序的运行,而只给出一个“除0”警告,并将结果赋成inf,继续执行

while

clear
sum=0;
n=1;
while n<=100 %当n<=100时,执行循环体
sum=sum+n;
n=n+1;
end
sum

ceil函数:朝正无穷大方向取整

2、用法说明:w=ceil(z)函数将输入z中的元素取整,值w为不小于本身的最小整数。

​ 对于复数B,分别对实部和虚部取整。

理想算法

数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。

主要成分分析

size函数的应用

size(X,1),返回矩阵X的行数;
size(X,2),返回矩阵X的列数;
N=size(X,2),就是把矩阵X的列数赋值给N
.只含数值型变量的Excel表格
### xlsread函数




   

xlsread函数

这个两种方法:粘贴或xlsread函数调用。粘贴不必多说,至于xlsread,我们利用如下格式:

1.只含数值型变量的Excel表格

num=xlsread(‘filename’,‘sheet’,‘range’)
式中括号内的三项都要加单引号,filename顾名思义,就是要导入的Excel的文件名,注意加.xls或.xlsx就好,第二个sheet就是表格页名,第三个range是指要导入数据的范围,这个对Excel不熟练的话建议用MATLAB打开Excel表格,直接用鼠标选中要导入的数据,然后表格里会自动出现选中数据的范围(这个的确好用),写入range即可。
2.同时含数值型变量和字符型变量的Excel表格

这个稍有些麻烦。

首先,如果仅仅是需要处理其中数据,那么方法同1。如果既要处理数据又要处理字符型变量的话,就经常用到下面两种格式:

[num,txt]=xlsread(‘filename’,‘sheet’,‘range’)
[num,txt,raw]=xlsread(‘filename’,‘sheet’,‘range’)

主成分分析的代码

A = xlsread(‘yyds.xlsx’,‘A2:E20’);
a = size(A,1);
b = size(A,2);
for i = 1:b
SA(:,i) = (A(:,i) - mean(A(:,i)))/std(A(:,i));
end
CM= corrcoef(SA);
[V,D] = eig(CM);
for j = 1:b
DS(j,1) = D(b+1-j,b+1-j);
end
for i = 1:b
DS(i,2) = DS(i,1)/sum(DS(:,1));
DS(i,3) = sum(DS(1:i,1))/sum(DS(:,1));
end
T = 0.9;
for K = 1:b
if DS(K,3)>=T
Com_num = K;
break;
end
end
for j = 1:Com_num
PV(:,j)= V (:,b+1-j)
end
new_score = SA*PV;
for i = 1:a
total_score(i,1) = sum(new_score(i,:));
total_score(i,2) = i;
end
result_report = [new_score,total_score];
result_report = sortrows(result_report,-4);
disp(‘特征值 贡献值 累计贡献值:’)
DS
disp(‘信息保留率T对应的主要成分与特征值:’)
Com_num
PV
disp(‘主要成分得分及排序’)
result_report

matlab中global的用法

比如在主函数里面,你需要设置n这个变量是一个全局变量,就需要声明一下:
global n;
然后在子函数里面你又用到了n这个全局变量,你需要在子函数里面再次声明:
global n;
这样在子函数中,就可以使用n这个全局变量了

plot函数

SpecifierLine Style*(线型)*
实线(默认样式)虚线(短划线)
:点线
-.点划线
SpecifierMarker*(坐标点样式)*
o
+加号
*星号
.
x十字
s正方形
d菱形
^上指向三角形
v下指向三角形
>右指向三角形
<<o:p>左指向三角形
p五角星
h六角形
SpecifierColor
y黄色
m品红
c蓝绿色
r红色
g绿色
b蓝色
w白色
k黑色

例如:’–or’表示坐标点为圆圈标志,且线型为红色短划线的绘图样式。

ode方程

** [T,Y] = ode45(odefun,tspan,y0)**

  • odefun 是函数句柄,可以是函数文件名,匿名函数句柄或内联函数名
  • tspan 是区间 [t0 tf] 或者一系列散点[t0,t1,…,tf]
  • y0 是初始值向量
  • T 返回列向量的时间点
  • Y 返回对应T的求解列向量

matlab中函数大全

Aabs 绝对值、模、字符的ASCII码值 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具 all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名 any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环中断指令 brighten 亮度控制 C c capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极或柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具 cdf2rdf 复数特征值对角阵转为实数块对角阵 ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象 chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量同时给出条件数 condest 范 -1条件数估计 conj 复数共轭 contour 等位线 contourf 填色等位线 contour3 三维等位线 contourslice 四维切片等位线图 conv 多项式乘、卷积 cool 青紫调冷色图 copper 古铜调色图 cos 余弦 cosh 双曲余弦 cot 余切 coth 双曲余切 cplxpair 复数共轭成对排列 csc 余割 csch 双曲余割 cumsum 元素累计和 cumtrapz 累计梯形积分 cylinder 创建圆柱 D d dblquad 二重数值积分 deal 分配宗量 deblank 删去串尾部的空格符 dec2base 十进制转换为X进制 dec2bin 十进制转换为二进制 dec2hex 十进制转换为十六进制 deconv 多项式除、解卷 delaunay Delaunay 三角剖分 del2 离散Laplacian差分 demo Matlab演示 det 行列式 diag 矩阵对角元素提取、创建对角阵 diary Matlab指令窗文本内容记录 diff 数值差分、符号微分 digits 符号计算中设置符号数值的精度 dir 目录列表 disp 显示数组 display 显示对象内容的重载函数 dlinmod 离散系统的线性化模型 dmperm 矩阵Dulmage-Mendelsohn 分解 dos 执行DOS 指令并返回结果 double 把其他类型对象转换为双精度数值 drawnow 更新事件队列强迫Matlab刷新屏幕

interp1

一维数据插值(表查找)

vq = interp1(x,v,xq) 使用线性插值返回一维函数在特定查询点的插入值。向量 x 包含样本点,v 包含对应值 v(x)。向量 xq 包含查询点的坐标。

如果您有多个在同一点坐标采样的数据集,则可以将 v 以数组的形式进行传递。数组 v 的每一列都包含一组不同的一维样本值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嚼绿箭的朱七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值