MATLAB矩阵的操作(第一部分)

矩阵的基本知识

矩阵概念

矩阵(Matrix)在数学中是一个由复数或实数组成的矩形阵列,其元素按照行和列排列。矩阵的定义可以形式化地描述为:

一个 m 行 n 列的矩阵是一个有序的数表,其中包含 m*n 个数,可以表示为: A = [a_{ij}] 或 A = (a_{ij}){m×n}, 这里的 a{ij} 是位于矩阵第 i 行第 j 列的元素,1 ≤ i ≤ m, 1 ≤ j ≤ n。

对于一个具体的 m×n 矩阵 A,例如:

1A =
2| a11  a12  ...  a1n |
3| a21  a22  ...  a2n |
4|   .     .    .     . |
5|   .     .    .     . |
6| am1  am2  ...  amn |

其中,a11、a12,...,amn 分别是矩阵中的每个元素。

更正式地表述: 

  • 如果一个矩阵有 m 行和 n 列,则称它为一个 m × n 矩阵。
  • 当 m = n 时,矩阵 A 称为方阵(Square Matrix),特别地,n阶方阵写作 A_n 或 A^n。
  • 若矩阵的元素都是实数,则称该矩阵为实矩阵;若元素均为复数,则称为复矩阵。

同型矩阵

当矩阵A,B的行数和列数都相同时,我们称A,B为同型矩阵。

转置矩阵

转置矩阵(Transpose of a Matrix)是将原矩阵的行和列互换位置得到的新矩阵。对于一个 m×n 的矩阵 A,其转置矩阵记作 Aᵀ 或 AT,是一个 n×m 的矩阵,其中 Aᵀ 的第 i 行、第 j 列的元素等于原矩阵 A 的第 j 行、第 i 列的元素。

具体来说,如果 A 是一个二维数组:

1A = | a11  a12  ... a1n |
2    | a21  a22  ... a2n |
3    |  .    .   ...  .  |
4    | am1  am2  ... amn |

则 A 的转置矩阵 Aᵀ 将会是:

1Aᵀ = | a11  a21  ... am1 |
2     | a12  a22  ... am2 |
3     |  .    .   ...  .  |
4     | a1n  a2n  ... amn |

数学上表示为:如果 A(i,j) 是原矩阵中位于第 i 行第 j 列的元素,则转置矩阵中的相应元素是 Aᵀ(j,i)。

单位矩阵

单位矩阵(Identity Matrix)是一种特殊的方阵,它在数学和线性代数中扮演着至关重要的角色。单位矩阵通常用 I 或 E 表示,并带有下标来表示其阶数,例如对于一个 n 阶单位矩阵,记为 In 或 En。

单位矩阵的定义如下:

  1. 它是一个 n×n 的方阵。
  2. 主对角线(从左上角到右下角)上的所有元素均为 1。
  3. 其他位置(即非主对角线上的元素)全为 0。

例如,一个 3 阶单位矩阵是这样的:

1I3 = | 1 0 0 |
2     | 0 1 0 |
3     | 0 0 1 |

向量的定义

在MATLAB中,向量是一个一维数组,可以包含数值或其他数据类型的元素。定义和创建向量有多种方法:

  1. 直接输入法

    • 行向量(列数为1):通过将元素用逗号或空格分隔,并放在方括号内来创建行向量。
      1rowVec = [1, 2, 3, 4, 5]; % 这是一个行向量
    • 列向量(行数为1):通过在元素之间使用分号(;)而不是逗号来创建列向量。
      1colVec = [1; 2; 3; 4; 5]; % 这是一个列向量
  2. 范围生成法

    • 使用冒号(:)运算符可以快速生成一个等差序列的向量。
      1seqVec = 1:5; % 生成从1到5的行向量
      2seqColVec = [1:5]'; % 生成从1到5的列向量
  3. 循环构造法

    • 当需要动态地构建向量时,可以使用循环结构。
      1N = 5;
      2vec = []; % 初始化为空向量
      3for i = 1:N
      4    vec = [vec, i]; % 或者使用 vec(end+1) = i; 来扩展向量
      5end

MATLAB中的向量默认是列优先存储的,也就是说,即使没有明确指定方向,创建一个不包含分号的单行向量也是以列向量的形式存储在内存中。不过,在显示时,MATLAB会根据上下文自动调整输出格式,使得向量看起来像是行向量或列向量。

向量的模的求法

  1. 计算每个元素的平方。
  2. 将这些平方值相加。
  3. 对结果取平方根。

用公式表示为:如果向量 v = [v1, v2, ..., vn],则其模长(欧几里得范数)为:

1||v||_2 = \sqrt{v_1^2 + v_2^2 + ... + v_n^2}

矩阵的加减法

注:只有同型矩阵才可以进行加减

  1. 矩阵加法: 假设有两个同为m×n维的矩阵A和B,要将它们相加,直接在MATLAB命令行或者脚本文件中写入:

    1A = [1 2; 3 4]; % 这是一个2x2的示例矩阵A
    2B = [5 6; 7 8]; % 这是一个与A相同维度的2x2的示例矩阵B
    3C = A + B; % 计算矩阵A和B的和,并将结果存储到C中
  2. 矩阵减法: 类似地,进行矩阵减法:

    1D = A - B; % 计算矩阵A和B的差,并将结果存储到D中

数与矩阵的乘法

在MATLAB中,数(标量)与矩阵的乘法有两种情况:

  1. 标量乘以矩阵:将一个标量乘到矩阵的所有元素上。例如,假设有一个2x2的矩阵A和一个标量s:

    1A = [1 2; 3 4]; % 这是一个2x2的示例矩阵
    2s = 2;          % 这是一个标量
    3
    4B = s * A;     % 计算标量s与矩阵A的乘积,并将结果存储到B中

    在这个例子中,B将是:

    1B = [2*1 2*2; 
    2     2*3 2*4] = [2 4; 6 8];
  2. 矩阵乘以标量:同理,也可以将矩阵乘以一个标量,结果与上述相同。

    1C = A * s;    % 计算矩阵A与标量s的乘积,并将结果存储到C中

    此时,C也将是

    1C = [2 4; 6 8];

矩阵与矩阵的乘法

在MATLAB中,矩阵与矩阵的乘法遵循特定的规则:前一个矩阵(左侧矩阵)的列数必须等于后一个矩阵(右侧矩阵)的行数。下面给出一个矩阵乘法的例子:

1% 定义两个矩阵 A 和 B
2A = [1 2; 3 4]; % 这是一个2x2的矩阵
3B = [5 6; 7 8]; % 这是一个2x2的矩阵
4
5% 注意:由于矩阵A和B都是2x2的,它们不能直接进行矩阵乘法,因为不符合矩阵乘法的维度要求。
6
7% 为了演示矩阵乘法,我们重新定义一个适合于矩阵乘法的矩阵C:
8C = [1 2; 3 4; 5 6]; % 这是一个3x2的矩阵
9
10D = [7 8 9; 10 11 12]; % 这是一个2x3的矩阵
11
12% 矩阵C和D可以相乘,因为C有2列,而D有2行。
13E = C * D; 
14
15% 输出结果
16disp(E);

计算结果矩阵E中的每个元素是通过将矩阵C的每一行与矩阵D的每一列对应元素进行逐个相乘并求和得到的。例如:

  • E(1,1) = C(1,1)D(1,1) + C(1,2)D(2,1) = 17 + 210 = 27
  • E(1,2) = C(1,1)D(1,2) + C(1,2)D(2,2) = 18 + 211 = 26
  • E(1,3) = C(1,1)D(1,3) + C(1,2)D(2,3) = 19 + 212 = 33
  • ...
  • E(3,3) = C(3,1)D(1,3) + C(3,2)D(2,3) = 59 + 612 = 117

所以,整个结果矩阵E就是:

1E = [27 30 33;
2     61 68 75;
3     95 106 117];

在这个例子中,由于矩阵C是3x2的,矩阵D是2x3的,所以可以进行矩阵乘法,并得到一个3x3的结果矩阵E。实际计算时,每一个元素e_ij都是通过将矩阵C的第i行与矩阵D的第j列对应元素按顺序逐个相乘然后求和得到的。

但是,如果尝试用原来的矩阵A和B进行矩阵乘法,由于它们都是2x2的矩阵,无法满足矩阵乘法的条件,MATLAB会抛出错误,不允许这样的操作。

注:进行矩阵相乘时。必须满足:前一个矩阵(左矩阵)的列数必须等于后一个矩阵(右矩阵)的行数。也就是说,如果有一个 m×n 的矩阵 A 和一个 n×p 的矩阵 B,则它们可以相乘得到一个 m×p 的矩阵 C。

矩阵的逆

矩阵的逆(Matrix Inverse)是指对于一个方阵(即行数和列数相等的矩阵),如果存在另一个同样大小的矩阵,使得它们相乘的结果是单位矩阵,那么这个矩阵就被称为原矩阵的逆矩阵。

 特征值和特征向量

特征值(Eigenvalue): 给定一个 n 阶方阵 A,如果存在非零向量 v 和标量 λ,满足以下关系式:

Av = λv

则称 λ 是矩阵 A 的一个特征值(Eigenvalue),v 称为对应于特征值 λ 的特征向量(Eigenvector)。

换言之,特征值描述了在经过矩阵变换后,特定向量的方向不变但长度按一定比例伸缩的程度。这个特定的比例就是特征值。

特征向量(Eigenvector): 对于一个给定的特征值 λ,其对应的特征向量 v 是一个非零向量,在经过矩阵 A 的作用下,只会发生长度变化而不会改变方向。换句话说,特征向量是在矩阵乘法后仍然保持相同方向(尽管可能有大小变化)的向量。

总结来说,对于矩阵 A 和非零向量 v 以及实数 λ,当 Av = λv 成立时,λ 称为矩阵 A 的特征值,v 称为对应的特征向量。寻找特征值和特征向量的过程通常涉及解一组线性代数方程组。

MATLAB中的向量

在MATLAB中,向量可以被称为一维数组,矩阵可以被称为二维数组

创建方法

在MATLAB中,向量的创建方法主要有三种,分别是:直接输入法、冒号法和利用MATLAB函数创建。下面我们一一来进行介绍:

直接输入法


向量元素需要用中括号“[ ]”括起来,元素之间用空格、逗号、分号或按回车键(Enter键)分隔,就可以创建对应的向量。
若元素之间用空格(可以有多个空格)、逗号分隔,则创建的是行向量;
若用分号、回车键分隔,则创建的是列向量。(注意:这里的逗号和分号都是英文输入法下输入的,不能用中文的逗号或分号)
a = [1 3 5]
a = [1,3,5]
b = [1;3;5]
b = [1
    3
    5]

冒号法(最常用)


我们可以利用命令:A:step:B 来创建一个行向量。
其中,A是起始值,step是每次递增或递减的步长,B是终止值(不一定刚好停在这里)。若step等于1,则可以直接简写成A:B。
直接看上面的概念不够直观,下面我们举几个例子,大家根据例子来理解会很轻松。
1:2:7  % 每次增加2,直到最后到了7
1:2:8  % 每次增加2,到了7后,如果再增加2的话结果等于9,比8要大,所以到了7就停止了。
0:0.1:1  % 每次增加0.1
0:0.01:1   % 每次增加0.01
1:1:100  % 步长为1时可以省略     1:100
1:10:3   % 从1开始,增加10等于11,比3还要大,所以返回1
5:2:1  % A:step:B  若A > B且步长step > 0,则会返回空的向量
10:-1:6   % 步长为-1,因此会从10开始递减
10:-2:5  % 步长为-2,从10开始递减,到了6后,如果再减去2就等于4,比5还要小,所以到了6就停止了。
10:-100:5    % 步长为-100,因为10-100 = -90比5还要小,所以返回10
10:-10:50  % 若A < B且步长step < 0,则会返回空的向量。
1:0:2  % 若step = 0,则返回空的向量。
补充:
上表中,有三种情况都会导致MATLAB返回空的向量:空的1×0 double行向量。怎么理解这个返回结果呢?这个“1×0”指的是向量的维度,你可以理解为1行0列,即这个向量是空的,不存在元素。在MATLAB中,我们可以直接使用命令[ ]创建空的向量。
[]


利用MATLAB函数创建

linspace函数


两种用法,区别在于是否给定第三个输入参数n,如果我们不指定n,则MATLAB会默认n=100。
linspace(a,b): 该命令用来创建一个行向量,向量中的第一个元素为a,最后一个元素为b,形成总数为100个元素的线性间隔的向量
linspace (a,b,n): 该命令用来创建一个行向量,向量中的第一个元素为a,最后一个元素为b,形成总数为n个元素的线性间隔的向量
第一个数为1,最后一个数为100,整个向量构成了一个等差数列,由10个元素组成
linspace(1,100,10) =[1 12 23 34 45 56 67 78 89 100]
第一个数为0,最后一个数为2*pi
linspace(0,2*pi,10) 
linspace(1,10)   % 如果不指定第三个输入参数n,则默认生成100个元素的等差数列
linspace(100,1,10)   % 如果a>b,则步长是负数


linspace (a,b,n)和冒号法a:step:b生成向量的区别


linspace不需要指定步长,MATLAB会根据你给定的元素个数n自动计算出来;而使用冒号法可以自己指定步长。
linspace生成的向量的最后一个元素一定是b,而使用冒号法a:step:b生成的向量的最后元素不一定是b。
循环语句时,冒号法使用的频率最高;而在绘制函数图形时,使用linspace得到的x轴的范围要比冒号法稍微准确一点。例如:我们要绘制sin(x)在区间[0, 2]上的图形,x的范围是0到 2 ,我们使用linspace(0,2*pi)生成的向量的最后一个元素一定是 2 ;如果使用冒号法令x=0:0.1:2*pi,那么x向量的最后一个元素和 2 有一个微小的差异,当然,如果我们将step取得更小,例如取成0.01,那么这个差异几乎可以忽略。

logspace函数(了解即可),

两种常见的用法:
logspace(a,b):创建一个行向量,其第一个元素为10^a,最后一个元素为10^b,形成总数为50个元素的等比数列向量
logspace(a,b,n):创建一个行向量,其第一个元素为,最后一个元素为,形成总数为n个元素的等比数列向量。
logspace(1,2) % 默认50个元素,linspace函数默认是100个元素
logspace(1,2,10)  % 生成第一个数为10^1,最后一个数为10^2,包含10个元素的等比数列
logspace(1,3,5)  % 生成第一个元素为10^1,最后一个元素为10^3,包含5个元素的等比数列
logspace(log10(2),log10(1024),10)  % 第一个数为2,最后一个数为1024,10个元素组成的等比数列
logspace(2,1,5)  % 第一个数为10^2,最后一个数为10^1,5个元素组成的等比数列

向量元素引用

对向量元素的引用(即提取向量指定位置的值)有两种情形,分别是提取向量中的单个元素和提取向量中的多个元素。
向量分为行向量和列向量,它们在MATLAB中只有一个维度,因此我们可以利用向量中包含的元素个数来描述一个向量的大小。

在MATLAB中,向量的索引是从1开始的

在MATLAB中,可以使用length函数numel函数来计算向量中包含的元素个数。
a = [2 4 8 16 32 64 128 256 512 1024];
length(a) =10
numel(a)=10

单个元素引用


我们提取向量a中单个元素的方法很简单,只需要利用a(ind)命令,小括号中的ind就是你要提取的对应元素的索引。
注:创建向量用中括号,提取元素要用小括号
a = [2 4 8 16 32 64 128 256 512 1024];
a(1)=2    a(9)=512
% a(11)   % 索引超出数组元素的数目(10)。
a([]) % 如果是提取空向量的话,结果也为空。
% a(1.5)    % a(0)    % a(-1)    索引必须为正整数逻辑值

多个元素引用


利用向量的索引来同时提取多个位置的元素,这时候只需要将ind设置成一个向量,ind中放入我们想要提取的元素的索引,然后使用a(ind)命令即可。
a = [2 4 8 16 32 64 128 256 512 1024];
ind = [1 3 5 7 9];
a(ind)           %a(ind)=2 8 32 128 512 
% 也可以直接简写成:
a([1 3 5 7 9])
% 注意到:1:2:9 = [1 3 5 7 9]
a(1:2:9)  % 提取a中奇数位置的元素
% 提取a中偶数位置元素
a(2:2:10)
% 对于同一个位置的元素,我们也可以提取多次
a = [2 4 8 16 32 64 128 256 512 1024];
ind = [1 2 2 3 3 3];
a(ind)  % 熟悉的话可以直接写成a([1 2 2 3 3 3])


技巧

使用end索引
假如不知道向量a中有多少个元素,也不使用length函数或者numel函数来计算向量中元素的个数,那提取出a中奇数位置的元素可以用到一个特殊的关键字:end。它有很多种用法,在这里end可以用来替代向量的最后一个索引。
a = [2 4 8 16 32 64 128 256 512 1024];
% 访问a中第五个至最后一个元素,那么我们可以直接使用
a(5:end)
% 我们还可以对end进行计算,例如要访问a中第五个至倒数第三个元素
a(5:end-2)
% 这里有一个易错点,如果使用了end,就不能先将要取元素的索引赋值给ind,然后再调用

ind=5:end      a(ind)       wrong

a(5:end)   yes

% 提取a中奇数位置的元素
a(1:2:end)

问题

将一个向量倒序,例如原向量是[1 5 8 4],倒序后是[4 8 5 1]

a=[1 5 8 4]
b=a(end:-1:1)

元素的修改与删除

向量元素的修改


可以直接利用赋值的方法对引用位置的元素进行修改。
a = [2 4 8 16 32 64 128 256 512 1024];
a(1) = 4  % 第一个元素改成4
a([1,3]) = [50 60] % 第1个位置元素改成50;第3个位置元素改成60
% 赋值时,左右两侧的元素个数要相同
% a(1:3) = [5 6]   % 无法执行赋值,因为左侧和右侧的元素数目不同。

% 如果右边为常数,则将指定位置的元素全部变成这个常数
a(2:4) = 100  % 第2到4号位置的元素改成100
a(13) = 88 

向量元素的删除


如果我们将等号右侧改为空向量[],则可以删除对应位置的元素。
a(1) = [ ]  % 删除a的第一个元素
a(end-1:end) = [ ]  % 删除a中最后两个元素

思考题:下面哪些语句会报错?
a = [2 4 8 16 32 64 128 256 512 1024];
% a([1,3])
% a(1,3)   %提取第一行第三个的元素
% a([2,3])
% a(2,3)  %会报错

下面哪些语句会报错?
% a = [2 4 8 16 32];
% a([2,4]) = 5

% a = [2 4 8 16 32];
% a(8) = 10     %a=[2 4 8 16 32 0 0 10]

% a = [2 4 8 16 32];
% a(2,4) = 16   %a=[2 4 8 16 32

                                 0 0 0 16 0]

% a = [2 4 8 16 32];
% a(10) = []    %会报错,矩阵超出索引范围

若有侵权,请联系作者

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

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

相关文章

HG/T 3830-2022 预涂卷材涂料检测

预涂卷材涂料是指以树脂为主要成膜物质&#xff0c;并加入固化剂、颜料、体质颜料、助剂等配置而成&#xff0c;且以连续涂装方式涂覆在金属薄板上的溶剂型涂料、水性涂料或粉末涂料。 HG/T 3830-2022溶剂型和水性预涂卷材涂料检测项目&#xff1a; 测试指标 测试方法 在容器…

【乳腺肿瘤诊断分类及预测】基于PNN概率神经网络

课题名称&#xff1a;基于PNN的乳腺肿瘤诊断分类及预测 版本日期&#xff1a;2023-06-15 运行方式: 直接运行PNN0501.m 文件即可 代码获取方式&#xff1a;私信博主或QQ&#xff1a;491052175 模型描述&#xff1a; 威斯康辛大学医学院经过多年的收集和整理&#xff0c;建…

Java希尔排序

希尔排序是一种改进的插入排序算法&#xff0c;也称为缩小增量排序。它通过将待排序的数组按照一定的间隔分割成若干个子序列&#xff0c;然后对这些子序列进行插入排序&#xff0c;随着排序进行&#xff0c;逐渐减小间隔&#xff0c;直至间隔为1&#xff0c;最后对整个数组进行…

Selenium处理Alert弹窗

页面弹窗有 3 种类型&#xff1a; alert&#xff08;警告信息&#xff09; confirm&#xff08;确认信息&#xff09; prompt&#xff08;提示输入&#xff09; 对于页面出现的 alert 弹窗&#xff0c;Selenium 提供如下方法&#xff1a; 序号 方法/属性 描述 1 ac…

如何更改Outlook阅读邮件时的默认字体?

如果收到的邮件中未指定字体&#xff0c;outlook默认使用宋体显示。 如果觉得不好看&#xff0c;可以进行更改。但不是在outlook中更改&#xff0c;outlook中只是修改编辑器中的字体&#xff0c;和纯文本邮件浏览的字体&#xff0c;不能更改未指定字体的HTML邮件的显示字体。 …

TensorFlow2实战-系列教程5:猫狗识别2------数据增强

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 猫狗识别1 数据增强 猫狗识别2------数据增强 猫狗识别3------迁移学习 1、猫狗识别任…

C++:CSDN云服务器

每一次打开我的个人中心——&#xff08;T_T&#xff09; 1、右下角加载个不停...... &#xff08;耗时一分钟&#xff09; 2、闪白影...... &#xff08;耗时30秒&#xff09; 3、加载出浏览器...... &#xff08;耗时10秒&#xff09; 4、打开\加载网站...... &#xff0…

Unity 模板方法模式(实例详解)

文章目录 简介示例1&#xff1a;游戏关卡流程示例2&#xff1a;测试试卷类示例3&#xff1a;游戏场景构建流程示例4&#xff1a;游戏动画序列示例5&#xff1a;游戏对象初始化过程 简介 Unity中的模板方法模式是一种行为设计模式&#xff0c;它在父类中定义了一个算法的框架&a…

软件工程知识梳理5-实现和测试

编码和测试统称为实现。 编码&#xff1a;把软件设计结果翻译成某种程序设计语言书写的程序。是对设计的进一步具体化&#xff0c;是软件工程过程的一个阶段。 测试&#xff1a;单元测试和集成测试&#xff0c;软件测试往往占软件开发总工作量的40%以上。 编码&#xff1a;选…

【百度Apollo】自动驾驶规划技术:实现安全高效的智能驾驶

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…

浏览器前进后退实现思路

1. 使用浏览器的历史对象&#xff1a; 浏览器提供了 window.history 对象&#xff0c;通过该对象可以访问浏览器的历史记录。 2. 前进&#xff08;Forward&#xff09;&#xff1a; 要实现前进操作&#xff0c;可以使用 window.history.forward() 方法。 // 前进一步 windo…

Unity之做一个最简单的FPS游戏demo

目录 &#x1f60b;FPS游戏Demo &#x1f4a4;1.新建FPS模板项目 ⚒️2.装备枪 &#x1f4a3;3.设置射击功能 &#x1f4fa;4.制造一个子弹预制体 &#x1f3ae;5.发射子弹 说起来小编学Unity差不多一个月了&#xff0c;都是利用上班摸鱼时间学的&#xff08;doge.jpg&…

FreeRTOS_Stm32F407系列单片机标准库移植

这里写目录标题 1、下载FreeRTOS源码1.1github仓库下载1.2官网下载1.3百度网盘下载 2、FreeRTOS移植2.1首先需要有一个可运行的标准库工程2.2在工程内创建一个FreeRTOS文件夹&#xff0c;然后在FreeRTOS文件夹中再新建port、include、src三个文件夹。2.3 port文件夹移植2.4 inc…

vivado里的LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG、MMCM资源介绍

vivado里的LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG、MMCM资源介绍 提示&#xff1a;以下是本篇文章正文内容&#xff0c;写文章实属不易&#xff0c;希望能帮助到各位&#xff0c;转载请附上链接。 vivado实现电路用到的资源类型 LUT&#xff08;Look-Up Table&#xff09;&am…

Backtrader 文档学习- Broker - Position

Backtrader 文档学习- Broker - Position 1. 概述 在backtrader中&#xff0c;Position对象是由Strategy对象创建的&#xff0c;用于跟踪策略的持仓。 通常在策略中使用以下代码检查资产的仓位&#xff1a; position&#xff08;属性&#xff09;或 getposition(dataNone, br…

【QT+QGIS跨平台编译】之十八:【Expat+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、Expat介绍二、文件下载三、文件分析四、pro文件五、编译实践一、Expat介绍 Expat库最初由James Clark创建,已经成为许多编程语言中常用的XML解析工具。它以其简单、快速和可靠的特点而受到广泛的认可和使用。 Expat库的优点包括: 快速:Expat的解析速度非常快…

使用草料二维码表单功能,让数据收集更高效、规范

功能介绍 表单作为草料二维码的高级功能之一&#xff0c;可用于收集格式统一的数据。你可以通过组合姓名、图片、检查项等组件搭建出电子表单&#xff0c;关联到二维码中&#xff0c;扫码填写表单即可更快速、规范的收集数据。 这些数据保存在账号下形成动态档案&#xff0c;…

【 USRP 相控阵】X波段相控阵开发平台用户指南

包装 一共三件。 1、AD9081-FMCA-EBZ AD9081 MxFE Evaluation Board, https://www.analog.com/eval-ad9081 AD9081 的全功能评估板使用 ACE 软件进行控制的 PC 软件HMC7044 的板载时钟用于管理套件和 FPGA 时钟选择切换到外部直接时钟 AD9081-FMCA-EBZ 评估板包括以各种模…

CTF-WEB的入门真题讲解

EzLogin 第一眼看到这个题目我想着用SQL注入 但是我们先看看具体的情况 我们随便输入admin和密码发现他提升密码不正确 我们查看源代码 发现有二个不一样的第一个是base64 意思I hava no sql 第二个可以看出来是16进制转化为weak通过发现是个弱口令 canyouaccess 如果…

电镀槽槽号识别(接近开关BCD码检测)

电镀槽的槽号识别,常用方法有: 1、激光测量 2、8421码识别 3、伺服定位 4、RFID识别 这篇博客我们介绍利用接近开关和8421码检测识别槽号,电镀取放请求FC详细介绍可以查看下面博客: https://rxxw-control.blog.csdn.net/article/details/135536149https://rxxw-contr…