Effacer les filtres
Effacer les filtres

Plotting a grid of filled squares from true/false values in MATLAB

5 vues (au cours des 30 derniers jours)
P
P le 27 Nov 2013
Commenté : Walter Roberson le 28 Nov 2013
I want to create a grid of equal squares in MATLAB. I have a matrix which stores mixed values of 1 or a 0. I want the 1's to represent black squares and the 0's to be white with a white outline encapsulating the black squares for clearness/black grid lines for white boxes.
There is no need for units or values on either axis (i'm representing some shaded/unshaded PV panels).
The pseudocode is something like:
For(x row of variable, y column of variable)
If (variablename(x,y)) value = 1
draw a black square with white outline
elseif (variablename(x,y)) value = 0
draw a white square with black outline
end
end

Réponses (2)

Walter Roberson
Walter Roberson le 28 Nov 2013
Something like this (untested)
[sx, sy] = size(YourLogicalMatrix);
rectangle([sx/2 sy/2 1/2 1/2], 'facecolor', 'b');
[x, y] = find(YourLogicalMatrix);
for K = 1 : length(x)
rectangle([x(K)-1/2, Y(K)-1/2, 1, 1], 'Linewidth', 2, 'EdgeColor', 'w');
end
  4 commentaires
P
P le 28 Nov 2013
Modifié(e) : P le 28 Nov 2013
Am I correcting or adding those lines? I tried both. Adding them after the end of the loop yields:
??? Undefined function or method 'Y' for input arguments of type 'double'.
And a blue coloured rectangle appears with no grid lines.
Correcting lines 2 and 5 with the new code yields the same blue box and the same error message.
To test it I did
wallshading = ones(11,6)
wallshading(1:8) = 0
And then ran the script with wallshading as the variable. Thanks.
Walter Roberson
Walter Roberson le 28 Nov 2013
[sx, sy] = size(YourLogicalMatrix);
rectangle('Position', [sx/2 sy/2 1/2 1/2], 'facecolor', 'b');
[x, y] = find(YourLogicalMatrix);
for K = 1 : length(x)
rectangle('Position', [x(K)-1/2, y(K)-1/2, 1, 1], 'Linewidth', 2, 'EdgeColor', 'w');
end

Connectez-vous pour commenter.


P
P le 28 Nov 2013
tried
imagesc(wallshading);
colormap(gray);
grid on;
how can resize the squares to fit the dimensions and get the grid lines to be black for the white squares and vice versa? (it will look a little bit like a checkerboard)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by