How to plot a grid with a for loop.

조회 수: 19 (최근 30일)
ErikJon Pérez Mardaras
ErikJon Pérez Mardaras 2021년 7월 17일
편집: Yazan 2021년 7월 18일
Hi everyone,
I am trying to design a program which must be able to plot a grid (of dost for example in this specific case).
So the user enters the value n of the number of dots that the grid must have (I have entered here 46 as an example) and now the program must draw all the dots beggining with one knew dot (the dot 0).
From the coordinates of that knew dot, the following ones (until the n-th one, that is, until the 46-th one) must be drawn by adding 1 to the X coordinate of the previous one and adding 3 to the Y coordinate of the previous one.
I have tried to design that program in the following code (with a for loop) but it doesn`t work, it seems that matlab doesn't recognize that notation that I have written in the 7-th and 8-th lines of code..
dot(0)=[6,6]; %The first dot of all (knew)
i=0;
j=0;
for 1:46 %I want to draw up to n dots (46 for example)
i=i+1;
j=i-1;
dot(i)(1)=dot(j)(1)+1; %The i-th dot's X coordinate is the previous dot's X coordinate +1
dot(i)(2)=dot(j)(2)+3; %The i-th dot's Y coordinate is the previous dot's Y coordinate +3
end
Anyone knows how program it in the correct way?
Anyone knows the correct way of writing those 7-th and 8-th line of code?
Thanks very much to everyone.
  댓글 수: 2
Image Analyst
Image Analyst 2021년 7월 17일
Are you trying to create a digital image (an array), that you'd display with imshow()? Or are you trying to create a graph where you'd plot dots with a command like plot(x, y, 'b.', 'MarkerSize', 50)?
ErikJon Pérez Mardaras
ErikJon Pérez Mardaras 2021년 7월 17일
Thanks for your reply!
What I am trying to do is the following.
In the real life you can write down in your notebook the following vectors following a pattern until the eternity.
And you can refer to its coordinates like that
I am trying to to the exactly SAME thing but in matlab, I mean, write (with a for loop for example) as many vectors as I wish following a simple pattern.
I know that a way of doing that is by writing you manually one by one like this:
dot1=[7,9];
dot2=[8,12];
dot3=[9,15];
dot4=[10,18];
dot5=[11,21];
dot6=[12,24];
dot7=[13,27];
dot8=[14,30];
%and so on manually....
But what I am trying to do is to generalize it, with a simple loop to save code lines and to be more quickly to do it by leting matlab to build those vectors in a quick moment instead of being you writing them one by one.
Thanks!

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

채택된 답변

Yazan
Yazan 2021년 7월 17일
N = 64;
a = 7;
b = 9;
x = a:a+N-1;
y = b:3:b+3*N-1;
figure,
plot(x, y, 'o'), grid minor
xlabel('X'), ylabel('Y');
  댓글 수: 5
Yazan
Yazan 2021년 7월 18일
편집: Yazan 2021년 7월 18일
Save the data in a N-by-2 matrix. The first column is the X-coordinates and the second is the Y-coordinates.
dat = [x(:), y(:)];
Now, to access the datapoint of index i, just use
dot = dat(i, :);
ErikJon Pérez Mardaras
ErikJon Pérez Mardaras 2021년 7월 18일
Thanks!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by