在matlab中使用向量作为索引的完整矩阵

时间:2014-03-19 16:34:39

标签: matlab vector matrix

我们假设我们有一个矩阵A1和两个向量v1和v2如下:

A1=zeros(5, 5);
v1=[1 2 3];
v2=[5 5 4];

有没有办法用v1和v2作为索引逐个替换A1的元素?即插入A1(1,5),A1(2,5)和A1(3,4)中的一些元素。

以下是v1和v2的所有组合。我只想一个接一个。即,v1(1)与v2(1),v1(2)与v2(2),依此类推。

A1(v1, v2) 

2 个答案:

答案 0 :(得分:2)

基本上,您有行和列信息,需要将它们转换为线性索引,以便索引到A1。为此,请使用sub2ind -

A1(sub2ind(size(A1),v1(1),v2(1))) = 12
A1(sub2ind(size(A1),v1(2),v2(2))) = 10
A1(sub2ind(size(A1),v1(3),v2(3))) = 9

输出 -

A1 =

     0     0     0     0    12
     0     0     0     0    10
     0     0     0     9     0
     0     0     0     0     0
     0     0     0     0     0

如果您将这些值存储在某个数组array1中,请使用此结果与上述相同 -

array1 = [12 10 9];
A1(sub2ind(size(A1),v1,v2)) = array1;

答案 1 :(得分:1)

将矢量转换为线性索引:

A1=zeros(5, 5);
v1=[1 2 3];
v2=[5 5 4];

ind=sub2ind(size(A1), v1, v2);
A1(ind(1))=1

A1 =

     0     0     0     0     1
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0