gpt4 book ai didi

matlab - 如何向量化矩阵的逐行对角化

转载 作者:行者123 更新时间:2023-12-02 06:05:30 26 4
gpt4 key购买 nike

我有一个n×m矩阵,我想转换为mn×m矩阵,结果的每个m×m块都包含每一行的对角线。

例如,如果输入是:

[1 2; 3 4; 5 6]

输出应为:
[1 0; 0 2; 3 0; 0 4; 5 0; 0 6]

当然,我不想用 for循环一步一步地组装矩阵。
是否有 vector 化和简单的方法来实现这一目标?

最佳答案

对于执行此操作的 vector 化方法,将对角元素的线性索引创建到结果矩阵中,然后直接分配。

%# create some input data
inArray = [10 11;12 13;14 15];

%# make the index array
[nr,nc]=size(inArray);

idxArray = reshape(1:nr*nc,nc,nr)';
idxArray = bsxfun(@plus,idxArray,0:nr*nc:nr*nc^2-1);

%# create output
out = zeros(nr*nc,nc);
out(idxArray) = inArray(:);

out =

10 0
0 11
12 0
0 13
14 0
0 15

关于matlab - 如何向量化矩阵的逐行对角化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11034837/

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