gpt4 book ai didi

matlab - 学习在 MATLAB 中构建能带矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:10 25 4
gpt4 key购买 nike

我正在尝试构建正方形 band matrices使用 blkdiagspdiags ,但无法弄清楚如何。我发现 spdiags 的文档有点令人困惑,而且我不确定是否可以通过简单地调用 blkdiag 来构建这些矩阵。

我想从两个参数构建一个方带矩阵:

  • 带的宽度
  • 矩阵大小

例如:

band_width = 2;
matrix size = 9;

结果:

[1 1 1 0 0 0 0 0 0]
[1 1 1 1 0 0 0 0 0]
[1 1 1 1 1 0 0 0 0]
[0 1 1 1 1 1 0 0 0]
[0 0 1 1 1 1 1 0 0]
[0 0 0 1 1 1 1 1 0]
[0 0 0 0 1 1 1 1 1]
[0 0 0 0 0 1 1 1 1]
[0 0 0 0 0 1 1 1 1]
[0 0 0 0 0 0 1 1 1]

最佳答案

创建这样一个矩阵的一种棘手的单行方法是使用卷积:

M = sign(conv2(eye(matrix_size),ones(band_width+1),'same'));

identity matrix创建给定大小,然后 convolved in 2-Dsquare matrix of ones , 然后通过取 sign 转换为零和一.

以上内容适用于制作相对较小的非稀疏矩阵。对于较大的矩阵,卷积可能会变得昂贵,您可能希望将结果表示为 sparse matrix。反而。以下是如何使用 SPDIAGS 以一般方式执行此操作:

M = spdiags(ones(matrix_size,2*band_width+1),...
-band_width:band_width,matrix_size,matrix_size);

关于matlab - 学习在 MATLAB 中构建能带矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7756642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com