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.
13 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Ameer Hamza
2020-9-29
编辑:Ameer Hamza
2020-9-30
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 个评论
Ameer Hamza
2020-9-30
Check the updated answer. It shows a weird way to create this matrix with 3 "for", 3 "end" and only one line of code.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!