2017-02-28 17 views
1

Hallo Ich bin neu bei Matlab. Zugriff auf oder Zuweisung von Werten eines 2-Arrays ohne Verwendung von for-Schleifen. Ich habe Arbeitscode mit for-Schleifen. Ich lese über Doppelpunkt-Operator, aber es kann einen Wert zu einer einzelnen Zeile oder einer Spalte in einer Anweisung zuweisen.eg myImage(:5) = 1; wird 1 zur 5. Zeile zuweisen;Zugriff auf Elemente eines 2Darray in Matlab

-Code

myImage = ones(128,128); 
rows = 128; 
columns = 128; 
for row = 1 : rows 
    for column = 1 : columns 
     if row <= 64 && column <= 64 
       myImage(row , column) = 0; 
     elseif row > 64 && column > 64 
      myImage(row , column) = 0; 

     end 
    end 

end 

Antwort

2

Erstellen Sie einen logischen Index mit einem meshgrid!

[x,y]=meshgrid(1:128,1:128); 
myImage = ones(128,128); 

myImage(x<= 64 & y<= 64)=0; 
myImage( x> 64 & y> 64)=0; 
+0

Sie sind ein Lebensretter. Danke – usmanwalana

+1

@AnderBiguri Warum machst du nicht einfach 'myImage = one (128,128); myImage (1: 64,1: 64) = 0; myImage (65: Ende, 65: Ende) = 0; '? Ist das nicht einfacher? – Max

+1

@Max Weil ich angenommen habe, dass OP an komplizierteren Bedingungen interessiert sein könnte, als die exaplme posted. –