Azzera filtri
Azzera filtri

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

12 visualizzazioni (ultimi 30 giorni)
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

Risposte (2)

Walter Roberson
Walter Roberson il 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 Commenti
P
P il 28 Nov 2013
Modificato: P il 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 il 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

Accedi per commentare.


P
P il 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)

Categorie

Scopri di più su Line Plots in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by