MATLAB 之 数值数据,矩阵的表示和变量及其操作

news2024/12/23 11:00:31

文章目录

  • 一、数值数据
    • 1. 数值数据类型的分类
      • 1.1 整型
      • 1.2 浮点型
      • 1.3 复型
    • 2. 数据的输出格式
  • 二、矩阵的表示
    • 1. 矩阵的建立
      • 1.1 直接输入法建立矩阵
      • 1.2 已建好的矩阵建立更大的矩阵
    • 2. 冒号表达式
    • 3. 矩阵元素的引用
      • 3.1 矩阵元素的引用方式
      • 3.2 利用冒号表达式获得子矩阵
      • 3.3 利用空矩阵删除矩阵的元素
      • 3.4 改变矩阵的形状
  • 三、变量及其操作
    • 1. 变量与赋值语句
    • 2. 预定义变量
    • 3. 变量的管理
      • 3.1 内存变量的删除与修改
      • 3.2 内存变量文件

  • MATLAB 数据类型较为丰富,既有数值型、字符串等基本数据类型,又有结构(Structure)、单元(Cell)等复杂的数据类型。
  • 在 MATLAB 中,没有专门的逻辑型数据,而以数值 1 (非零)表示真,以数值 0 表示假。
  • MATLAB 各种数据类型都以矩阵形式存在,所以矩阵是 MATLAB 最基本的数据对象形式。

一、数值数据

  • MATLAB 数值数据是最基本的一种数据类型,有整型、浮点型和复数型。系统给每种数据类型分配不同个数字节的内存单元,由此决定了数据的表示范围。

1. 数值数据类型的分类

1.1 整型

  • 整形数据是不带小数的数,有带符号整数和无符号整数之分。下表列出了各种整型数据的取值范围和对应的转换函数。
类型取值范围转换函数类型取值范围转换函数
无符号 8 位整型0~28-1uint8无符号 16 位整型0~26-1uint16
无符号 32 位整型0~232-1uint32无符号 64 位整型0~264-1uint64
带符号 8 位整型-27~27-1int8带符号 16 位整型-215~215-1int16
带符号 32 位整型-231~231-1int32带符号 64 位整型-263~263-1int64
  • 例如:
>> x=int8(129)

x =

  int8

   127

>> x=int16(129)

x =

  int16

   129

  • 带符号 8 位整型数据的最大值是 127,int8 函数转换时只输出最大值,因此,129 在使用 int8 函数转化为带符号的 8 位整型时输出 127,而转换为带符号 16 位整型仍是 129。

1.2 浮点型

  • 浮点型数据有单精度(single)和双精度(double)之分,单精度型实数在内存中占用 4 个字节,双精度型实数在内存中占用 8 个字节,双精度型的数据精度更高。在 MATLAB 中,数据默认为双精度型。
  • single 函数可以将其他类型的数据转换为单精度型,double 函数可以将其他类型的数据转换为双精度型。

1.3 复型

  • 复型数据包括实部和虚部两个部分,实部和虛部默认为双精度型。
  • 在 MATLAB 中,虚数单位用 i 或 j 表示。例如,6+5i 与 6+5j 表示的是同一个复数,也可以写成 6+5 * i 或 6+5 * j ,这里将 i 或 j 看作一个运算量参与表达式的运算。
  • 如果构成一个复数的实部或虚部不是常量,则使用 complex 函数生成复数。例如,complex(2,x) 生成一个复数,其实部为 2,虚部为 x。
  • 可以使用 real 函数求复数的实部,imag 函数求复数的虚部,abs 函数求复数的模,angle 函数求复数的幅角,conj 函数求复数的共轭复数。
  • 例如:
>> x=3;
>> y=complex(2,x)  %转换为复数

y =

   2.0000 + 3.0000i

>> real(y)  %复数的实部

ans =

     2

>> conj(y)  %复数的共轭

ans =

   2.0000 - 3.0000i
   
>> imag(y)  %复数的虚部

ans =

     3

>> angle(y)  %复数的幅角

ans =

    0.9828

  • 也可以使用 class 函数获取某个数据的类型。例如:
>> class(9)

ans =

    'double'

  • 该结果表明,MATLAB 数值数据默认位双精度型。

2. 数据的输出格式

  • MATLAB 用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。如 3.14159、 -9.359i、3+5i 是采用日常记数法表示的常数,与通常的数学表示一样。
  • 又如 1.78029e2、6.732E2i、1234e-3-5i 是采用科学记数法表示的常数,在这里用字母 e 或 E 表示以 10 为底的指数。
  • 在一般情况下,MATLAB 内部每一个数据元素都是用双精度数来表示和存储的。数据输出时用户可以用 format 命令设置或改变数据输出格式。forma t命令的格式如下:
  format 格式符
  • 其中,格式符决定数据的输出格式,各种格式符及其含义如下表所示。
格式符含义
short输出小数点后 4 位,最多不超过 7 位有效数字。对于大于 1000 的实数,用 5 位有效数字的科学记数形式输出
long15 位有效数字形式输出
short e5 位有效数字的科学记数形式输出
long e15 位有效数字的科学记数形式输出
short g从 short 和 short e 中自动选择最佳输出方式
long g从 long 和 long e 中自动选择最佳输出方式
rat近似有理数表示
hex十六进制表示
+正数、负数、零分别用 +、-、空格表示
bank银行格式,用元、角、分表示
compact输出变量之间没有空行
loose输出变量之间有空行
  • 这里需要注意的是,format 命令只影响数据输出格式,而不影响数据的计算和存储。
  • 如果输出矩阵的每个元素都是纯整数,MATLAB 就用不加小数点的纯整数格式显示结果。
  • 只要矩阵中有一个元素不是纯整数,MATLAB 将按当前的输出格式显示计算结果。
  • 如果 format 命令后面不加格式符,则回到默认输出格式。默认的输出格式是 short 格式。
  • 假定输入以下命令:
>> x=4/3
  • 那么,在各种不同的格式符下的输出结果如下。
  • (1) 短格式(short):1.3333。
  • (2) 短格式 e 方式(short e):1.3333e+00。
  • (3) 长格式(long):1.3333333333333。
  • (4) 长格式 e 方式(long e):1.3333333333333e+00。
  • (5) 银行格式(bank):1.33。
  • (6) 十六进制格式(hex):3555555555555。
  • (7) + 格式(+):+。
  • 注意,hex 输出格式是把计算机内部表示的数据用十六进制数输出。对于整数不难理解,但对于单精度或双精度浮点数(MATLAB 默认的数据类型)就涉及数据在计算机内部的表示形式。
  • 单精度浮点数在内存中占 32 个二进制位,其中 1 位为数据的符号位(以 0 代表正数,1 代表负数),8 位为指数部分,23 位为尾数部分。
  • 指数部分表示 2 的多少次幂,存储时加上 127,也就是说 20 用 127(即二进制数 111111)表示。尾数部分是二进制小数,其所占的 23 位是小数点后面的部分,小数点前面还有一个隐含的 1 并不存储。
  • 双精度浮点数占 64 位二进制,其中 1 位为符号位,11 位指数位,52 位尾数位,其存储方式与单精度数类似。

在这里插入图片描述

>> format hex
>> single(-4.25)

ans =

  single

  c0880000

  • -4.25 可以转化为二进制数 -100.01,也就是 -1.0001×100。
  • 这里是采用 hex 十六进制表达,-4.25 的二进制表达方式位 1100 0000 1000 1000 0000 0000 0000 0000,因此,输出就是 C0880000。

二、矩阵的表示

  • 矩阵是 MATLAB 最基本的数据对象,MATLAB 的大部分运算或命令都是在矩阵运算的意义下执行的。在 MATLAB 中,不需要对矩阵的维数、大小和类型进行说明,MATLAB 会根据我们所输入的内容自动进行配置。

1. 矩阵的建立

1.1 直接输入法建立矩阵

  • 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。具体方法是,将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或空格分隔,不同行的元素之间用分号分隔。例如:
>> A=[1,2,3;4,5,6;7,8,9]

A =

     1     2     3
     4     5     6
     7     8     9

  • 这样,在 MATLAB 的工作空间中就建立了一个矩阵 A,以后就可以直接使用矩阵 A。同时,复数矩阵的建立方式和常规矩阵的建立方式相同。
>> B=[2+3i,5;3-5j,6j]

B =

   2.0000 + 3.0000i   5.0000 + 0.0000i
   3.0000 - 5.0000i   0.0000 + 6.0000i

1.2 已建好的矩阵建立更大的矩阵

  • 大矩阵可以通过小矩阵拼接而成。例如:
>> A=[1,2,3;4,5,6;7,8,9];
>> B=[-1,-2,-3;-4,-5,-6;-7,-8,-9];
>> C=[A,B;B,A]

C =

     1     2     3    -1    -2    -3
     4     5     6    -4    -5    -6
     7     8     9    -7    -8    -9
    -1    -2    -3     1     2     3
    -4    -5    -6     4     5     6
    -7    -8    -9     7     8     9

  • 与直接建立矩阵一样,我们还可以使用实部矩阵和虚部矩阵构成复数矩阵。例如:
>> A=[1,2,3;4,5,6];
>> B=[6,7,8;9,10,11];
>> RI=A+B*i

RI =

   1.0000 + 6.0000i   2.0000 + 7.0000i   3.0000 + 8.0000i
   4.0000 + 9.0000i   5.0000 +10.0000i   6.0000 +11.0000i

  • 需要注意的是,在这里 i 是单个数据,B*i 表示一个矩阵与一个数相乘。

2. 冒号表达式

  • 在 MATLAB 中,利用冒号表达式可以产生行向量,一般格式如下:
   e1:e2:e3
  • 其中,e1 为初始值,e2 为步长,e3 为终止值。冒号表达式可以产生一个由 e1 开始到 e3 结束,以步长 e2 自增的行向量。例如:
>> A=0:1:5

A =

     0     1     2     3     4     5

  • 其中,产生一个行向量 A,从 0 开始增长到 5,步长为 1,各元素为 0、1、2、3、4、5。
  • 需要注意的是,在冒号表达式中如果省略 e2 不写,则步长默认为 1。例如,A=0:5 和 A=0:1:5 等价。
  • 在 MATLAB 中,还可以用 linspace 函数产生行向量,其调用格式如下:
   linspace(a,b,n)
  • 其中,a 和 b 是生成向量的第一个和最后一个元素, n 是元素总数。当 n 省略时,自动产生 100 个元素。显然,linspace(a,b,n) 与 a:(b-a)/(n-1):b 等价。例如:
>> x=linspace(0,pi,6)

x =

         0    0.6283    1.2566    1.8850    2.5133    3.1416

3. 矩阵元素的引用

3.1 矩阵元素的引用方式

  • 在很多情况下,需要对矩阵的单个元素进行操作。矩阵元素可以通过下标(Subscript)来引用,下标必须为正整数。例如,A(3,2)表示 A 矩阵第 3 行第 2 列的元素,如果要将该元素赋为 200,则可以通过下面的命令来完成:
>> A(3,2)=200

A =

     0     0
     0     0
     0   200

  • 这时将只改变该元素的值,而不影响其他元素的值。如果给出的行下标或列下标大于原来矩阵的行数和列数,则 MATLAB 将自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为 0。例如:
>> A=[1,2,3;4,5,6];
>> A(3,4)=10

A =

     1     2     3     0
     4     5     6     0
     0     0     0    10

  • 也可以采用矩阵元素的序号(Index)来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序,即线性索引号。
  • 在 MATLAB 中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。例如:
>> A=[1,2,3;4,5,6]

A =

     1     2     3
     4     5     6

>> A(2)

ans =

     4

>> A(3)

ans =

     2

  • 矩阵 A 的第 3 号元素为 2,即 A(1,2)。显然,序号与下标是一一对应的,以 mxn 矩阵 A 为例,矩阵元素 A(i,j) 的序号为 (j-1)*m+i。
  • 矩阵元素的序号与下标可以利用 sub2indind2sub 函数实现相互转换。
  • sub2ind 函数将矩阵中指定元素的行、列下标转换成存储的序号,其调用格式如下:
   D=sub2ind(S,I,J)
  • 其中,S 表示要转换的矩阵的行数和列数,是行数和列数组成的向量,通常用 size 函数获取;I 是要转换矩阵的行下标;J 是要转换矩阵的列下标。
  • I、J 的行列数必须相同。D 为对应下标元素的序号,其行列数与 I、J 相同。例如:
>> A=[1:3;4:6]

A =

     1     2     3
     4     5     6

>> D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])

D =

     1     2
     6     4
 
  • 命令中的 size(A) 函数返回包含两个元素的向量,分别是 A 矩阵的行数和列数。从执行结果可以看出,A(1,1) 的序号为 1,A(2,1) 的序号为 2,A(2,3) 的序号为 6,A(2,2) 的序号为 4。
  • ind2sub 函数用于把矩阵元素的序号转换成对应的下标,其调用格式如下:
   [I,J]=ind2sub(S,D)
  • 其中,S 表示要转换的矩阵的行数和列数;D 是序号,返回值为序号所对应元素的行下标和列下标。例如:
>> [I,J]=ind2sub([3,3],[1,3,5])

I =

     1     3     2


J =

     1     1     2

  • 命令执行结果表明,3x3 矩阵的第 1、3、5 个元素的下标分别为 (1,1)、(3,1)、 (2,2)。
  • 有关求矩阵大小的函数还有 length(A),给出矩阵 A 最长维的长度;ndims(A),给出矩阵 A 的维数;numel(A),给出矩阵 A 元素的个数。

3.2 利用冒号表达式获得子矩阵

  • 子矩阵是指由矩阵中的一部分元素构成的矩阵。若用冒号表达式作为引用矩阵时的下标,这时就可以获得一个子矩阵。也可以直接用单个的冒号来作为行下标或列下标,它代表全部行或全部列。
  • 例如,A(i,j) 表示 A 矩阵第 i 行、第 j 列的元素,A(i,:) 表示 A 矩阵第 i 行的全部元素,A(:,j) 表示 A 矩阵第 j 列的全部元素。同样,A(i:i+m,k:k+m) 表示 A 矩阵第 i~i+m 行内且在第 k~k+m 列中的所有元素,A(i:i+m,:) 表示 A 矩阵第 i~i+m 行的全部元素,A(:,k:k+m) 表示 A 矩阵第 k~k+m 列的全部元素。例如:
>> A=[1:5;6:10;11:15;16:20]

A =

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

>> A(1,:)  %取 A 第一行

ans =

     1     2     3     4     5

>> A(:,2:4)  %取 A 第二、三、四列

ans =

     2     3     4
     7     8     9
    12    13    14
    17    18    19

>>  A(2:3,4:5)  %取 A 第二、三行,第四、五列

ans =

     9    10
    14    15

>> A(2:3,1:3:5)  %取 A 第二、三行,第一、三、五列

ans =

     6     9
    11    14

  • 此外,还可以利用一般向量和 end 运算符来表示矩阵下标,从而获得子矩阵。end 表示某一维的末尾元素下标。例如:
>>  A=[1:5;6:10;11:15;16:20]

A =

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

>> A(end,:)  %取 A 的最后一行

ans =

    16    17    18    19    20

>> A([1,4],3:end)  %取 A 第一、四两行中第三列到最后一列的元素

ans =

     3     4     5
    18    19    20

3.3 利用空矩阵删除矩阵的元素

  • 空矩阵是指没有任何元素的矩阵,即在建立矩阵时,中括号中为空。例如:
>> x=[]

x =

     []

  • 将某些元素从举证中删除,采用将其置为空矩阵的方法也是十分有效的。例如:
>> A=[1,2,3,0,0;7,0,9,2,6;1,4,-1,1,8]

A =

     1     2     3     0     0
     7     0     9     2     6
     1     4    -1     1     8
 
>> A(:,[2,4])=[]  %删除 A 的第二列和第四列元素

A =

     1     3     0
     7     9     6
     1    -1     8

3.4 改变矩阵的形状

  • reshape(A,,m,n) 函数在矩阵总元素不变的前提下,将矩阵 A 重新排成 m×n 的二维矩阵。例如:
>> x=[23,45,65,34,65,34,98,45,78,65,43,76];  %产生有 12 个元素的行向量 x
>> y=reshape(x,3,4)  %利用向量 x 建立 3×4 的矩阵 y

y =

    23    34    98    65
    45    65    45    43
    65    34    78    76
    
>> z=reshape(y,2,6)  %针对上面建立的 y 矩阵建立 2×6 矩阵 z

z =

    23    65    65    98    78    43
    45    34    34    45    65    76

  • 这里需要注意的是,reshape 函数只是改变原矩阵的行数和列数,即改变其逻辑结构,但并不改变原矩阵元素个数及其存储顺序。
  • A( : ) 将矩阵 A 的每一列元素堆叠起来,成为一个列向量,从而改变了矩阵的形状。例如:
>> A=[-45,65,71;27,35,91]

A =

   -45    65    71
    27    35    91

>> B=A(:)

B =

   -45
    27
    65
    35
    71
    91
    
  • 在这里,A( : ) 产生了一个 6×1 的矩阵,等价于 reshape(A,6,1)。

三、变量及其操作

  • 计算机所处理的数据存放在内存单元中,程序通过内存单元的地址来访问内存单元。
  • 在高级语言中,无须直接给出内存单元的地址,而只需给内存单元命名,以后通过内存单元的名字来访问内存单元。
  • 命了名的内存单元就是变量,在程序运行期间,其内存单元中存放的数据可以根据需要随时改变。

1. 变量与赋值语句

  • 在 MATLAB 中,变量名是以字母开头,后接字母、数字或下画线的字符序列,最多 63 个字符。例如,myexamp12、 my_ examp12、 myexamp12_ 均为合法的变量名,而 12myexamp、_myexamp12 为非法的变量名。
  • 在 MATLAB 中,变量名区分字母的大小写。myexamp、MYexamp 和 MYEXAMP 表示 3 个不同的变量。这里需要注意的是,MATLAB 提供的标准函数名以及命令名必须用小写字母。
  • MATLAB 赋值语句有以下两种格式:
  • (1) 变量=表达式。
  • (2) 表达式。
  • 其中,表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。
  • 第一种形式的赋值语句执行时,MATLAB 将右边表达式的值赋给左边的变量,而第二种形式的赋值语句执行时,将表达式的值赋给 MATLAB 的预定义变量 ans。
  • 一般地,运算结果在命令行窗口中显示出来。如果在语句的最后加分号,那么,MATLAB 仅仅执行赋值操作,不再显示运算的结果。如果运算的结果是一个很大的矩阵或根本不需要运算结果,则可以在语句的最后加上分号。
  • 例如,我们计算表达式 5 + cos ⁡ 47 ° 1 + ∣ x − y ∣ \frac{5+\cos 47°}{1+\left | x-y \right | } 1+xy5+cos47° 的值,并将结果赋值给变量 z,然后显示计算结果。其中, x = 7 − 2 i x=\sqrt{7}-2i x=7 2i y = e Π 2 y=e^{\frac{Π}{2} } y=e2Π
  • 在 MATLAB 命令行窗口输入如下命令:

>> x=sqrt(7)-2i;
>> y=exp(pi/2);
>> z=(5+cos(47*pi/180))/(1+abs(x-y))

z =

    1.4395

  • 命令中的 pi 和 i 都是 MATLAB 预先定义的变量,分别代表圆周率 π 和虚数单位。

2. 预定义变量

  • 在 MATLAB 工作空间中,还驻留几个由系统本身定义的变量。除前面使用过的 ans、pi、i 和 j 外,还有一些常用的预定义变量。
预定义变量含义预定义变量含义
ans计算结果的默认赋值变量nargin函数输入参数个数
eps机器零阈值nargout函数输出参数个数
pi圆周率 π 的近似值realmax最大正实数
i, j虚数单位realmin最小正实数
inf, Inf无穷大,如 1/0 的结果lasterr存放最新的错误信息
NaN, nan非数,如 0/0、inf/inf 的结果lastwarn存放最新的警告信息
  • MATLAB 预定义变量有特定的含义,在使用时应尽量避免对这些变量重新赋值。以 i 或 j 为例,在 MATLAB 中,i 和 j 代表虚数单位,如果给 i 或 j 重新赋值,就会覆盖原来虚数单位的定义,这时可能会导致一些很隐蔽的错误。

3. 变量的管理

3.1 内存变量的删除与修改

  • MATLAB 工作区窗口专门用于内存变量的管理。在工作区窗口中可以显示所有内存变量的属性。当选中某些变量后,选择右键快捷菜单中的删除命令,就能清除这些变量。
  • 当选中某个变量后,双击该变量或选择右键快捷菜单中的打开所选内容命令,将进入变量编辑器。通过变量编辑器可以直接观察变量中的具体元素,也可以修改变量中的具体元素。

在这里插入图片描述

  • 通常,对于较大矩阵的输入,可采用变量编辑器,操作方法如下。
  • (1) 在工作区窗口的右键快捷菜单中选择新建命令,并给变量命名。
  • (2) 在工作区中双击该变量,打开变量编辑器。
  • (3) 在变量编辑器的空白表格中填写元素值,表格的每一个方格对应矩阵的一个元素。
  • clear 命令用于删除 MATLAB 工作空间中的变量。who 和 whos 这两个命令用于显示在 MATLAB 工作空间中已经驻留的变量名清单。
  • who 命令只显示出驻留变量的名称,whos 在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息。例如,在某一时刻,使用 who 和 whos 命令的结果如下:
>> who

您的变量为:

A    B    ans  x    y    z    

>> whos
  Name      Size            Bytes  Class     Attributes

  A         2x3                48  double              
  B         6x1                48  double              
  ans       2x3                48  double              
  x         1x1                16  double    complex   
  y         1x1                 8  double              
  z         1x1                 8  double              

3.2 内存变量文件

  • 利用 MAT 文件可以把当前 MATLAB 工作区中的一些有用变量长久地保留下来。MAT 文件是 MATLAB 保存数据的一种标准的二进制格式文件,扩展名一定是 .mat。MAT 文件的生成和装入由 saveload 命令来完成。常用格式如下:
save 文件名 [变量名表] [-append] [-ascii]
load 文件名 [变量名表] [-ascii]
  • 其中,文件名可以带路径,但不需要带扩展名 .mat,命令默认对 MAT 文件进行操作。变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格分隔。当变量名表省略时,保存或装入全部变量。
  • -ascii 选项使文件以 ASCII 格式处理,省略该选项时文件将以二进制格式处理。save 命令中的 append 选项控制将变量追加到 MAT 文件中。
  • 假定变量 a 和 x 存在于 MATLAB 工作空间中,输入以下命令便可借助 mydata.mat 文件保存 a 和 x:
>> save mydata a x
  • 假如在下次重新进入 MATLAB 后,需要使用变量 a 和 x,可用以下命令把 mydata.mat 中的内容装入 MATLAB 工作空间:
>> load mydata
  • 在执行上述命令后,在当前的 MATLAB 环境中,a 和 x 就是两个已知变量了。
  • 这里需要注意的是,mydata 是用户自己取的文件名,MATLAB 默认扩展名为 .mat。
  • 上述 save 命令执行以后,该 mydata.mat 文件将存放在当前目录。假如我们需要让 mydata.mat
    存放在指定的其他目录(例如 d:\lpp目录)中,那么 save 命令改为
>> save d: \1pp\mydata a x
  • 当然,相应 load 命令中的文件名前也要加路径名。
  • 除了操作命令以外,在 MATLAB 主窗口通过主页选项卡变量命令组中的保存工作区命令按钮或工作区窗口快捷菜单的保存命令,可以保存工作区中的全部变量。通过主页选项卡变量命令组中的导入数据命令按钮可以将保存在 MAT 文件中的变量装入 MATLAB 工作区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/507372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring执行流程Bean生命周期

Spring执行流程 说明:这里只是说的大概流程,不是严格按照源码上一步一步说的。 简单来说,分为下边四个步骤: 启动Spring容器实例化Bean(分配内存空间)将Bean注册到Spring当中(存操作&#xf…

【常用 Linux 命令的基本使用】总结篇(附必要的 Ubuntu 截图)

本文目录 1. 常用 Linux 命令的基本使用1.1 学习 Linux 终端命令的原因1.2 常用 Linux 命令的基本使用1.3 自动补全 2. Linux 终端命令格式2.1 终端命令格式2.2 查阅命令帮助信息(了解) 3. 文件和目录常用命令3.1 查看目录内容3.1.1 终端实用技巧3.1.2 l…

shell数组

目录 一:数组定义方法 1、方法一 ​ 2、方法二 ​3、方法三 ​4、方法四 5、判断数组是否完整 (1)方法一 (2)方法二:通过脚本 二:获取数组值 1、获取数组长度 2、获取数组数据列表 3、…

本地部署 Stable Diffusion web UI

本地部署 ChatGLM-6B 0. 什么是 Stable Diffusion1. 什么是 Stable Diffusion web UI2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 Stable Diffusion web UI6. 启动 Stable Diffusion web UI7. 访问 Stable Diffusion web UI8. 其他 0. 什么是 Stable Diffusion S…

UE4 面试题整理

1、new与malloc的区别 new: new首先会去调用operator new函数,申请足够的内存(大多数底层用malloc实现),然后调用类型的构造函数来初始化变量,最后返回自定义类型的指针,delete先调用析构函数&…

IDEA配置使用Git

使用IDEA2018.2.8版本下操作 文章目录 一、安装Git1.GitHub与Git的关系2.Git的安装 二、在IDEA中配置Git三、创建远程仓库和本地仓库1.在gitee上创建远程仓库2.在IDEA上创建本地仓库 四、分支操作1.创建分支2.删除分支3.比较分支4.合并分支 一、安装Git 1.GitHub与Git的关系 …

位运算(算法)

目录 一、位运算的知识点二、位运算的应用1. x & 1一个数补码表示中的第k位数字求补码中含有1的个数偶数位与奇数位分开输出 2. x & (-x)返回x的最后一位1及之后的数字判断一个数是否是2的n次方求补码中含有1的个数 3. x & (x - 1)求补码中含有1的个数(…

Transformer模型各模块详解及代码实现

Transformer 前言1、Transformer模型整体架构2、Embeeding2.1 词向量2.1.1 独热编码2.1.2 Word Embedding2.1.3 总结 2.2 代码实现 3、Positional Encoding3.1 位置编码简介3.2 代码讲解 4、Multi-Head Attention5、Layer Norm6、Positionwise Feed Forward7、Encoder and Deco…

Qt Creator 的使用技巧

1、Qt Creator 的快捷键 在 Qt Creator 里,假若自己不知道某些功能按钮的快捷键是什么,可以将鼠标移至该按钮 上面就可以知道它的快捷键了。如下图,想知道运行的快捷键是什么,那么我们将鼠标移至 Qt Creator 的左下角的运行…

日常开发中代码技巧(个人使用)

日常开发中代码技巧 String,StringBuffer判断非空 String判断非空 参考:https://blog.csdn.net/Echo_width/article/details/79653704 首先,区分空串和null串 1 空串""是长度为0的字符串,它有自己的串长度(…

Python每日一练:小艺读书醉酒的狱卒非降序数组(详解快排)

文章目录 前言一、小艺读书二、醉酒的狱卒三、非降序数组总结 前言 今天这个非降序数组,阅读解理小学水平,说起来都是泪啊。我折腾了一天都没搞定,从冒泡写到快速排序。换了几种都还不行,我又给快排加上插入排序。结果还是不能全…

MySQL--复合查询--0422

注:为了方便查看 mysql语句会有突然的换行,书写时请勿模仿。 目录 1.单表查询回顾 显示工资最高的员工的名字和工作岗位 显示工资高于平均工资的员工信息 2.多表查询 比如需要查询雇员名字和所在部门编号及部门名字。 显示部门号为10的部门名&…

“智慧赋能 强链塑链”——精细化工行业仓储物流数字化转型探讨

精细化工行业作为衡量国家化学工业水平高低的重要标志,为国民经济提供重要的终端产品支持,相比较大化工产品,精细化工产品需要高度专业技能和工艺,其生产过程需要复杂的化学反应,以及严格的控制条件,产出的…

基于 TiDB + Flink 实现的滑动窗口实时累计指标算法

作者:李文杰 前言 在不少的支付分析场景里,大部分累计值指标可以通过 Tn 的方式计算得到 。随着行业大环境由增量市场转为存量市场,产品的运营要求更加精细化、更快速反应,这对各项数据指标的实时性要求已经越来越高。产品如果能…

UDS-19服务的状态掩码字节解析

19服务读DTC信息有01、02、04、06、0A等子服务,使用诊断仪读取DUT数据一般只需发送4字节有效数据,其他无效字节用00或者CC填充,如03 19 02 09 00 00 00 00, 数据分解: 03:表示报文类型未单帧,长…

考研计算机组成原理总结(8)

一.计算机工作过程 计算机工作的过程,即一条条指令工作的过程: 取指令: 1.(PC)—>MAR,把PC存放的指令存储地址传送给MAR3.M(MAR)—>MDR,主存根据地址取出指令存放到MDR中4.(MDR)—>IR,指令从MD…

[golang gin框架] 28.Gin 发送短信,DES加密解,Cookie加密,解密操作

一.发送短信 1.简介 在用户注册的时候,需要发送短信来校验用户以及手机号,达到用户注册的目的,一般有很多短信接口来达到发送短信的操作,比如:云片短信服务,阿里云短信服务, 腾讯云短信服务等等,这里以腾讯云短信服务来发送短信: 腾讯云短信服务相关网址: 短信介绍 发送短信AP…

【计算机视觉 | 目标检测】Grounding DINO:开集目标检测论文解读

介绍一篇较新的目标检测工作: Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection论文地址为: https://arxiv.org/pdf/2303.05499.pdfgithub 地址为: https://github.com/IDEA-Research/GroundingD…

flask框架之----Flask-Mail邮件

介绍: Web应用程序经常需要向用户、客户端、管理员、运维人员等相关人员发送邮件。在Flask框架中提供了Flask-Mail邮件库来管理电子邮件的收发。 安装:flask-mail: pip3 install flask-mail配置: 服务器信息: Flask-Mail &…

ESP32学习笔记 -- ESP32-S3使用NVS存储数据

什么是NVS? 非易失性存储(Non-Volatile Storage)简称NVS,是用来保存一些设备断电后不能丢失的数据,乐鑫的ESP32-S3芯片使用了一套NVS库函数对外置的SPI FLASH进行读、写、擦除等操作。 ESP-IDF通过分区表的方式,在外部SPI FLASH里面开辟一段存储空间(也称作NVS分区),…