How to create a chessboard?

조회 수: 45 (최근 30일)
Alber
Alber 2020년 2월 21일
댓글: Alber 2020년 3월 9일
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
Stephen23
Stephen23 2020년 2월 24일
편집: Stephen23 2020년 2월 24일
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.

댓글을 달려면 로그인하십시오.

채택된 답변

Nishant Gupta
Nishant Gupta 2020년 2월 24일
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
Alber
Alber 2020년 3월 9일
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,...

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Sparse Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by