2013-04-08 14 views
6

Nie bardzo znam Matlaba, przepraszam za to głupie pytanie z góry. Chciałbym przypisać numer 1 do pewnych określonych lokalizacji macierzy. Mam wektor wiersza i odpowiedni wektor kolumnowy. Próbowałem kilka razy przypisać wartości do tych lokalizacji. Jednak to nie zadziałało. Oto przykład mniejszych rozmiarów kodów. Załóżmy, że istnieje macierz 4 * 4 i chciałbym przypisać macierz (1,1), macierz (2,3) i macierz (3,4) do 1. To właśnie zrobiłem.Jak przypisać wartość do określonych lokalizacji macierzy w programie MATLAB?

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

Jednak dostałem odpowiedź,

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

Czy ktoś może wskazać, co robię źle tutaj? Rzeczywisty rozmiar matrycy, nad którą będę pracował, jest liczony w tysiącach, dlatego nie mogę ręcznie przypisać tych pozycji jeden po drugim. Czy jest jakiś sposób użycia wektora wiersza i wektora kolumny? Czy muszę przypisać wartość 1? Dziękuję bardzo,

+2

Może być przydatny: http://stackoverflow.com/questions/6850368/how-can-i-change-the-values-of-multiple-points-in-a-matri x? rq = 1 –

+0

Dziękuję bardzo. Sprawdziłem wpis i jest to bardzo pomocne. – Cassie

Odpowiedz

8

Można użyć sub2ind do obliczania liniowych wskaźników pozycji, które chcesz przypisać do i użyć tych, dla zadania:

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

Dziękuję bardzo. Zadziałało ! – Cassie

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

Dziękuję bardzo za odpowiedź. Jednak rzeczywisty rozmiar mojej matrycy jest w tysiącach. Nie mogę przypisać pojedynczo. A więc czy mimo to używam wektora wiersza i wektora kolumnowego, który mam? Dzięki – Cassie

1

trochę guz. Chyba że robisz sporo nieciągłe wiersze lub kolumny, bardzo dobrym sposobem jest jak

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

Obsługuje elementów matematyki bardzo łatwo

to okaże

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

do

{0 1 1 1} 
{0 1 1 1} 
{0 1 1 1} 
{0 0 0 0} 
Powiązane problemy