matlab数模准备-基础
MATLAB常用命令
help 帮助查询
clc 删除命令窗口的内容(已使用过的命令)
clear 删除内存中的变量(数据)
clf 删除图形窗口的内容
who 列出在MATLAB工作空间中已有的变量
whos 列出驻留变量的同时,还给出维数及性质
home 光标移到命令窗口的左上角
↑ 调出刚才使用过的命令
quit 退出MATLAB![image]
向量函数
max 求最大值
min 求最小值
sum 求和
length 求长度
mean 求平均值
median 求中间值
prod 乘积
sort 从小到大排序![image]
特殊矩阵
[ ] 生成空矩阵
eye(n,m) 生成n×m单位矩阵
ones(n,m) 生成全部元素是1的矩阵
zeros(n,m) 生成全部元素是0的矩阵
rand(n,m) 生成0~1之间均匀分布的随机矩阵
randn(n,m) 生成均值为0,方差为1的标准正态分布的随机矩阵
矩阵操作
解方程AX=B
在Matlab中矩阵的除法分左除\
和右除/
X=A\B
给出线性方程组 AX=B
的一个解 X=B/A
给出线性方程组 XA=B
的一个解.
矩阵的数量运算
- 转置
A'
- 逆
inv(A)
- 行列式
det(A)
矩阵的关系与逻辑运算
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
~= 不等于
运算法则:若关系式成立,结果为1;若关系式不成立,结果为0。
插值
interp1(x,y,x1,’method’)
- nearest 最近插值
- linear 线性插值
- spline 三次样条插值
- cubic 三次插值
>> help interp1
interp1 - 一维数据插值(表查找)
此 MATLAB 函数 使用线性插值返回一维函数在特定查询点的插入值。向量 x 包含样本点,v 包含对应值 v(x)。向量 xq 包含查询点的坐标。
vq = interp1(x,v,xq)
vq = interp1(x,v,xq,method)
vq = interp1(x,v,xq,method,extrapolation)
vq = interp1(v,xq)
vq = interp1(v,xq,method)
vq = interp1(v,xq,method,extrapolation)
pp = interp1(x,v,method,'pp')
线性规划
x=linprog(c,A,B,Aeq,Beq,lb,ub)
[使用linprog求解]
(https://blog.csdn.net/kswkly/article/details/90485816 "使用linprog求解")
Min x1+2*x2+3*x3
x1+x3<=2
2*x1+2*x2+x3<=3
-1*x1-2*x2<=5
x1+2*x3=2
0<=x1,x2,x3<=3
c=[1,2,3];
A=[1,0,1;
2,2,1;
-1,-2,0];
B=[2,3,5];
Aeq=[1,0,2];
Beq=[2];
lb=[0,0,0];
ub=[3,3,3];
linprog(c,A,B,Aeq,Beq,lb,ub)
https://blog.csdn.net/zhangyu4863/article/details/83504008
使用matlab优化工具箱求解规划问题
绘图
x=4:15; y=[5 8 9 15 25 29 31 30 22 25 27 24];
x1=4:0.5:15;
yn=interp1(x,y,x1,'nearest'); yl=interp1(x,y,x1,'linear');
ys=interp1(x,y,x1,'spline'); yc=interp1(x,y,x1,'cubic');
hold on
plot(x,y,'or',x1,yn,'-r'); plot(x,y,'or',x1,yl,'-g');
plot(x,y,'or',x1,ys,'-b');plot(x,y,'or',x1,yc,'-k');
hold off
close all
x=linspace(0,2*pi,101);
y=sin(x);
plot(x,y,'-*r');
close all
x=linspace(0,2*pi,101);
y1=sin(x); y2=cos(x);
plot(x,y1,'-r',x,y2,'-b');
close all
t=0:pi/50:10*pi;
plot3(t,sin(t),cos(t),'r-');
close all
x=-1:0.01:1;
y=-1:0.01:1;
[X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2;
mesh(X,Y,Z);
close all
x=-6:0.1:6;
y=-6:0.1:6;
[x,y]=meshgrid(x,y);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);
mesh(x,y,z);
close all
[x,y,z]=peaks;
surf(x,y,z);
函数
sin(x) 正弦 asin(x) 反正弦
cos(x) 余弦 acos(x) 反余弦
tan(x) 正切 atan(x) 反正切
cot(x) 余切 acot(x) 反余切
abs(x) 绝对值 max(x) 最大值
min(x) 最小值 sum(x) 求和
sqrt(x) 开平方 exp(x) 以e为底的指数
log(x) 自然对数 log10(x) 以10为底的对数
sign(x) 符号函数 fix(x) 取整
插值与拟合
插值与拟合的区别:
- 共性:都是通过已知部分数据求整体的近似函数.
- 区别:数据拟合不要求近似函数通过所有数据点,而是要求它能较好地反映数据整体变化趋势.插值问题要求所得的近似函数(曲线或曲面)经过所已知的所有数据点.
matlab实现
x=[0 3 5 7 9 11 12 13 14 15];
y=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];
%plot(x,y)
%a=polyfit(x,y,2) %多项式拟合
%y1=polyval(a,2) %计算多项式拟合在2处的值
%y2=interp1(x,y,2,'linear')%一维线性插值(分段线性插值)
%y3=Lagrange(x,y,2)%Lagrange插值
%y4=spline(x,y,xx)
xx=0:0.1:15;
y4=spline(x,y,xx) %三次方样条数据插值
plot(x,y,'o',xx,y4)
Matlab 多项式拟合
a = polyfit(x, y, n)
:多项式拟合,返回降幂排列的多项式系数.其中 x,y 是数据点的值,n 为拟合的最高次数.y = polyval(a, x)
:计算拟合的多项式在 x 处的值.
在处理一些无约束条件的最小二乘拟合时往往会涉及到最小二乘优化,最小二乘优化是一类比较特殊的优化问题,在处理这类问题时,Matlab 也提供了一些强大的函数.在 Matlab 优化工具箱中,用于求解最小二乘优化问题的函数有:lsqlin、lsqcurvefit、lsqnonlin、lsqnonneg
Matlab 数据拟合工具箱
- 在 Matlab 中的工作区,输入命令
cftool
,便会出现如下拟合工具箱
5 个命令按钮的功能分别如下: - Data 按钮:可输出、查看和平滑数据;
- Fitting 按钮:可拟合数据、比较拟合曲线和数据集;
- Exclude 按钮:可以从拟合曲线中排除特殊的数据点;
- Ploting 按钮:在选定区间后,单击按钮,可以显示拟合曲线和数据集;
Matlab 一维插值
y = interp1(x0, y0, x,′ method′)
Matlab 二维插值
z = interp2(x0, y0, z0, x, y,′ method′)
其中 x0,y0 分别为 m 维和 n 维向量,表示节点,z0 为 m × n 维矩阵,表示节点值,x,y 为一维数组,表示插值点,x 与 y 应是方向不同的向量,即一个是行向量,另一个是列向量,z 为矩阵,它的行数为 x 的维数,列数为 y 的维数,表示得到的插值,’method’ 的用法同上面的一维插值.