Относительная Markersize в MATLAB участков

Я пытаюсь построить матрицу, где каждый элемент находится в одном из двух состояний. (модель Изинга..)

теперь я хотел бы, чтобы одно состояние было цветным, а другое-белым. Это работает с использованием

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

когда S удерживает спины и одно состояние равно 0. (find возвращает матрицу только ненулевых элементов)

чтобы иметь полезный график, размеры маркеров должны быть 1x1 в относительных координатах. Поэтому, если вся матрица S будет находиться в ненулевом состоянии, все будет окрашено.

однако, похоже, Матлаб только позволяет MarkerSizes в точках или сантиметрах. Как я могу это решить?

одна из моих идей заключалась в том, что я узнаю размер точки осей, а затем могу легко вычислить, насколько большими должны быть мои маркеры. Затем мне нужно будет создать функцию обратного вызова, если я хочу увеличить масштаб и так далее. Кроме того, я еще не нашел способ (без авто изображения. toolbox), чтобы узнать абсолютный размер моих осей.

To уточните, что я хочу: как я могу построить шахматную доску, используя матрицу с 1 для черных и 0 для белых полей?

2 ответов


для отображения данных такого рода, я предпочитаю изображения или IMAGESC to PCOLOR С PCOLOR не будет отображать последнюю строку и столбец матрицы при использовании фасетного затенения (по умолчанию). Кроме того,изображения и IMAGESC переверните ось y, чтобы изображение более интуитивно соответствовало тому, что вы думаете, глядя на матрица (т. е. строки начинаются с 1 вверху). Вы можете визуализировать свою матрицу вот так:

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)

и вот пример изображения:

enter image description here


просто как предложение, вы можете попробовать использовать pcolor вместо' scatter ' пример:

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