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.
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Mary Jean Savitsky
am 29 Sep. 2020
Kommentiert: Ameer Hamza
am 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 Kommentare
Akzeptierte Antwort
Ameer Hamza
am 29 Sep. 2020
Bearbeitet: Ameer Hamza
am 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 Kommentare
Ameer Hamza
am 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!