让x
为二维数组,y
和x=1:7
为相同长度的一维数组(例如,让我们拥有y=3:9
和{{ 1}})。
我需要找到一种方法来传递来自x
和y
的参数,方法将在下面介绍。
如果我简单地放c(x,y)
,它将给出7乘7矩阵。我不想要那个。
相反,我想传递[x y]
矩阵的对角线:((x(1), y(1)), (x(2), y(2))...(x(7), y(7))
。有没有办法在没有for循环或任何迭代语句的情况下执行此操作?
答案 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