gpt4 book ai didi

algorithm - 将矩阵转换为沿其对角线的向量

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:29:46 26 4
gpt4 key购买 nike

我不是程序员,我只是需要在 matlab 中用数字来解决一些问题。我需要一个函数来对任何方阵进行以下转换:

来自

row 1: 1 2 3 
row 2: 4 5 6
row 3: 7 8 9

1 4 2 7 5 3 8 6 9

即沿着矩阵的对角线从左到右上将矩阵写成一个向量。有什么想法吗?


不过我真的需要更多帮助:

假设我们已经转换为向量的矩阵具有由 M(i,j) 表示的条目,其中 i 是行和 j 列。现在我需要能够从向量中的一个位置找出矩阵中的原始位置,即如果它在向量中的第 3 个条目,我需要一个函数来给我 i=1 j=2。有什么想法吗?我真的坚持这一点:(谢谢

最佳答案

这与 previous question 非常相似以之字形顺序遍历矩阵。稍作修改,我们得到:

A = rand(3);                        %# input matrix

ind = reshape(1:numel(A), size(A)); %# indices of elements
ind = spdiags(fliplr(ind)); %# get the anti-diagonals
ind = ind(end:-1:1); %# reverse order
ind = ind(ind~=0); %# keep non-zero indices
B = A(ind); %# get elements in desired order

使用 SPDIAGS功能。这样做的好处是它适用于任意大小的矩阵(不仅仅是方矩阵)。示例:

A =
0.75127 0.69908 0.54722 0.25751
0.2551 0.8909 0.13862 0.84072
0.50596 0.95929 0.14929 0.25428
B =
Columns 1 through 6
0.75127 0.2551 0.69908 0.50596 0.8909 0.54722
Columns 7 through 12
0.95929 0.13862 0.25751 0.14929 0.84072 0.25428

关于algorithm - 将矩阵转换为沿其对角线的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440641/

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