How to create a chessboard?

38 views (last 30 days)
Alber
Alber on 21 Feb 2020
Commented: Alber on 9 Mar 2020
I have created a chessboard function that goes from values 1 to -1, where its parameters are M (width of the image), N (height), F (rows), C (columns).
My problem is that for certain values of F and C, the function does not respond to me as it should, resulting in something similar to bands instead of squares. I have reviewed the Matlab documentation and have only seen the checkerboard function, which in my case is not worth it. The code of my function is shown below:
function [a] = chessboard3(N,M,C,F)
L1 = floor(M/C);
L2 = floor(N/F);
k = 1;
for m=1:L1:M
for n=1:L2:N
a(m:m+L1-1,n:n+L2-1)=ones(L1,L2)*(cos(k*pi));
k=k+1;
end
k=k+1;
end
end
The resolutions that I must prove are:
8k = 7680x4320
4k = 3840x2160
1080p = 1920x1080
Thank you very much in advance.
  1 Comment
Stephen23
Stephen23 on 24 Feb 2020
Edited: Stephen23 on 24 Feb 2020
You don't need loops to generate that chessboard, e.g.:
I = 1-2*kron(toeplitz(mod(1:C,2),mod(1:F,2)),ones(fix(M/C),fix(N/F)))
or use repelem instead of kron.

Sign in to comment.

Accepted Answer

Nishant Gupta
Nishant Gupta on 24 Feb 2020
I am assuming that you are using plot function to create the chessboard, which is resulting in bands in the output. Instead of it, use imshow function as following :
M = 7680;
N = 4320;
C = 8;
F = 8;
I = chessboard3(N,M,C,F);
imshow(I);
function [a] = chessboard3(N,M,C,F)
L1 = floor(M/C);
L2 = floor(N/F);
k = 1;
for m=1:L1:M
for n=1:L2:N
a(m:m+L1-1,n:n+L2-1)=ones(L1,L2)*(cos(k*pi));
k=k+1;
end
k=k+1;
end
end
Refer following documentation to know more about imshow function: imshow
  1 Comment
Alber
Alber on 9 Mar 2020
Thank you very much for your answers, in the end to solve this problem I needed to take into account all cases, for odd and even rows, for even and impart columns for non-whole subdivisions,...

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!