【问题标题】:How to assign a matrix to the diagonals of another matrix in matlab如何在matlab中将矩阵分配给另一个矩阵的对角线
【发布时间】:2018-12-23 03:37:45
【问题描述】:

我有一个矩阵 D = zeros (30, 432); 我想将 d = [ 1 1 0 0; 0 0 1 1; 0 0 0 0]; 分配给矩阵 D 的对角线。我有下面的代码,但它不允许我为 D 中的每个对角线值分配 d。

[N,~,P,Q]=size(D);
diagIndex=repmat(logical(eye(N)),[1 1 P Q]);
D(diagIndex)=d;

30x432 矩阵的输出如下:

d 0 0 0
0 d 0 0
0 0 d 0
0 0 0 d

【问题讨论】:

  • 您想要的输出到底是什么?请提供该输出。请创建一个小示例
  • 你是在寻找内在函数blkdiag 吗?
  • @Sardar Usama 我确实放了一个输出示例。
  • 输出矩阵有12行16列?
  • 嗯,它有 30 行和 432 列。这只是一个小例子。

标签: matlab matrix multidimensional-array diagonal


【解决方案1】:

您可以使用spdiags 创建一个对角线[10 x 108] 稀疏矩阵,然后使用kron 缩放和填充矩阵。

d = [ 1 1 0 0; 0 0 1 1; 0 0 0 0]
size_D=[30, 432];
sz = size_D./size(d);
diagonal = spdiags(ones(sz(1),1),0,sz(1),sz(2));
result = kron(diagonal ,d);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多