2013-04-08 12 views
6

Matlab'a çok aşina değilim, bu aptal soru için şimdiden özür dilerim. Bir matrisin belirli konumlarına 1 numara atamak istiyorum. Bir satır vektörüm ve karşılık gelen sütun vektörüm var. Bu konumlara birkaç kez değerler atamaya çalıştım. Ancak, işe yaramadı. İşte daha küçük boyutlu kodlar örneğidir. 4 * 4 matris olduğunu varsayalım ve matris (1,1), matris (2,3) ve matris (3,4) 'i 1 olarak atamak istiyorum.MATLAB'de bir matrisin belirli konumlarına bir değer nasıl atanır?

matrix = zeros(4,4); 
row = [1 2 3]; 
col = [1 3 4]; 
matrix(row,col)=1; 

Ancak, birileri yanlış burada ne işaret edebilir

matrix=[ 1 0 1 1 
     1 0 1 1 
     1 0 1 1 
     0 0 0 0]  

olarak cevabı var? Üzerinde çalışacağım matrisin gerçek büyüklüğü binlerce, bu yüzden bu konumları el ile tek tek atayamam. Satır vektörünü ve 1 değerini atamam gereken sütun vektörünü kullanmanın bir yolu var mı?

+2

Yararlı olabilir: http://stackoverflow.com/questions/6850368/how-can-i-change-the-values-of-multiple-points-in-a-matri x? rq = 1 –

+0

Çok teşekkür ederim. Gönderiyi kontrol ettim ve çok yardımcı oldu. – Cassie

cevap

8

Sen atama için bu atamak ve kullanmak istediğiniz pozisyonların doğrusal endekslerini hesaplamak için sub2ind kullanabilirsiniz, çok teşekkür ederiz:

indices = sub2ind(size(matrix), row, col); 
matrix(indices) = 1; 
+0

Çok teşekkür ederim. İşe yaradı ! – Cassie

1
matrix(1,1) = 1 
matrix(2,3) = 1 
matrix(3,4) = 1 
+2

Cevap verdiğiniz için çok teşekkür ederim. Ancak, matrisimin gerçek boyutu binlerce. Tek tek atayamam. Yani bende var olan satır vektörünü ve sütun vektörünü kullanmak için var mı? Teşekkürler – Cassie

1

Bir tümseğin biraz. Eğer epeyce bitişik olmayan satırlar veya sütunlar yapıyoruz sürece son derece kolayca

eleman matematik destekler

matrix(1:3,2:4)=1 

gibi çok kullanışlı bir yoldur bu

{0 1 1 1} 
{0 1 1 1} 
{0 1 1 1} 
{0 0 0 0} 
içine

{0 0 0 0} 
{0 0 0 0} 
{0 0 0 0} 
{0 0 0 0} 

açacak olan