Trying to make a 6x6 checkerboard matrix using for loops and no if statements. trying to get my code down to 7 lines instead of 8.
    6 views (last 30 days)
  
       Show older comments
    
    Mary Jean Savitsky
 on 29 Sep 2020
  
    
    
    
    
    Commented: Ameer Hamza
      
      
 on 30 Sep 2020
            Trying to get the bolded code consolodated into 7 lines instead of 8 in order to make a 6x6 checkerboard matrix. I feel like somehow i can nest together all three for loops and only have one line for A()=a
n=6;
a=1;
A=zeros(n,n);
for i=1:2:n-1 %rows 1,3,5
    for j=1:2:n %columns 1,3,5 
        A(i,j)=a;
    end
    for k=2:2:n %columns 2,4,6
         A(i+1,k)=a;
     end
end
 display(A)
0 Comments
Accepted Answer
  Ameer Hamza
      
      
 on 29 Sep 2020
        
      Edited: Ameer Hamza
      
      
 on 30 Sep 2020
  
      You can create it like this
n=6;
a=1;
A = zeros(n);
for i = 2:2:n
    A = A + circshift(eye(n), i);
end
Result
>> A
A =
     1     0     1     0     1     0
     0     1     0     1     0     1
     1     0     1     0     1     0
     0     1     0     1     0     1
     1     0     1     0     1     0
     0     1     0     1     0     1
Within only 7 lines with thre for loops:
n=6;
a=1;
A=zeros(n,n);
for i=1:n % all rows
    for j=1:2:n %columns 1,3,5
        for k=2:2:n %columns 2,4,6
            A(i, (mod(i,2)==1)*j+(mod(i,2)==0)*k) = a;
        end
    end
end
disp(A)
2 Comments
  Ameer Hamza
      
      
 on 30 Sep 2020
				Check the updated answer. It shows a weird way to create this matrix with 3 "for", 3 "end" and only one line of code.
More Answers (0)
See Also
Categories
				Find more on Creating and Concatenating Matrices in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
