如何在MATLAB中使用索引值作为向量来修改矩阵的值?

时间:2017-10-17 03:55:15

标签: matlab matrix

我有一个矩阵如下

 a =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

我需要修改以下位置的值      (1,2),(1,5),(2,5),(5,3)为5.我的行指数为     c =

     1
     1
     2
     5

和列索引为

d =

     2
     5
     5
     3

我尝试使用以下命令修改值

A(c,d) = 5;

但它没有给出正确的结果,它修改了矢量组合的索引。 a =

 0     5     5     0     5
 0     5     5     0     5
 0     0     0     0     0
 0     0     0     0     0
 0     5     5     0     5

但我需要

a =

     5     0     0     0     5
     0     0     0     0     5
     0     0     0     0     0
     0     0     0     0     0
     0     0     5     0     0

任何人都可以帮忙获得这个结果吗?提前致谢 马努

2 个答案:

答案 0 :(得分:2)

如评论中所述,一种解决方案可以使用sub2ind

ind = sub2ind(size(a),c,d);
a(ind) = 5;

答案 1 :(得分:1)

a = zeros(5) ;
r = [  1
     1
     2
     5];

 c = [
     2
     5
     5
     3] ;

 idx = sub2ind(size(a),r,c) ;
 a(idx) = 5 ;