MATLAB:如何将矩阵的对角线作为另一个矩阵中的参数传递?

时间:2016-07-24 04:03:26

标签: arrays matlab matrix

x为二维数组,yx=1:7为相同长度的一维数组(例如,让我们拥有y=3:9和{{ 1}})。

我需要找到一种方法来传递来自xy的参数,方法将在下面介绍。

如果我简单地放c(x,y),它将给出7乘7矩阵。我不想要那个。
相反,我想传递[x y]矩阵的对角线:((x(1), y(1)), (x(2), y(2))...(x(7), y(7))。有没有办法在没有for循环或任何迭代语句的情况下执行此操作?

2 个答案:

答案 0 :(得分:2)

您正在寻找sub2ind功能

res = c( sub2ind(size(c), x, y ) )

答案 1 :(得分:1)

这是一种更简单的方法。如果您正在寻找对角线,请使用diag。如果你有一个矩阵c

c =

    5    8    4    2    9    1    6    1    1
    9    8    7    5    9    3    2    7    5
    2    3    9   10    2    1    4    2    2
    3    2    9    2    4    4    7    2    4
    3    9   10    8    7    5    2    1    8
    5    6    3    7    6    1   10    5    2
    6    1    7    3   10    8    2    4    2

你可以使用diag找到主对角线而没有额外的参数:

>> diag(c)
ans =

   5
   8
   9
   2
   7
   1
   2

但是,第二个参数表示你想要哪个对角线作为主对角线的偏移量。因此默认对角线等于0。如果您希望对角线从c(1,3)开始,那么2 上方主对角线,那么

>> diag(c,2)
ans =

   4
   5
   2
   4
   2
   5
   2

同样,如果您希望对角线从c(4,1)开始,则偏移量为-3

>> diag(c,-3)
ans =

   3
   9
   3
   3