matlab矩阵diag
时间: 2024-12-27 08:22:32 浏览: 6
### MATLAB 中 `diag` 函数的使用
#### 创建对角矩阵
当向量作为输入传递给 `diag` 函数时,该函数会返回一个具有指定元素位于主对角线上而其他位置填充零的新方阵。
```matlab
v = [2 1 -1 -2 -5];
D = diag(v);
disp(D);
```
上述代码片段展示了如何基于给定的一维数组构建对应的对角矩阵[^4]。
#### 提取对角线元素
如果提供的是二维数组而非一维数组,那么 `diag` 将提取并返回由输入矩阵的主要对角线构成的一列向量。
```matlab
A = magic(3); % 随机选取了一个3x3魔方矩阵为例
d = diag(A);
disp(d');
```
这段脚本说明了怎样从已有的方形矩阵里获取它的主要对角线上的数值形成一个新的行向量。
#### 构建偏移对角线
除了处理主对角线外,还可以通过设置第二个可选参数来控制所创建或抽取的副对角线条目相对于主对角的位置。正值表示上方副对角线;负值则对应下方副对角线。
```matlab
% 上面第二条对角线
upperDiag = diag([10 20], 1);
% 下面第一条对角线
lowerDiag = diag([-7 -8 -9], -1);
fullMatrix = full(sparse(size(A)) + upperDiag + lowerDiag);
disp(fullMatrix);
```
此部分解释了如何利用额外的索引来定位特定于上下不同层次的次级对角线,并将其加入到现有结构之中[^3]。
相关问题
matlab利用diag函数产生矩阵
在MATLAB中,`diag` 函数是一个非常有用的工具,用于生成对角矩阵、稀疏对角矩阵或者是从向量创建对角元素的矩阵。它的基本语法如下:
```matlab
diagonal_matrix = diag(vector, k)
```
其中:
- `vector` 是一个向量,它将被放置在对角线上成为对角矩阵的元素。如果 `vector` 为空或者省略,则默认生成单位矩阵。
- `k` 是一个可选参数,指定对角线的位置:
- 当 `k > 0` 时,`vector` 的元素会放在主对角线上方的k条对角线上;
- 当 `k < 0` 时,`vector` 的元素会放在主对角线下方的 |k| 条对角线上;
- 如果 `k = 0` 或者不提供,`vector` 的元素会被放在主对角线上。
举个例子:
```matlab
% 创建一个单位矩阵
A = diag(ones(3, 1)); % A = [1 0 0; 0 1 0; 0 0 1]
% 创建一个下三角矩阵
B = diag([1, 2, 3], -1); % B = [1 0 0; 2 1 0; 3 2 1]
% 创建一个上三角矩阵
C = diag([4, 5, 6], 1); % C = [0 4 0; 0 0 5; 0 0 0 6]
```
matlab中diag
在 MATLAB 中,diag 函数用于从一个矩阵中提取对角线元素或者将一个向量转换为对角线矩阵。
如果输入参数是一个向量,则 diag 函数将返回一个对角线矩阵,其中向量的元素被放置在对角线上,其余元素为零。例如:
```
x = [1 2 3];
D = diag(x);
```
则 D 的值为:
```
D =
1 0 0
0 2 0
0 0 3
```
如果输入参数是一个矩阵,则 diag 函数将返回一个列向量,其中包含矩阵的对角线元素。例如:
```
A = [1 2 3; 4 5 6; 7 8 9];
x = diag(A);
```
则 x 的值为:
```
x =
1
5
9
```
阅读全文