目录
(文章主体内容来自"《MATLAB数学建模经典案例实战》#余胜威 编著#清华大学出版社",发此文目的是梳理相关知识点,记录学习过程)
第1章 MATLAB基础知识
1,矩阵的表示
矩阵与向量相同,用来描述一个问题的方程组的系数,由方程组的系数和常数构成的方阵。
矩阵包括:数值,符号,特殊矩阵等三种基本样式
1,数值矩阵的生成
MATLAB强大功能之一:直接处理向量或矩阵
实数值矩阵输入
复数矩阵输入
2,符号矩阵的生成
1,用sym定义矩阵(实际是在定义符号表达式,符号矩阵中的元素可以是任意符号或是表达式,且长度无限制,只是将方括号置于用于创建符号表达式的单引号中)
2,用命令syms定义矩阵
3,数值矩阵转换为符号矩阵
一般情况下,矩阵是浮点型变量保存。针对本例,将矩阵转化成符号矩阵后,都将以最接近原值的有理数形式表示,或是函数形式表示
3,特殊矩阵生成
- 全零阵生成
- 单位阵生成
- 全1阵生成
- 均匀分布随机矩阵生成
- 正态分布随机矩阵生成
- 产生随机排列
- 产生线性等分向量
- 产生对数等分向量
- 产生以输入元素为对角线元素的矩阵
- 友矩阵的生成
- hadamard矩阵生成
- Hankel方阵生成
- Hibert矩阵生成
- 逆Hibert矩阵生成
- Magic矩阵生成
- pascal矩阵生成
- 拓普利兹矩阵生成
- Wilkinson特征值测试阵的生成
4,一般矩阵运算
5,基本图形绘制
- t:t从0开始,以π/50为一步,到4π为止,就是t的取值为0,π/50,2*π/50,3*π/50,4*π/50......4π
- .*:点乘,非矩阵乘法的一种乘法,每个对应元素分别相乘
- plot(t,y,t,y0,t,-y0):显示三条曲线
- 在matlab的命令窗口输入:X=linspace(1,100),将产生从1到100步长为1的数组。类似于在命令窗口中输入:X=[1:100]
- 在命令窗口中输入:X=linspace(5,100,20),将输出:X =5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
- 注意多个数值做乘除运算时要用点乘(.*),直接用乘(*)则报错
- .*需要A、B的行列相等,而*的必要条件则是A的列数==B的行数
- .^是矩阵中各数值分别平方,^是矩阵自身乘以矩阵自身
- subplot(m,n,p)或者subplot(m n p):m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。
- axis([XMIN XMAX YMIN YMAX])二维坐标系下坐标范围
- V = axis,返回当前坐标范围参数,二维坐标 四个元素
- plot(x,y,'linewidth',2): 线条粗细
- meshgrid(x,y,z):meshgrid是生成网格的函数,一般是生成二维网格矩阵数据,但这里生成的是三维网格矩阵数据。以二维为例,命令:[X,Y]=meshgrid(x,y),生成的X就是采样点的横坐标,Y是其纵坐标
- slice(X,Y,Z,V,XI,YI,ZI) 沿着由矩阵XI、YI与ZI定义的曲面画穿过超立体图形V的切片。
6,简单图像处理
- 素材放在图中所标记位置
- R=obj(:,:,1)......:把图像中红、绿、蓝三色的数据分别存储到矩阵R、G和B中
7,建立函数文件/.M文件
函数文件
定义
- 可以是MATLAB工具箱中的函数,直接被用户调用
- 也可以是用户自己书写的,可间接调用
- 也可添加到工作路径下,供用户调用
作用
- 可反复调用
- 节约代码空间
- 使结构清晰
- 很重要
常用的函数文件
- function y = abc(x);
- abc:用户定义函数
- x:输入 y:反馈值
函数句柄
- fhandle = @function name
- eg. trig_f = @sin 或 sqr = @(x)x.^2
eg. 函数句柄的创建调用
eg.函数文件的创建和调用
- 新建 “函数”,并编写函数内容,保存时为函数命名(注意不要与已知函数冲突,函数文件将在路径中显示)
- 在命令行窗口可直接调用此函数
8,常用数值拟合
最简单的线性最小二乘法拟合
- 从实验数据中拟合函数关系y=f(x),标准是使 (f(xi) - yi)^2取极小值
- MATLAB中可用函数polyfit函数对数据进行拟合。调用格式:P = polyfit(x , y , N) 意义:用N次多项式拟合数据点 [ xi , yi]
eg.以一次,二次,三次多项式拟合以下数据
表1-2 数据
x | 0.5 | 1.0 | 1.5 | 2.0 | 2.5 | 3.0 |
y | 1.75 | 2.45 | 3.81 | 4.80 | 7.00 | 8.60 |
- hold on:hold on 和hold off,是相对使用的前者的意思是,你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存,都看得到,后者表达的是,你在当前图的轴(坐标系)中画了一幅图,此时,状态是hold off,则再画另一幅图时,原来的图就看不到了,在轴上绘制的是新图,原图被替换了(参考自@荪荪【Matlab中hold on与hold off的用法】)
- plot函数:单引号内的是线的类型以及颜色,如上图
9,常用数据插值
插值
- 求函数近似值的方法。针对某个x,用已知的xi与f(xi)组合生成f(x)。
- 最简单插值法:多项式插值法
- MATLAB可利用提供的插值函数,或编程实现数据的插值
- 一元插值函数interp1的语法格式
y = interp1(x , Y, xi) | 由已知点集(x,Y)插值计算xi上函数值y |
y = interp1(Y, xi) | 相当于x=1:length(Y)的interp1(x, Y, xi) |
y = interp1(x, Y, xi, method) | 用指定方法计算xi对应的y |
y = interp1(x, Y, xi, method, 'extrap') | 超出已知点集的插值点用指定方法计算函数值 |
y = interp1(x, Y, xi, method, extrapval) | 用指定方法计算插值,超出已知点集处函数值取extrapval |
pp = interp1(x, Y, method, 'pp') | 用指定方法进行插值,但结果为分段多项式 |
- eg.已知x, y初始矩阵值,利用interp1的不同插值算法求xi[1 : 0.3 : 17]时各点的函数近似值
二维插值
- 类似于一维插值,但插值方法只有三种:‘nearest’,'linear'(默认),‘cubic’
- 已知数据点集必须是栅格格式,一般用meshgrid函数产生
- interp2函数要求(X,Y)必须严格单调
- interp2函数输入中,若已知点集(X,Y)在平面上不等间距时,函数将通过一定的变换将其转换为等间距的
- 若输入点集已经是等间距分布的话,可以在method参数前加星号(*),eg.'*cubic'。可提高插值速度
eg.二维插值函数
标签:xi,函数,插值,基础,矩阵,建模,生成,interp1,数学 From: https://blog.51cto.com/u_15849465/5801382