2 Stimmen

Zeichnen von 256 Quadraten/Rechtecken in MATLAB

Ich versuche, mit der MATLAB-Funktion Rechteck 256 kleine Quadrate zu zeichnen. Wenn ich etwa 10 Quadrate zeichne, funktioniert das Folgende gut:

for i=1:2:40

rectangle('Position',[5,3+i,0.3,0.3],...
      'Curvature',[0,0],...
     'LineStyle','-', 'faceColor', 'black')

end

axis off; 

daspect([1,1,1])

enter image description here

Aber wenn ich den letzten Wert der for-Schleife auf 512 ändere (um 256 Quadrate zu zeichnen), wird nicht richtig gedruckt:

enter image description here

Hier ist die vergrößerte Version eines Ausschnitts des obigen Bildes: enter image description here

Dieses Bild zeigt deutlich, dass irgendwo etwas nicht stimmt, da die Seiten der Quadrate nicht vollkommen gleich sind und dass die Die Quadrate werden bei einer höheren Anzahl von Quadraten kleiner. : Kann mir jemand helfen, die Quadrate perfekt zu zeichnen? mit nicht abnehmender Größe (ich habe keine Probleme mit dem Arbeitsspeicher und kann es tolerieren, wenn mehrere Seiten nach unten gescrollt werden, um ganze Quadrate abzudecken)

5voto

Andrey Rubshtein Punkte 20507

Es ist eine klassische Moiré-Effekt . So viele Rechtecke kann man auf dem Monitor nicht darstellen, weil es nicht genug Pixel gibt. Matlab führt ein Downsampling für Sie durch. Dadurch erhalten Sie eine andere Frequenz, die ursprünglich nicht vorhanden war.

3voto

H.Muster Punkte 9287

Ich habe Ihren Code ausprobiert, und er funktioniert auch dann, wenn die Schleife 512 Iterationen durchläuft - wenn Sie in der endgültigen Matlab-Abbildung hineinzoomen. Die von Ihnen beschriebenen Artefakte werden wahrscheinlich durch die Bildschirmauflösung oder eine niedrige Auflösung beim Exportieren in Nicht-Vektor-Dateien verursacht.

Versuchen Sie, Ihr Bild als Vektordatei (eps oder svg) zu exportieren, um zu sehen, dass alles gut aussieht, wenn Sie es vergrößern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X