2014-03-19 74 views
1

让我们说,我们有一个矩阵A1和两个向量V1和V2如下:与向量作为在MATLAB指数全矩阵

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

有没有一种方法来替代A1的元素使用v1和v2作为指标一个接一个?即在A1(1,5),A1(2,5)和A1(3,4)中插入一些元素。

以下做出v1和v2的所有组合。我只想要一个接一个。即v1(1)与v2(1),v1(2)与v2(2)等等。

A1(v1, v2) 

回答

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

将您的载体转换为线性索引:

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