Plotting a variable against loop iteration

조회 수: 3 (최근 30일)
Alla
Alla 2017년 8월 17일
댓글: Alla 2017년 8월 18일
I have a variable changing within a loop and I want to plot it against the loop's iteration in real time, sounds simple enough but I just can't get it to work, I get an empty plot with the Y axis changing without having anything plotted.
for i=900:1:nfiles
%%Code that generates variable (Y) here %%
x = linspace(0,nfiles);
plot(x,Y,'LineWidth',2,...
'MarkerEdgeColor','b',...
'MarkerFaceColor','b',...
'MarkerSize',10);
drawnow
end
  댓글 수: 2
Stephen23
Stephen23 2017년 8월 17일
편집: Stephen23 2017년 8월 17일
How many values of Y are calculated on each iteration? By this description "...the Y axis changing without having anything plotted" it sounds like you are plotting one point at a time.
In any case, the best solution will be to store all of the data in one array and then plot it after the loop.
Alla
Alla 2017년 8월 18일
That would definitely work, but what I need is to plot the results in real time.

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

채택된 답변

Robert U
Robert U 2017년 8월 18일
Hi Alaa MAZOUZ,
The marker-property of plot is by default 'none'. Choose a marker.
x is - according to the presented example - not dependent on i, thus, you do not calculate it repeatedly in every loop.
I like it better to open one parent figure which can be modified and draw the results into it. That might be useful for you, too. You might want to fix the limits of your axes to see Y moving in a fixed frame instead of seeing the frame moving for a quite fixed point (cloud).
x = linspace(0,nfiles);
ah = axes; % open parent figure
for i=900:1:nfiles
%%Code that generates variable (Y) here %%
plot(ah,x,Y,'LineWidth',2,...
'Marker','.',... % set marker to filled point
'MarkerEdgeColor','b',...
'MarkerFaceColor','b',...
'MarkerSize',10);
drawnow
end
Kind regards,
Robert
  댓글 수: 2
Robert U
Robert U 2017년 8월 18일
Example for a point drawing a circle:
clear
ah = axes;
for i = 0:360
x(i+1) = sind(i);
Y(i+1) = cosd(i);
plot(ah,x(1:end-1),Y(1:end-1),...
'LineWidth',1);
hold on
plot(ah,x(end),Y(end),...
'LineWidth',2,...
'Marker','.',...
'MarkerEdgeColor','r',...
'MarkerFaceColor','r',...
'MarkerSize',24);
axis equal
ah.XLimMode = 'manual';
ah.XLim = [-1 1];
ah.YLimMode = 'manual';
ah.YLim = [-1 1];
hold off
drawnow;
end
Alla
Alla 2017년 8월 18일
편집: Alla 2017년 8월 18일
Thank you Robert that was quite helpful, I have managed to make it work but only after I had one other figure that displays other results within the loop omitted, basically when the code switched between the two figures mid loop the plot does not hold on to the plotted points and restarts each time giving me dots,to work around this I have tried to have all of the results displayed in one figure and avoid the switching all together I but couldn't manage that either.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Graphics Performance에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by