MATLAB基础

目录

一、MATLAB介绍

二、MATLAB基本指令介绍

2.1.数值数据及操作

[2.2. 变量及其操作](#2.2. 变量及其操作)

[2.2.1 变量命名](#2.2.1 变量命名)

[2.2.2 变量赋值](#2.2.2 变量赋值)

[2.2.3 预定义变量](#2.2.3 预定义变量)

2.3.数组及其操作

2.3.1构造矩阵

2.3.1.1构造行向量

[2.3.2 数组的大小的获取](#2.3.2 数组的大小的获取)

[2.3.3 引用矩阵元素](#2.3.3 引用矩阵元素)

[2.3.3.1 find函数](#2.3.3.1 find函数)

[2.3.3.2 利用冒号表达式引用多个数组元素](#2.3.3.2 利用冒号表达式引用多个数组元素)

[2.3.3.3 删除矩阵行或列,采用将其置为空矩阵将某些行或列从矩阵中删除。 ​编辑](#2.3.3.3 删除矩阵行或列,采用将其置为空矩阵将某些行或列从矩阵中删除。 编辑)

[2.3.3.4 改变矩阵形状](#2.3.3.4 改变矩阵形状)

[2.3.4 算术运算](#2.3.4 算术运算)

[2.3.5 关系运算](#2.3.5 关系运算)

[2.3.6 逻辑运算](#2.3.6 逻辑运算)

三、程序控制结构

[3.1 顺序结构](#3.1 顺序结构)

[3.2 选择结构](#3.2 选择结构)

3.2.1.if语句

[3.2.2 switch语句](#3.2.2 switch语句)

[3.3 循环结构](#3.3 循环结构)

3.3.1.for语句

3.3.2.while语句

[3.3.3 break语句和continue语句](#3.3.3 break语句和continue语句)

[3.4 函数](#3.4 函数)

[3.4.1 函数文件](#3.4.1 函数文件)

[3.4.2 匿名函数](#3.4.2 匿名函数)

四、曲线的绘制

[4.1 二维曲线的绘制](#4.1 二维曲线的绘制)

[4.2 设置曲线样式](#4.2 设置曲线样式)

[4.3 图形标注与坐标控制](#4.3 图形标注与坐标控制)

[4.4 三维曲线绘制](#4.4 三维曲线绘制)

[4.5 三维曲面绘制](#4.5 三维曲面绘制)

4.5.1产生网格坐标矩阵

五、特殊矩阵及矩阵分析

[5.1 零矩阵/幺矩阵](#5.1 零矩阵/幺矩阵)

[5.2 随机矩阵](#5.2 随机矩阵)

[5.3 矩阵结构变换](#5.3 矩阵结构变换)

5.3.1.对角阵

六、数据插值

七、曲线拟合

八、建立符号对象


一、MATLAB介绍

‌**MATLAB(Matrix Laboratory,矩阵实验室)是由美国MathWorks公司出品的商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算**‌。MATLAB集成了数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等功能,适用于科学研究、工程设计以及需要有效数值计算的众多科学领域。‌

二、MATLAB基本指令介绍

2.1.数值数据及操作

MATLAB提供4种转换函数,用于采取指定方式将浮点型数据转换为整型。

  • round函数:四舍五入为最近的整数。
  • fix函数:朝零方向取整。
  • floor函数:朝负无穷大方向取整。
  • ceil函数:朝正无穷大方向取整。

示例代码及运行结果:

2.2. 变量及其操作

2.2.1 变量命名

在MATLAB中,变量名是以字母开头,后跟字母、数字或下划线的字符序列,最多63个字符。如:x、x_1、xy12

变量名区分字母的大小写。例如addr、Addr和ADDR表示3个不同的变量。

不能使用MATLAB的关键字作为变量名。如:if,end

2.2.2 变量赋值

MATLAB中赋值语句有两种格式:

  • 变量=表达式
  • 表达式

如果在命令的最后加分号,MATLAB仅仅执行赋值操作,不显示运算的结果。在MATLAB命令后面可以加上注释,用于解释或说明命令的含义,对命令处理结果不产生任何影响。注释以%开头,后面是注释的内容。

2.2.3 预定义变量

|-------|-------------|-----------------------------------------------------|
| 预定义变量 | 含义 | 示例 |
| ans | 存储计算结果的默认变量 | |
| pi | 圆周率兀的近似值 | |
| Inf | 无穷大 | 1/0,1.e1000,2^2000,exp(1000)的结果为Inf,log(0)的结果为-Inf |
| NaN | 非数值 | 0/0,Inf/Inf,Inf-Inf,0*Inf的结果为NaN |
[表1 常用预定义变量]

2.3.数组及其操作

2.3.1构造矩阵

MATLAB中建立矩阵的最简单的方法是使用矩阵构造运算符[],如:

2.3.1.1构造行向量

方法一: 使用冒号表达式 a:b:c

其中,a为初始值,b为步长,c为终止值。冒号表达式可产生一个由a开始到c结束,以步长b自增的行向量。如:

方法二:用linspace函数构建线性等间距的行向量

函数的调用格式为:linspace(a, b, n)

其中,参数a和b是生成向量的第1个和最后1个元素,选项n指定向量元素个数。当n省略时,默认生成100个元素。

2.3.2 数组的大小的获取

(1)size函数

size函数用于获取数组指定维度的长度,函数的调用格式为:size(A, dim)

其中,A是数组,dim指定维度(1,2),当dim省略时,则返回一个向量,向量各个元素的值对应每一个维度的长度。

(2)length函数和numel函数

length函数用于获取最大数组维度的长度,即length(A) = max(size(A));numel函数用于获取数组元素的个数。

2.3.3 引用矩阵元素

3.3.1 引用单个矩阵元素 :矩阵名(row, col)

在MATLAB中,也可以采用矩阵元素的索引来引用矩阵元素,其中矩阵的索引顺序为从第一列的元素开始计数,当到达该列的末尾元素后,从下一列的第一个元素继续,直到走完该矩阵。

2.3.3.1 find函数

查找矩阵中满足条件的元素用法: A=[0,2,0;4,5,6];

  • find(A)返回A中所有非零元素的索引
  • find(A,n)返回A中n个非零元素的索引
  • [r,c]= find(A)返回A中所有非零元素所在行和列
  • find(A>2)返回A中所有大于2的元素的索引
2.3.3.2 利用冒号表达式引用多个数组元素

利用向量和end运算符等来表示矩阵下标,获得子矩阵。

2.3.3.3 删除矩阵行或列,采用将其置为空矩阵将某些行或列从矩阵中删除。
2.3.3.4 改变矩阵形状

(1)reshape函数

reshape(A,m,n)函数在矩阵元素个数保持不变的前提下,将矩阵A重新排成m × n的二维矩阵。

(2)矩阵堆叠

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

2.3.4 算术运算

(1)MATLAB常用数学函数

表中三角函数都有两个,函数末尾字母为d的函数的参数是角度,另一个函数的参数是弧度,例如sin(x)中的x为弧度,而sind(x)中的x为角度

(2)abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。

2.3.5 关系运算

MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、= =(等于)、~=(不等于)。

(1)当参与比较的量是两个标量时,若关系成立,关系表达式结果为1,否则为0。

(2)当参与比较的量是两个维度相同的矩阵时,逐个比较对两矩阵相同位置的元素,并给出元素的比较结果。

(3)当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素逐个比较,并给出元素的比较结果。

2.3.6 逻辑运算

MATLAB提供了&(与)、|(或)和~(非)逻辑运算符和异或运算函数xor(a, b),用于处理矩阵的逻辑运算。设参与逻辑运算的是两个标量a和b。

  • a & b:逻辑与运算,当a、b全为非零时,运算结果为1,否则为0。
  • a | b:逻辑或运算,当a、b中只要有一个非零,运算结果为1。
  • ~a:逻辑非运算,当a是零时,运算结果为1;当a非零时,运算结果为0。
  • 函数xor(a, b):逻辑异或运算,当a、b的值不同时,运算结果为1,否则运算结果为0。

三、程序控制结构

3.1 顺序结构

顺序结构是MATLAB程序中最基本的结构,表示程序中的各操作是按照它们出现的先后顺序执行的。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算、输出三部曲的程序就是顺序结构。

1.input函数:用于打开一个输入框来获取数据,该函数的调用格式为:

A=input(提示信息) 其中,提示信息为一个字符串,用于提示用户输入什么样的数据。

若要输入一个字符串,输入的字符串前后加单撇号或双引号,界定字符串的起始和结束。

2.disp函数:用于在命令窗口显示变量和表达式的值,其调用格式为

disp(输出项) 其中,输出项既可以为字符串,也可以为矩阵。

3.2 选择结构

3.2.1.if语句

if  条件1
    语句块1
elseif  条件2
    语句块2
...
elseif  条件n
    语句块n
else
    语句块n+1
end

3.2.2 switch语句

switch  测试表达式
    case  结果表1
        语句块1
    case  结果表2
        语句块2
        ......
    case  结果表n
        语句块n
    otherwise
        语句块n+1
 end

switch子句后面的表达式应为一个标量或一个字符串,case子句后面的结果不仅可以为一个标量或一个字符串,而且还可以为一个将多个结果用大括号括起来的单元数据(Cell)。如果case子句后面的结果为一个单元数据,则表达式的值等于该单元数据中的某个元素时,执行相应的语句组。

3.3 循环结构

3.3.1.for语句

用于处理能事先确定循环次数的情况。

for 循环变量=表达式1:表达式2:表达式3
     循环体语句
end

%其中,表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表
达式2可以省略。

3.3.2.while语句

While 条件
       循环体语句
end

3.3.3 break语句和continue语句

break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。

continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环

3.4 函数

3.4.1 函数文件

函数名的命名规则与变量名的命名规则相同。字母、数字、下划线,字母开头

函数文件由function语句引导,其基本结构为

function 输出形参表=函数名(输入形参表)

注释说明部分

函数体语句

其中,以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该用方括号括起来。

函数文件中的变量的作用域默认是局部的。全局变量用global命令定义,命令格式为:

global var1 var2 ... varN

变量var1、var2、varN之间用空格分隔。

ps: 函数文件名通常由函数名再加上扩展名.m组成,不过函数文件名与函数名也可以不相同。当两者不同时,MATLAB将忽略函数名而确认函数文件名,因此,调用时使用函数文件名。

函数调用时各实参出现的顺序,应与函数定义时形参的顺序一致;[输出实参表]=函数名(输入实参表)

3.4.2 匿名函数

匿名函数是一种特殊的函数定义形式,不存储成函数文件。匿名函数的调用与标准函数的调用方法一样,但定义只能包含表达式。通常,匿名函数与函数句柄变量相关联,通过句柄变量调用该匿名函数。定义匿名函数的基本格式为:

函数句柄=@(匿名函数形参表) 匿名函数表达式

四、曲线的绘制

4.1 二维曲线的绘制

(1)曲线基本属性

为了加强对比效果,我们常常会在plot函数中加上选项,用于指定所绘曲线的线型、颜色和数据点标记。

|-----|---------|
| 选项 | 线形 |
| - | 实现(默认值) |
| : | 虚线 |
| - - | 双画线 |
| -. | 点画线 |
[表2 线形选项]

4.2 设置曲线样式

要设置曲线样式可以在plot函数、fplot函数中加绘图选项,其调用格式为:

plot(x,y,选项)

plot(x1,y1,选项1,x2,y2,选项2,...,xn,yn,选项n)

fplot(funx,选项)

  • fplot(funx,funy,选项)

题:在同一坐标内,分别用不同线型和颜色绘制曲线y=𝑥2−3y=x^2-3和y=2sin𝑥**+3cos𝑥y=2 sin⁡x+3 cos⁡x,并标记两曲线交点。

x=linspace(-3,3,1000);
y1=x.*x-3;
y2=2*sin(x)+3*cos(x);
k=find(abs(y1-y2)<1e-2);%查找y1与y2相等点(近似相等)的下标
x1=x(k);				%取y1与y2相等点的x坐标
y3=x1.*x1-3;			%求y1与y2值相等点的y坐标
plot(x,y1,x,y2,'k:',x1,y3,'bp');

4.3 图形标注与坐标控制

(1)图形标注

图形标注函数的调用格式如下。

  • title(坐标轴标题)
  • xlabel(x轴说明)
  • ylabel(y轴说明)
  • text(x, y, 图形说明)
  • legend(图例1, 图例2, ...)

title函数用于给坐标轴添加标题;xlabel、ylabel分别用于给x轴、y轴添加说明;text函数用于在指定位置(x,y)添加图形说明;legend函数用于添加图例,说明绘制曲线所用线型、颜色或数据点标记。

(2)多图形显示

图形窗口的分割:subplot函数,用来实现对当前图形窗口的分割。subplot函数的调用格式为:

subplot(m, n, p)

其中,参数m和n表示将图形窗口分成m行n列个绘图区,区号按行优先编号。第3个参数指定第p个区为当前活动区,若p是向量,则表示将向量中的几个区合成1个绘图区。

4.4 三维曲线绘制

(1)plot3函数

基本调用格式为:plot3(x, y, z, 选项)

参数x、y、z组成一组曲线的空间坐标。

通常,x、y和z为长度相同的向量, x、y、z对应元素构成一条曲线上各数据点的空间坐标;当x、y、z是同样大小的矩阵时,则以x、y、z对应列元素作为数据点坐标,曲线条数等于矩阵列数。当x、y、z中有向量,也有矩阵时,行向量的长度与矩阵的列数相同,列向量的长度与矩阵的行数相同。

题:

t=0:pi/20:10*pi;
x=sin(t)+t.*cos(t);
y=cos(t)-t.*sin(t);
z=t;
plot3(x,y,z);
title('螺旋线');
xlabel('X');ylabel('Y');zlabel('Z');
grid on;

4.5 三维曲面绘制

4.5.1产生网格坐标矩阵

在 MATLAB 中,产生平面区域内的网格坐标矩阵有两种方法

(1)利用矩阵运算生成。

a=2:6;
b=(3:8)';
X=[a;a;a;a;a;a];
Y=[b,b,b,b,b];

(2)调用 meshgrid 函数生成二维网格坐标矩阵)

[X,Y]= meshgrid(x, y)

a = 2:6;
b=(3:8)';
[X,Y]=meshgrid(a b);

(3)mesh 函数和 surf 函数

mesh函数用于绘制三维网格图,surf函数用于绘制三维曲面图。surf 函数和 mesh 函数的调用格式为:

mesh(x,y,z,c)

surf(x,y,z,c)

x、y定义网格顶点的 xy平面坐标,z定义网格顶点的高度。选项c用于指定在不同高度下的补面颜色。

题:绘制三维曲面图z = sinx2 + cosy2,x∈[0,π],y∈[0,π/2]。

[x,y]=meshgrid(0:pi/50:pi, 0:pi/50:pi/2);
z=sin(x.^2)+cos(y.^2);
subplot(1,2,1)
mesh(x,y,z);
subplot(1,2,2)
surf(x,y,z); 

五、特殊矩阵及矩阵分析

5.1 零矩阵/幺矩阵

MATLAB提供了如下函数,用于创建零矩阵/幺矩阵。

  • zeros函数:生成全0矩阵,即零矩阵。
    • ones函数:生成全1矩阵,即幺矩阵。
      • eye函数:生成单位矩阵,即对角线上的元素为1、其余元素为0的矩阵。
        • true函数:生成全1逻辑矩阵。
          • false函数:生成全0逻辑矩阵。

以zeros函数为例说明函数用法。

zeros(m):生成m × m零矩阵,m缺省时,生成一个值为0的标量。

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

zeros(m, classname):生成m × m零矩阵,矩阵元素为classname指定类型,默认为double型。

zeros(m, 'like', p):生成m × m零矩阵,矩阵元素的类型与变量p一致。

5.2 随机矩阵

  • rand(m, n)函数:生成一组值在(0, 1)区间均匀分布的随机数,构建m × n矩阵。
    • randi(imax, m, n)函数:生成一组值在[1, imax]区间均匀分布的随机整数,构建m × n矩阵。

      • randn(m, n)函数:生成一组均值为0、方差为1的标准正态分布随机数,构建m × n矩阵。
        • randperm(n, k)函数:将[1, n]区间的整数随机排列,构建一个向量,参数k指定向量的长度。

        • 题:建立随机矩阵: (1)在区间[10, 30]内均匀分布的4阶随机矩阵。

          (2)均值为0.6、方差为0.1的4阶正态分布随机矩阵。

          产生(0,1)区间均匀分布随机矩阵使用rand函数,假设得到了一组满足(0,1)区间均匀分布的随机数xi,则若想得到在任意[a, b]区间上均匀分布的随机数,只需用

          yi = a + (ba)xi计算即可。产生均值为0、方差为1的标准正态分布随机矩阵使用randn函数,假设已经得到了一组标准正态分布随机数xi,如果想更一般地得到均值为μ、方差为σ2的随机数,可用yi = μ + σxi计算出来。针对本例,命令如下:

      a=10;
      b=30;
      x=a+(b-a)*rand(4) %随机矩阵
      y=0.6+sqrt(0.1)*randn(4) %确定均值和方差的矩阵

5.3 矩阵结构变换

5.3.1.对角阵

除了主对角线上的元素外,其余元素都等于零

(1)提取矩阵的对角线元素

Am × n矩阵,函数diag(A)用于提取矩阵A主对角线元素

diag(A,k):提取第k条对角线的元素。主对角线为第0条对角线;与主对角线平行,往上为第1条、第2条、...、第n条对角线,往下为第 − 1条、第 − 2条、...、第 − n条对角线。例如,对于上面建立的A矩阵,提取其主对角线两侧对角线的元素。

(2)构造对角矩阵

设V为具有m个元素的向量,diag(V, k)的功能是生成一个n × n(n = m + |k|)对角阵,其第k条对角线的元素即为向量V的元素。例如:

(3) 三角阵

上三角阵:对角线以下的元素全为0的一种矩阵

下三角阵:对角线以上的元素全为0的一种矩阵。

函数:

  • triu(A):求矩阵A的上三角阵的。
    • triu(A,k):求矩阵A的第k条对角线以上的元素。
      • tril(A):求矩阵A的下三角阵的。
      • tril(A,k):求矩阵A的第k条对角线

(4)矩阵的旋转

函数rot90(A, k):以90°为单位旋转矩阵A,选项k指定旋转k倍90°,默认k为1。当k>0时,将矩阵A按逆时针方向进行旋转;当k<0时,将矩阵A按顺时针方向进行旋转。例如:

(5)矩阵的翻转

  • fliplr(A):对矩阵A实施左右翻转
    • flipud(A):对矩阵A实施上下翻转的函数。

(6)矩阵求逆

inv(A)函数用来计算方阵的逆矩阵。若A为奇异矩阵、接近奇异矩阵或降秩矩阵时,系统将会给出警告信息。inv(A)函数等效于A^(-1)。

题:求方阵A的逆矩阵并赋值给B,且验证AB是互逆的

(7)矩阵求值

函数det(A)用于求矩阵A的行列式。

(8) 矩阵的秩

函数rank(A)求矩阵秩。

(9) 特征向量

对于n阶方阵A,求数λ和向量ζ,使得等式Aζ = λζ成立,满足等式的数λ称为A的特征值,而向量ζ称为A的特征向量。计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有如下3种。

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

[V,D] = eig(A):求矩阵A的全部特征值D、右特征向量V。

[V,D,W] = eig(A):返回以特征值为主对角线的对角阵D、以右特征向量构成的矩阵V,以及以左特征向量构成的矩阵W。

(10)矩阵的最值

求一个数据序列最大值的函数max,其调用格式如下:

Y = max(X):若X是向量,则返回向量X的最大值;若X是矩阵,则返回一个包含每一列最大值的行向量。

[Y,U] = max(X,[],dim):沿维度dim返回最大值。dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。

求矩阵最小值的函数是min,其用法和max相同。

函数max和min还能对两个同型的向量或矩阵进行比较。max函数调用格式如下。

max(X,Y):返回值是与XY同型的向量或矩阵,其中的每个元素等于XY对应元素的较大者。

max(X,n):n是一个标量,返回值是与X同型的向量或矩阵,其中的每个元素等于X对应元素和n中的较大者。

(11)求和与求积

sum函数是用于对数据序列求和。调用格式如下:

S = sum(X):如果X是一个向量,则返回向量各元素的和。如果X是一个矩阵,则返回一个行向量,其第i个元素是X的第i列的元素和。

S = sum(X,dim):当dim为1(默认值)时,该函数等同于sum(X);当dim为2时,返回一个列向量,其第i个元素是X的第i行的各元素之和。

数据序列求积的函数是prod

题:

(12) 平均值和中值

数据序列的平均值指的是算术平均值。中值是指在数据序列中其值的大小恰好处在中间的元素。例如:数据序列 -2,5,7,9,12的中值为7

如果数据为偶数个,则中值等于中间的两项之平均值。例如,数据序列 -2,5,6,7,9,12中,处于中间的数是6和7,故其中值为此两数之平均值6.5。

求数据序列平均值的函数是mean,调用格式如下:

M = mean(X):如果X是一个向量,则返回向量的算术平均值。如果X是一个矩阵,则返回一个行向量,其第i个元素是X的第i列的算术平均值。

M = mean(X,dim):当dim为1(默认值)时,该函数等同于mean(X);当dim为2时,返回一个列向量,其第i个元素是X的第i行的算术平均值。ps:dim默认为1,求的均为列的结果,最终为行向量

求数据序列中值的函数是median

(13) 累加和与累乘积

求累加和的cumsum函数与求累乘积的cumprod函数。cumsum函数的调用格式如下:

B = cumsum(X):如果X是一个向量,则返回累加和向量。如果X是一个矩阵,返回的矩阵的第i列是X的第i列的累加和向量。

B = cumsum(X,dim):返回多维数组的累加和。若X是矩阵,当dim为1(默认值)时,返回的矩阵的第i列是X的第i列的累加和向量;当dim为2时,返回的矩阵的第i行是X的第i行的累加和向量。

累乘积的cumprod函数用法和cumsum函数相同。

(14)标准差与方差

标准方差描述了一组数据波动的大小,方差越小,数据波动越小。在MATLAB中,提供了计算数据序列的标准方差的函数std。对于向量X,std(X)返回一个标准方差。对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列的标准方差。std函数的一般调用格式为

Y=std(A,flag,dim)

其中flag取0或1,当flag = 0时,按σ1所列公式计算标准方差;当flag = 1时,按σ2所列公式计算标准方差。dim取1或2。当dim = 1时,求各列元素的标准方差;当dim = 2时,则求各行元素的标准方差。默认flag = 0,dim = 1。

方差var函数的调用格式为:

V = var(X, w, dim)

对于向量X,var(X)返回一个标量。对于矩阵X,var(X)返回一个行向量,各个元素是矩阵X各列或各行的方差。

其中,选项w用于指定权重方案。若w为0(默认值),则按观测值数量-1(即k=n-1)实现归一化;若w为1,则按观测值数量(即k=n)实现归一化。

选项dim指定沿维度dim计算方差。对于矩阵,当dim 为1(默认值)时,求各列元素的方差;当dim 为 2时,求各行元素的方差。

(14) 排序

对数组元素进行排序的函数sort(X),调用格式为:

[Y,I]=sort(X, dim, mode)

其中Y是排序后的矩阵,而I记录Y中的元素在X中的位置。

选项dim指定排序的维度,若dim 为1(默认值),则按列排序;若dim = 2,则按行排序。

选项mode指明排序的方法,'ascend'(默认值)为升序,'descend'为降序。

六、数据插值

实现一维插值的函数是interp1,其调用格式为

vq = interp1(x,v,xq,method)

xv是两个等长的已知向量,分别存储采样点和采样值。若同一个采样点有多种采样值,则v可以为矩阵,v的每一列对应一种采样值。

xq存储插值点,vq是一个列的长度与xq相同、宽度与v相同的矩阵。

选项method用于指定插值方法,可取值如下:

'linear'(默认值)、 'pchip'、'spline'、'nearest'、'next'、'previous'

method是插值方法

●'linear':线性插值。线性插值是默认的插值方法。它是把与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。

● 'pchip':分段三次埃尔米特插值。

●'nearest':最近点插值。根据已知插值点与已知数据点的远近程度进行插值。插值点优先选择较近的数据点进行插值操作。

●'cubic':3次多项式插值。根据已知数据求出一个3次多项式,然后根据该多项式进行插值。

●'spline':3次样条插值。所谓3次样条插值,是指在每个分段(子区间)内构造一个3次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有光滑的条件。

题:

七、曲线拟合

polyfit函数来求得最小二乘拟合多项式的系数。polyfit函数的调用格式为

p = polyfit(x,y,n)

[p,S] = polyfit(x,y,n)

[p,S,mu]=polyfit(X,Y,n)

xy是两个等长的向量,存储采样点x和采样值y

产生一个n次多项式的系数向量p及其在采样点的误差向量S。p是一个长度为n+ 1的向量,p的元素为多项式p1xn+p2xn−1+...+pnx+pn+1的系数。

mu是一个二元列向量,

mu(1)是mean(x)平均值, mu(2)是std(x)标准差。

题:

data=[0,15.18;34,21.36;67,25.72;101,32.29;135,34.03; ...
    202,39.45;259,43.15;336,43.46;404,40.83;471,30.75]; 
x=data(:,1);
y=data(:,2);
f=polyfit(x,y,2);%拟合2次多项式
yi=polyval(f,x); %把x带入多项式求值
plot(x,y,'rp',x,yi)

八、建立符号对象

MATLAB提供了两个建立符号变量的函数:sym和syms,两个函数的用法不同。

sym函数用于创建单个符号变量,基本调用格式为:

x = sym('x')
建立符号变量时可以指定该变量所属集合:x = sym('x',set)

set可取值为'real'、'integer'、'positive' 或'rational'。
sym 函数可以将常量、向量、矩阵转换为符号对象:

x = sym(Num,flag)

Num可以是常量、向量或矩阵,选项flag用于指定将浮点数转换为符号对象时所采用的方法,可取值有'r'、'd'、'e'和'f',分别代表将Num转换为有理式、十进制数、带估计误差的有理式、与精确值对应的分式,默认为'r'。

syms函数用于创建多个符号变量,基本调用格式为:syms x y z;

相关推荐
胜天半月子1 小时前
Python | 学习type()方法动态创建类
开发语言·python·学习
Zer0_on2 小时前
C++string类
开发语言·c++
Tomorrow'sThinker2 小时前
25年1月更新。Windows 上搭建 Python 开发环境:Python + PyCharm 安装全攻略(文中有安装包不用官网下载)
开发语言·python·pycharm
禁默2 小时前
深入浅出:Java 抽象类与接口
java·开发语言
白宇横流学长3 小时前
基于Java的银行排号系统的设计与实现【源码+文档+部署讲解】
java·开发语言·数据库
勉灬之3 小时前
封装上传组件,提供各种校验、显示预览、排序等功能
开发语言·前端·javascript
西猫雷婶6 小时前
python学opencv|读取图像(二十三)使用cv2.putText()绘制文字
开发语言·python·opencv
我要学编程(ಥ_ಥ)6 小时前
速通前端篇——JavaScript
开发语言·前端·javascript
HEU_firejef7 小时前
设计模式——工厂模式
java·开发语言·设计模式
云计算DevOps-韩老师7 小时前
【网络云SRE运维开发】2024第52周-每日【2024/12/31】小测-计算机网络参考模型和通信协议的理论和实操考题
开发语言·网络·计算机网络·云计算·运维开发