matlab用spdiags 函数构造大型稀疏对角矩阵

在Matlab中,spdiags函数主要用于创建稀疏对角矩阵或修改现有的稀疏矩阵的对角线。它的语法如下:

B = spdiags(B, d, m, n)

其中各个参数的含义如下:

  • B:可以是一个向量或者一个矩阵,用来表示对角线的值。如果B是向量,它将被视为一个列向量,根据d参数指定的位置放置在新矩阵的对角线上。如果B是一个矩阵,spdiags函数会取B的对角线(根据d参数指定的位置)来构建一个新的稀疏矩阵。

  • d:一个整数向量,指定B中值要放置在新矩阵中的对角线的位置。正整数表示位于主对角线之上的对角线,负整数表示位于主对角线之下的对角线,0表示主对角线。

  • m:生成的稀疏矩阵的行数。

  • n:生成的稀疏矩阵的列数。

下面通过几个例子来演示 spdiags 函数的用法:

示例 1: 创建对角线矩阵

假设我们想创建一个5x5的对角线矩阵,其中主对角线上的元素为1,其他位置为0。

% 定义主对角线的值
diagonal = ones(5, 1);

% 对角线的位置,这里是0,表示主对角线
d = 0;

% 矩阵的大小
m = 5;
n = 5;

% 使用 spdiags 函数创建稀疏对角矩阵
A = spdiags(diagonal, d, m, n);

% 将稀疏矩阵转换为密集矩阵显示
full(A)

输出结果为:

1     0     0     0     0
0     1     0     0     0
0     0     1     0     0
0     0     0     1     0
0     0     0     0     1

示例 2: 创建带状矩阵

假设我们要创建一个5x5的带状矩阵,主对角线上的元素为1,上方和下方各有一条对角线,分别为2和3。

% 矩阵的大小
m = 5;
n = 5;
% 定义对角线上的值
% diagonal = [1; 2; 3];
e = ones(n,1);
% 定义对角线的位置
diagonal = [3*e 1*e 2*e];  % -1表示主对角线下方,0表示主对角线,1表示主对角线上方

d=[-1:1]

% 使用 spdiags 函数创建带状矩阵
A = spdiags(diagonal, d, m, n);

% 将稀疏矩阵转换为密集矩阵显示
full(A)

输出结果为:

1     2     0     0     0
3     1     2     0     0
0     3     1     2     0
0     0     3     1     2
0     0     0     3     1
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值