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

news/2024/3/28 18:17:53/文章来源:https://blog.csdn.net/weixin_45891612/article/details/130546530

文章目录

  • 一、数值数据
    • 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 =int8127>> x=int16(129)x =int16129
  • 带符号 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 =singlec0880000
  • -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     34     5     67     8     9
  • 这样,在 MATLAB 的工作空间中就建立了一个矩阵 A,以后就可以直接使用矩阵 A。同时,复数矩阵的建立方式和常规矩阵的建立方式相同。
>> B=[2+3i,5;3-5j,6j]B =2.0000 + 3.0000i   5.0000 + 0.0000i3.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    -34     5     6    -4    -5    -67     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*iRI =1.0000 + 6.0000i   2.0000 + 7.0000i   3.0000 + 8.0000i4.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:5A =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)=200A =0     00     00   200
  • 这时将只改变该元素的值,而不影响其他元素的值。如果给出的行下标或列下标大于原来矩阵的行数和列数,则 MATLAB 将自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为 0。例如:
>> A=[1,2,3;4,5,6];
>> A(3,4)=10A =1     2     3     04     5     6     00     0     0    10
  • 也可以采用矩阵元素的序号(Index)来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序,即线性索引号。
  • 在 MATLAB 中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。例如:
>> A=[1,2,3;4,5,6]A =1     2     34     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     34     5     6>> D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])D =1     26     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     2J =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     56     7     8     9    1011    12    13    14    1516    17    18    19    20>> A(1,:)  %取 A 第一行ans =1     2     3     4     5>> A(:,2:4)  %取 A 第二、三、四列ans =2     3     47     8     912    13    1417    18    19>>  A(2:3,4:5)  %取 A 第二、三行,第四、五列ans =9    1014    15>> A(2:3,1:3:5)  %取 A 第二、三行,第一、三、五列ans =6     911    14
  • 此外,还可以利用一般向量和 end 运算符来表示矩阵下标,从而获得子矩阵。end 表示某一维的末尾元素下标。例如:
>>  A=[1:5;6:10;11:15;16:20]A =1     2     3     4     56     7     8     9    1011    12    13    14    1516    17    18    19    20>> A(end,:)  %取 A 的最后一行ans =16    17    18    19    20>> A([1,4],3:end)  %取 A 第一、四两行中第三列到最后一列的元素ans =3     4     518    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     07     0     9     2     61     4    -1     1     8>> A(:,[2,4])=[]  %删除 A 的第二列和第四列元素A =1     3     07     9     61    -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 的矩阵 yy =23    34    98    6545    65    45    4365    34    78    76>> z=reshape(y,2,6)  %针对上面建立的 y 矩阵建立 2×6 矩阵 zz =23    65    65    98    78    4345    34    34    45    65    76
  • 这里需要注意的是,reshape 函数只是改变原矩阵的行数和列数,即改变其逻辑结构,但并不改变原矩阵元素个数及其存储顺序。
  • A( : ) 将矩阵 A 的每一列元素堆叠起来,成为一个列向量,从而改变了矩阵的形状。例如:
>> A=[-45,65,71;27,35,91]A =-45    65    7127    35    91>> B=A(:)B =-452765357191
  • 在这里,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    >> whosName      Size            Bytes  Class     AttributesA         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.luyixian.cn/news_show_298140.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv3论文解读/总结

本章论文: YOLOv3论文(YOLOv3: An Incremental Improvement)(原文+解读/总结+翻译) 系列论文: YOLOv1论文解读/总结_yolo论文原文_耿鬼喝椰汁的博客-CSDN博客 YOLOv2论文解读/总…

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…

神经网络语言模型(NNLM)

神经网络语言模型【NNLM】 1 为什么使用神经网络模型?2 什么是神经网络模型?3. 代码实现3.1 语料库预处理代码3.2 词向量创建3.3 NNLM模型类3.4 完整代码 1 为什么使用神经网络模型? 解决独热编码无法解决词之间相似性问题 使用神经网络语言…

Go语言字符串基础

目录 字符串基础 合并和分割字符串 分割 合并 判断是否包含 strings.Contains() 查找子串出现的位置 strings.Index() strings.LastIndex() 字符串基础 1.字符串是由一串Unicode字符组成的序列,每个Unicode字符都占用一个或多个字节的存储空间。 2.字符串…

CSS--定位

01-定位 作用:灵活的改变盒子在网页中的位置 实现: 1.定位模式:position 2.边偏移:设置盒子的位置 leftrighttopbottom 相对定位 position: relative 特点: 不脱标,占用自己原来位置显示模式特点保…

技术领先、“忠”于业务,用友走出多维数据库的价值之路

本文转自科技商业 作者 于洪涛 对于当今的企业而言,精细化管理,已经成为发展之源,甚至是生存之本。 尤其是随着数字化和智能化转型的推进,在企业经营管理过程中,数据正在日益发挥更为关键的要素作用。 相比过去&…

浅学Go下的ssti

前言 作为强类型的静态语言,golang的安全属性从编译过程就能够避免大多数安全问题,一般来说也唯有依赖库和开发者自己所编写的操作漏洞,才有可能形成漏洞利用点,在本文,主要学习探讨一下golang的一些ssti模板注入问题…

uniapp实现微信小程序横屏适配问题demo效果(整理)

使用VMIN进行布局 先了解css3的两个属性vmax和vmin vmax 相对于视口的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax vmin 相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin竖屏布局的时候,750rpx就是竖屏布局屏幕的宽度…

camunda的Java委托如何使用

一、camunda的Java委托有什么用途 在Camunda中,Java委托是一种用于在流程执行期间执行自定义逻辑的Java类。使用Java委托,您可以在流程执行期间通过Java代码实现各种复杂的业务逻辑。 以下是一些使用Java委托的常见用途: 1、计算值&#x…

搞懂 API,API 常见技术使用场景分享

API(应用程序编程接口)是一种允许软件应用程序之间相互交互和通信的技术。以下是API常用的使用场景: 应用程序开发 API通常被用于网站或应用程序的开发中,以便在不同平台、语言及数据库之间获取数据或进行消息传递。例如&#xff…

搭建本地仓库源

一、如何搭建仓库源 之前讲了定制ISO的方法:使用chroot定制系统,但有时候我们想自定义的安装包不在上游的仓库源中,在我们本地应该怎么办呢?如果我们将deb包拷贝到iso目录再安装有点过于麻烦了,而且还可能需要手动处理…

113.【Vue-细刷-04】

Vue-03 (二十四)、浏览器存储(WebStorage)1.本地缓存(LocalStorage)(1). 模仿本地缓存-未用JSON转字符串(2).模拟本地缓存-使用JSON转字符串 2.会话缓存(Session Storage)(1).模拟会话缓存(2).会话缓存和本地缓存的区别(3).JSON转换与JSON解析 3.todos案列_本地缓存版(1).mount…

flink集群安装部署

1.下载 官网下载:Downloads | Apache Flink 阿里网盘下载(包含依赖包):阿里云盘分享 提取码:9bl2 2.解压 tar -zxvf flink-1.12.7-bin-scala_2.11.tgz -C ../opt/module 3.修改配置文件 cd flink-1.12.7/conf/ …

【Java】javafx | 打包成jar包

一、说明 1、javafx项目 2、maven管理 二、解决方案 1&#xff09;加入maven插件 <build><resources><resource><!-- 这里是放在 src/main/java--><directory>src/main/java</directory><includes><include>**/*.properties&…

深度学习 - 46.DIN 深度兴趣网络

目录 一.引言 二.摘要 ABSTRACT 三.介绍 INTRODUCTION 1.CTR 在广告系统的作用 2.传统 MLP 存在的问题 3.DIN 的改进 四.近期工作 RELATEDWORK 1.传统推荐算法 2.用户行为抽取 五.背景 BACKGROUD 六.深度兴趣网络 DEEP INTEREST NETWORK 1.特征表示 Feature Repres…

【操作系统】从操作系统底层出发,成为更好的程序员

冯老爷子的模型 首先&#xff0c;我们从一个问题开始(&#xffe3;∇&#xffe3;)/ 为什么需要程序员&#xff1f; 早期的计算机程序是硬件化的&#xff0c;即使用各种门电路组装出一个固定的电路板&#xff0c;这个电路板只能用于执行某个特定的程序&#xff0c;如果需要修…

Java并发编程实践学习笔记(三)——共享对象之可见性

目录 1 过期数据 2 非原子的64位操作 3 锁和可见性 4 Volatile变量&#xff08;Volatile Variables&#xff09; 在单线程环境中&#xff0c;如果向某个变量写入值&#xff0c;在没有其他写入操作的情况下读取这个变量&#xff0c;那么总能得到相同的值。然而&…

ALOHA 开源机械臂(Viper 300 Widow X 250 6DOF机械臂组成)第一部分

软件简介&#xff1a; ALOHA 即 A Low-cost Open-source Hardware System for Bimanual Teleoperation&#xff0c;是一个低成本的开源双手遥控操作硬件系统&#xff0c;即开源机械臂。其算法 Action Chunking with Transformers (ACT) 采用了神经网络模型 Transformers&#…

C#学习笔记--实现一个可以重复权重并且能够自动排序的容器--MultiplySortedSet

目录 前言SortedSetC#自带类型自定义类SortedSet权值重复 需求自定义容器 -- MultiplySortedSet核心实现思路 MultiplySortedSet 使用C#自带类型自定义类 前言 最近需要在C#中实现一个功能 有一个容器&#xff0c;该容器能自动对里面的元素进行排序&#xff0c;类似C的优先队列…

FS5175AE降压型1-4节锂电池充电芯片

FS5175AE是一款工作于5V到24V的多串锂电池同步开关降压充电管理芯片。内置MOS管集成了低导通阻抗的NMOS&#xff0c;FS5175AE采用1MHz同步开关架构&#xff0c;实现高 效率充电并简化外围器件&#xff0c;降低BOM成本。通过调节检测电阻&#xff0c;可实现**2A充电电流&#xf…