2017-10-17 147 views
-1

我有一個矩陣如下如何通過在MATLAB中使用索引值作爲矢量來修改矩陣的值?

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 

我嘗試使用以下命令

0123修改值
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 

任何人的幫助可以得到這樣的結果?由於事先 馬努

+4

['sub2ind'](https://www.mathworks.com/help/matlab/ REF/sub2ind.html) – excaza

回答

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

c = [ 
    2 
    5 
    5 
    3] ; 

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

正如註釋所提到的,一個解決方案可以使用sub2ind

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