MATLAB数据类型和运算符+矩阵创建

简介: MATLAB数据类型和运算符+矩阵创建

个人主页:学习前端的小z

个人专栏:HTML5和CSS3悦读

本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论!


✍一、MATLAB数据类型和运算符

💎1 MATLAB的数据类型

🌹1.1 特殊常量

MATLAB有些固定的变量,称为特殊常量。这些特殊常量具有特定的意义,用户在定义变量名时应避免使用。

在MATLAB语言中,需要知道程序或者代码的运行时间,可以使用计时函数tic/toc,和etime两种方法实现。

(1)tic/toc方法

例如:

tic

%程序段

toc%返回时间就是程序运行时间

(2)etime方法

函数命令格式为:

etime(t2,t1)

其中t2和t1可以使用clock函数获得。

例如:

t1=clock

%程序段

🌹1.2 变量

变量是其值可以改变的量,是数值计算的基本单元。MATLAB变量使用无需事先定义和声明,也不需要指定变量的数据类型。可以自动根据变量值或对变量操作来识别变量类型。在变量赋值过程中,自动使用新值替换旧值,用新值类型替换旧值类型。

变量的命名规则:

(1)变量名由字母、数字和下划线组成,且第一个字符为字母,不能有空格和标点符号。例如:“1a”,“a 1”、“_a”“a%”、“b-1”和“变量a”都是不合法的变量名。

(2)变量名区分大小写。例如P1Q,p1q,P1q,p1Q是四个不同的变量。

(3)变量名的长度上限为63个字符,第63个字符后面的字符被忽略。

(4)关键字或者系统的函数名。

🌹1.3 整数

MATLAB R2020a提供8种常见的整数类型,可以使用类型转换函数将各种整数类型强制互相转换。下表给出MATLAB各种整数类型的取值范围和类型转换函数。

🌹1.4 浮点数

浮点数包括单精度型(single)和双精度型(double),默认的数据类型是双精度型。单精度型取值范围是

;双精度型取值范围是 ,浮点数类型可以用类型转换函数single ( )和double()互相转换。

>> y1=int8(1.6e16) %将浮点数强制转换为有符号8位整数

y1 = 127

>> y2=int16(1.6e16) %将浮点数强制转换为有符号16位整数

y2= 32767

>> y3=int8(2.65) % 将浮点数强制转换为有符号8位整数

y3 = 3

>> y4=uint8(-3.2) % 8位无符号整数最小值是0

y4 = 0

>> y5=1/3 % MATLAB默认的数据类型是双精度型

y5 = 0.3333

>> y6=single(1/3) % 用single()函数,将双精度型强制转换为单精度型

y6 = 0.3333

🌹1.5 复数

MATLAB用特殊变量i或j表示虚数的单位。MATLAB中复数运算可以直接进行。复数z可以通过以下几种方式产生:

z=a+bi或者z=a+bj %其中a为实部,b为虚部

z=a+bi或者z=a+bj

z=rexp(ithetha) %其中r为半径,thetha为相角(以弧度为单位)

z=complex(a,b)

z=a+b*sqrt(-1)

MATLAB复数运算常见函数如下表所示:

💎2 MATLAB运算符

三种常见运算符:算术运算符、关系运算符和逻辑运算符

🌹2.1 算术运算符

(1)加、减、乘和乘方运算规则与传统的数学定义一样,用法也相同。

(2)点运算是指对应元素点对点运算,要求参与运算矩阵的维度要一样。点左除与点右除不一样,A./B是指A的对应元素除以B的对应元素,A.\B是指B的对应元素除以A的对应元素。

(3)MATLAB除法相对复杂些,对于单个数值运算,右除和传统除法一样,即a/b=a÷b;而左除与传统除法相反,即a\b=b÷a。对于矩阵运算,左除A\B相当于矩阵方程组 的解,即X=A\B=inv(A)B; 右除B/A相当于矩阵方程组 的解,即X=B/A= Binv(A)。

下图是MATLAB中常用的数学函数:

说明:

(1)abs函数可以求实数的绝对值,复数的模和字符串的ASII值,比如:abs(-2.3)=2.3;abs(3+4i)=5; abs(‘a’)=97。

(2)MATLAB语言有四个取整的函数:round,fix,floor和ceil,它们之间是有区别的。比如:round(1.49)=1;fix(1.49)=1;floor(1.49)=1;ceil(1.49)=2。round(-1.51)=-2;fix(-1.51)=-1;floor(-1.51)=-2;ceil(-1.51)=-1。

(3)MATLAB语言中以自然对数函数是log10(x),而不是lg(x),自然对数函数是exp(x),而不是e^(x)。

(4)符号函数sign(x)的值有三种,当x=0,sign(x)=0;当x>0, sign(x)=1;当x<0, sign(x)=-1。

(5)MATLAB语言三角函数都是对弧度操作,使用三角函数时候,需要将度变换为弧度,变换公式为:弧度=2pi(度/360)。比如:数学上的sin(60),MATLAB语言应该写成:sin(2pi60/360)。

🌹2.2 关系运算符

MATLAB语言有大于、大于等于、小于、小于等于、等于和不等于六种常见关系运算符,如下表所示:

注意:关系运算符主要用于数与数、数与矩阵元素、矩阵与矩阵之间元素进行比较,返回两者之间的关系的矩阵(由数0和1组成),0和1分别表示关系不满足和满足。矩阵与矩阵之间进行比较时,两个矩阵的维度要一样。

🌹2.3 逻辑运算符

4种逻辑运算符:&(与)、|(或)、~(非)和xor(异或)。

运算规则:

(1)在逻辑运算中,所有非零元素均被认为真,用1表示;零元素为假,用0表示。

(2)如果两个同维矩阵参与逻辑运算,矩阵对应元素按标量规则进行逻辑运算,得到同维的由1或者0构成的矩阵。

(3)如果一个标量和一个矩阵参与逻辑运算,标量和矩阵的每个元素按标量规则进行逻辑运算,得到同维的由1或者0构成的矩阵。

🌹2.4 优先级

算术运算符优先级最高,关系运算符次之,逻辑运算符为最低。即程序先执行算术运算,然后执行关系运算,最后执行逻辑运算。在逻辑“与”、“或”、“非”三种运算符中,“非”的优先级最高,“与”和“或”的优先级相同,即从左往右执行。实际应用中,可以通过括号来调整运算的顺序。

例如:

>> q=(1>2|2<1+2)
q =     1

其中,MATLAB先执行算术运算:1+2=3,然后执行关系运算1>2为0,和2<3为1,最后执行逻辑运算0|1=1。


个人主页:学习前端的小z

个人专栏:HTML5和CSS3悦读

本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论!


✍二、矩阵的创建

MATLAB各种数据类型都是以矩阵形式存在,大部分运算都是基于矩阵运算,矩阵主要分为三类:数值矩阵,符号矩阵和特殊矩阵

💎1 直接输入矩阵

MATLAB语言最简单的创建矩阵方法是通过键盘在命令窗口直接输入矩阵,直接输入法的规则是:

  • 将所有矩阵元素置于一对方括号“[ ]”内;
  • 同一行不同元素之间用逗号“,”或者空格符来分隔;
  • 不同行用分号“;”或者回车符分隔。

例如:

在命令空间输入:

>> A=[1 2;3 4]       %元素之间用空格符分隔,换行用分号
   A =1     2

     3 4

MATLAB语言创建复数矩阵,方法和创建一般实数矩阵一样,虚数单位用i或者j表示。

  • 虚部和虚数单位之间可以使用乘号“”连接,也可以忽略乘号“”;
  • 复数矩阵元素可以用运算表达式;
  • 虚数单位用i或者j,显示时都是i。

例如,创建复数矩阵:

>> B=[1+2i,2-3*j;2+2*sqrt(-2),3.5j]
B =
   1.0000 + 2.0000i   2.0000 - 3.0000i
   2.0000 + 2.8284i   0.0000 + 3.5000i

💎2 冒号生成矩阵

利用冒号“:” 产生步长相等的一维数组或行向量。其格式为:

x=a:step:b

  • a是数组或者行向量的第一个元素,b是最后一个元素,step是步长增量;
  • 冒号表达式可以产生一个由a开始到b结束,以步长step自增或自减(步长为负值,b
  • 如果步长step=1,则冒号表达式可以省略步长,直接写为x=a:b。

例如:

>> x1=1:1:10
x1 =     1     2     3     4     5     6     7     8     9    10
>> x2=1:10
x2 =     1     2     3     4     5     6     7     8     9    10
>> x3=10:-2:0
x3 =    10     8     6     4     2     0

💎3 利用函数生成矩阵

🌹3.1 linspace函数

可以用linspace函数生成初值、终值和元素个数已知的一维数组或者行向量,元素之间是等差数列。其调用格式如下:

x=linspace(a,b,n)

  • a和b分别是生成一维数组或者行向量的初值和终值,n是元素总数。当n省略时候,自动产生100个元素;
  • linspace函数产生的一维数组或者行向量,n个元素是等差数列;
  • 当a>b,元素之间是等差递减;当a
  • 显然,linspace(a,b,n)与a: (b-a)/(n-1): b是等价的。

例如:

>> x1=linspace(0,10,5)
x1 =     0    2.5000    5.0000    7.5000   10.0000
>> x2=linspace(10,0,5)
x2 =   10.0000    7.5000    5.0000    2.5000       0
>> x3=10:(0-10)/(5-1):0
x3 =10.0000   7.5000    5.0000    2.5000       0

🌹3.2 logspace函数

MATLAB语言可以用logspace函数生成一维数组或者行向量,元素之间也是对数等比数列。其调用格式如下.

x=logspace(a,b,n)

其中:

  • 第一个元素为10a,最后一个元素为10b,元素个数为n的对数等比数列;
  • 如果b的值为pi,则该函数产生到pi之间n个对数等比数列。

例如:

>> x1=logspace(1,2,10)
x1 =   10.0000   12.9155   16.6810   21.5443   27.8256   35.9381   46.4159   59.9484   77.4264  100.0000
>> x2=logspace(1,pi,10)
x2 =  10.0000    8.7928    7.7314    6.7980    5.9774    5.2558    4.6213    4.0634    3.5729    3.1416

💎4 利用文本文件生成矩阵

矩阵还可以由文本文件生成,即先建立txt数据文件,然后在命令窗口直接调用该文件,就能产生数据矩阵。需要注意,txt文件中不含变量名称,文件名为矩阵变量名,每行数值个数相等。

优点:可以将数据存储在文本文件中,利用load函数,直接将数据读入工作空间中,自动生成矩阵,而不需要手动输入数据。

例如:

利用文本文件建立矩阵A,其中

把下面代码另存为工作目录中,文件名为A.txt文件。

1 2

3 4

>> load A.txt   
>> A
A =
     1     2
     3     4

💎5 利用M文件生成矩阵

对于一些比较大的常用矩阵,可以立一个M文件,在命令窗口中调用文件,适合大型矩阵创建,便于修改。需要注意,M文件中的矩阵变量名不能与文件名相同,否则变量名和文件名会混乱。

例如:

%定义exam_2_2.m函数,将下面代码另存为工作目录下的

A=[34 32 30 28 26 24

32 30 28 26 24 22

30 28 26 24 22 20

28 26 24 22 20 18

26 24 22 20 18 16]

>> exam_2_2
A =  34    32    30    28    26    24
     32    30    28    26    24    22
     30    28    26    24    22    20
     28    26    24    22    20    18
     26    24    22    20    18    16

💎6 特殊矩阵的生成

MATLAB语言中内置了许多特殊矩阵的生成函数,可以通过这些函数自动生成具有不同特殊性质的矩阵。下表是MATLAB语言常见特殊矩阵函数。

🌹6.1 单位矩阵

MATLAB语言生成单位矩阵的函数是eye,其调用格式如下:

A1=eye(n);

A2=eye(m,n)。

其中:

A1=eye(n)表示生成n行n列的单位矩阵;

A2=eye(m,n)表示生成m行n列的单位矩阵。

例如:

>> A1=eye(3)
A1=  1     0     0
     0     1     0
     0     0     1
>> A2=eye(2,3)
A2 =
   1     0     0
   0     1     0

🌹6.2 0矩阵

MATLAB语言生成所有元素为0的矩阵函数是zeros,其调用格式如下:

A1=zeros(n);

A2=zeros(m,n)。

其中:

A1= zeros(n)表示生成n行n列的0矩阵;

A2=zeros(m,n)表示生成m行n列的0矩阵。

例如:

>> A1=zeros(3)
A1 = 0     0     0
     0     0     0
     0     0     0
>> A2=zeros(1,3)
A 2=  0     0     0

🌹6.3 1矩阵

MATLAB语言生成所有元素为1的矩阵函数是ones,其调用格式如下:

A1=ones(n);

A2=ones(m,n)。

其中:

  • A1= ones(n)表示生成n行n列的1矩阵;
  • A2=ones(m,n)表示生成m行n列的1矩阵。

例如:

>> A1=ones(3)
A1=  1     1     1
     1     1     1
     1     1     1
>> A2=ones(2,3)
A2 =1     1     1
    1     1     1

🌹6.4 魔方矩阵

魔方矩阵是指行、列、正和反斜对角线元素之和都相等的矩阵,MATLAB语言用magic函数生成魔方矩阵,其调用格式如下:

A=magic(n)

其中,A=magic(n)表示生成n行n列的魔方矩阵,n>0且n≠2 。

例如:

>> A=magic(3)
A = 8     1     6
    3     5     7
    4     9     2
>> B=sum(A)     %计算每列的和
B =    15    15    15
>> C=sum(A')     %计算每行的和
C =    15    15    15

显然,由B和C结果可知,矩阵A是一个魔方矩阵。

🌹6.5 0~1均匀分布随机矩阵

MATLAB语言生成0~1均匀分布的随机矩阵函数是rand,其调用格式如下:

  • A1= rand(n)表示生成 n*n个元素值为0~1均匀分布的随机矩阵;
  • A2= rand(m, n)表示生成m*n 个元素值为0~1均匀分布的随机矩阵;
  • A3=a+(b-a)rand(m,n) 表示生成mn 个元素值为a~b均匀分布的随机矩阵。

例如:

>> A1=rand(3)
A1 = 0.8147    0.9134    0.2785
     0.9058    0.6324    0.5469
     0.1270    0.0975    0.9575
>> A3 = 10 + (15 - 10)*rand(2,3) 
A3 = 10.7094   14.5787   14.7975
     12.1088   13.9610   13.2787

🌹6.6 正态分布随机矩阵

MATLAB语言生成均值为0,单位方差的正态分布的随机矩阵函数是randn,其调用格式如下:

  • A1= randn(n)表示生成 n*n个元素且均值为0,单位方差的正态分布的随机矩阵;
  • A2= randn(m, n)表示生成m*n 个元素的正态分布随机矩阵;
  • A3=a+sqrt(b)*randn(m,n) 表示均值为a,方差为b。

例如:

>> A1=randn(3)
A1 = -1.2075    0.4889   -0.3034
       0.7172    1.0347    0.2939
       1.6302    0.7269   -0.7873
>> A3 = 1 + sqrt(0.1)*randn(2,3)  % 均值为1,方差为0.1
A3 =
 1.1028    1.4333    0.9677
 0.7613    0.4588    0.9236

🌹6.7 对角矩阵

MATLAB语言生成对角矩阵函数是diag,其调用格式如下:

A=diag(v,k)表示生成以向量v元素作为矩阵A的第k条对角线元素的对角矩阵。

当k=0时,v 为A的主对角线;当k>0时,为主对角线上方第k条对角线元素;当k<0时,为主对角线下方第k条对角线元素。

例如:

>> v=[3 2 1];
>> A1=diag(v)        
A1 = 3     0     0
     0     2     0
     0     0     1
>> A2=diag(v,1)
A2 =   0     3     0     0
       0     0     2     0
       0     0     0     1
       0     0     0     0

若A是一个矩阵,则diag(A)是提取矩阵A的对角线矩阵。

>> A=[1 2 3;4 5 6];
>> B=diag(A)
B = 1
    5

🌹6.8 三角矩阵

MATLAB语言生成三角矩阵函数是tril和triu,其调用格式如下:

  • A1=tril(A,k)表示生成矩阵A中第k条对角线的下三角部分的矩阵;
  • A1=triu(A,k)表示生成矩阵A中第k条对角线的上三角部分的矩阵;
    其中, k=0为A的主对角线,k>0为A的主对角线以上, k<0为A的主对角线以下。

例如:

>> A=ones(4);
>> L=tril(A,-2)
L =
     0     0     0     0
     0     0     0     0
     1     0     0     0
     1     1     0     0
>> U=triu(A,0)
U =
     1     1     1     1
     0     1     1     1
     0     0     1     1
     0     0     0     1


目录
相关文章
|
7月前
|
索引
matlab--------矩阵重构,重新排列的相关函数说明
matlab--------矩阵重构,重新排列的相关函数说明
196 0
matlab--------矩阵重构,重新排列的相关函数说明
|
7月前
|
索引
matlab日常学习-------矩阵
matlab日常学习-------矩阵
78 0
|
2月前
|
存储 数据处理 索引
MATLAB中的基本数据类型与变量操作
【10月更文挑战第1天】 MATLAB 是一种广泛应用于数学计算和科学研究的编程语言,其核心是矩阵运算。本文详细介绍了 MATLAB 中的基本数据类型,包括数值类型(如 `double` 和 `int`)、字符数组、逻辑类型、结构体、单元数组和函数句柄,并通过代码示例展示了变量操作方法。
190 0
|
2月前
|
Serverless
MATLAB中的矩阵与向量运算
【10月更文挑战第2天】本文全面介绍了MATLAB中的矩阵与向量运算,包括基本操作、加减乘除、转置、逆矩阵、行列式及各种矩阵分解方法。通过丰富的代码示例,展示了如何利用矩阵运算解决线性方程组、最小二乘法拟合、动态系统模拟和电路分析等问题。掌握这些运算不仅提升编程效率,还能在工程计算和科学研究中发挥重要作用。
105 1
|
6月前
|
机器学习/深度学习 数据可视化 算法
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
59 0
|
7月前
|
Serverless 索引
matlab--------矩阵的运算
matlab--------矩阵的运算
70 1
matlab--------矩阵的运算
|
7月前
|
数据安全/隐私保护
加速度、速度、位移互相转换,加速度转位移matlab程序,任意数据类型
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
7月前
【数值分析】用幂法计算矩阵的主特征值和对应的特征向量(附matlab代码)
【数值分析】用幂法计算矩阵的主特征值和对应的特征向量(附matlab代码)
|
7月前
|
存储 容器
第一章:MATLAB基础教程:变量和数据类型
第一章:MATLAB基础教程:变量和数据类型
71 0
|
7月前
|
存储 JavaScript
MATLAB实战 | 求矩阵指数、预定义变量i和j的含义以及梯形积分法
MATLAB实战 | 求矩阵指数、预定义变量i和j的含义以及梯形积分法
188 0
MATLAB实战 | 求矩阵指数、预定义变量i和j的含义以及梯形积分法

热门文章

最新文章