我正在尝试使用或构建方带矩阵,但无法弄清楚如何.我发现文档有点令人困惑,我不确定我是否可以通过简单的调用来构建这些矩阵.blkdiagspdiagsspdiagsblkdiag
我想从两个参数构建一个方形带矩阵:
例如:
band_width = 2;
matrix size = 9;
Run Code Online (Sandbox Code Playgroud)
结果:
[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]
Run Code Online (Sandbox Code Playgroud)
创建像这样的矩阵的一个棘手的单行方法是使用卷积:
M = sign(conv2(eye(matrix_size),ones(band_width+1),'same'));
Run Code Online (Sandbox Code Playgroud)
创建具有给定大小的单位矩阵,然后在2-D中用1的方阵进行卷积,然后通过取符号将其转换为0和1 .
以上对于制作相对较小的非稀疏矩阵是很好的.对于较大的矩阵,卷积可能会变得昂贵,您可能希望将结果表示为稀疏矩阵.以下是使用SPDIAGS以一般方式执行此操作的方法:
M = spdiags(ones(matrix_size,2*band_width+1),...
-band_width:band_width,matrix_size,matrix_size);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7323 次 |
| 最近记录: |