2011-06-08 18 views
6

Estoy tratando de trazar una matriz donde cada elemento está en uno de dos estados. (es el modelo ..)Markersize relativo en Matlab parcelas

Ahora, me gustaría tener un estado de color y el otro blanco. Eso funciona usando

[i,j] = find(S); 
figure(gcf); 
plothandle = scatter(i,j); 
axis([0 nNodes+1 0 nNodes+1]); 

cuando S mantiene los giros y un estado es igual a 0. (Encontrar devuelve una matriz de sólo elementos no nulos)

Para tener una parcela útil, los tamaños de los marcadores debe ser 1x1 en coordenadas RELATIVAS. Entonces, si toda la matriz S estuviera en un estado distinto de cero, todo sería coloreado.

Sin embargo, parece que Matlab solo permite MarkerSizes en puntos o pulgadas. ¿Cómo podría resolver esto?

Una idea que tuve fue que descubrí el tamaño de los ejes y luego puedo calcular fácilmente qué tan grandes deberían ser mis marcadores. Entonces tendría que crear una función de devolución de llamada si quiero acercarme, etc. Además, todavía no he encontrado una forma (sin la caja de herramientas de la imagen acq.) Para averiguar el tamaño absoluto de mis ejes.

Para aclarar lo que quiero: ¿Cómo podría trazar un tablero de ajedrez usando una matriz con 1 para el negro y 0 para los campos blancos?

Respuesta

3

Para la visualización de los datos de este tipo por lo general prefiero IMAGE o IMAGESC a PCOLOR desde PCOLOR no mostrará la última fila y columna de la matriz cuando se usa sombreado facetado (el valor predeterminado). Además, IMAGE y IMAGESC invierten el eje y para que la imagen coincida más intuitivamente con lo que piensas al mirar una matriz (es decir, las filas comienzan desde 1 en la parte superior). Puede visualizar su matriz de la siguiente manera:

S = round(rand(20));  %# Sample 20-by-20 matrix of ones and zeroes 
imagesc(S);    %# Plot the image 
colormap([1 1 1; 0 0 0]); %# Set the colormap to show white (zero elements) and 
          %# black (non-zero elements) 

Y aquí está una imagen de muestra:

enter image description here

1

Así como una sugerencia, puede probar a usar pcolor en lugar de `dispersión' Ejemplo:

pcolor(hadamard(20)) 
colormap(gray(2)) 
axis ij 
axis square 
Cuestiones relacionadas