Drawing a pyramid in MATLAB

I want to draw this figure in Matlab (no bubbles)! enter image description here

I wrote the following code:

figure
hold on 
axis equal
axis([0 20 0 10])
n = 20
n = n - 1 

for y = 0:10
for x = (y+1):n
    rectangle('Position',[x y 1 1],'curvature',[0 0],'facecolor',(rand(1,3)))
    pause(0.05)
end
end

      

I get the following code for executing this code:

enter image description here

I need help writing a piece of code where the correct number can be drawn.

+3


source to share


1 answer


Your loop x

does not start at the right point, but goes up to the maximum at each iteration.

Just change the definition of the loop for x = (y+1):n

to for x = (y+1):n-y

and you get the desired result:

for y = 0:10
   for x = (y+1):n-y
       rectangle('Position',[x y 1 1],'curvature',[0 0],'facecolor',(rand(1,3)))
       pause(0.05)
   end
end

      




edit: as per your comment you wanted to achieve this by manipulating n

, this is also possible, but you have to decrease n

on each iteration of the outer loop, e.g .:

for y = 0:10
   for x = (y+1):n
       rectangle('Position',[x y 1 1],'curvature',[0 0],'facecolor',(rand(1,3)))
       pause(0.001)
   end
   n=n-1 ;
end

      

+2


source







All Articles