2011-08-19 30 views
7

可能重複:
How can I change the values of multiple points in a matrix?Matlab的:分配用柱行索引對於矩陣

我具有矩陣A和相同的長度,r的三個矢量,保持索引要分配給的行,c,包含要分配的列的索引,並且v包含要分配的實際值。

我想要的是A(r(i),c(i))==v(i)所有i。但這樣做

A(r,c)=v; 

不會產生正確的結果作爲MATLAB將其解釋爲選擇的rc每一個可能的組合,並將其分配值,例如

n=5; 
A=zeros(n); 
r=1:n; 
c=1:n; 

A(r,c)=1; 

那些息率的矩陣,我想獲得單位矩陣,因爲我想每個i都需要A(r(i),c(i))==1,那只是對角線上的元素應該受到影響。

如何在沒有for循環的情況下實現預期的結果?

+0

類似的問題:一個matlab矩陣轉換爲矢量](http://stackoverflow.com/questions/1931545/converting-a-matlab-matrix-to-a-vector) – Amro

+1

@Amro - 雖然我同意這兩個問題的答案非常相似,但問題是不同的 - 我想知道如何分配給矩陣,而另一個問題想知道如何將矩陣轉換爲向量。在尋找我的問題的答案時,不會遇到另一個問題。 – olamundo

+1

我沒有投票給你,我只是將其他問題鏈接爲相似的(而不是投票結束爲重複)。 – Amro

回答

13

好了,我找到了答案 - 一個需要使用線性索引,即列\行對轉換成一個單一的指標:

idx = sub2ind(size(A), r,c); 
A(idx)=v;