עבור לתוכן

שאלה ב MATLAB

Featured Replies

פורסם

קיבלתי משימה לעשות תוכנית REAL TIME כאשר יש לי נקודה שזזה לפי פונקציה מסויימת ואני אמור לעקוב אחריה עם העכר ואז להציג את הגרף של הנקודה יחד עם הגרף של תנועות העכבר שעשיתי

את הפונקציה של תנועות העכבר המרצה נתן לנו והיא:function mouseMove (object, eventdata)

xyPosition = get (gca, 'CurrentPoint');

xyPosition = round ( 100 * xyPosition ) / 100 ;

title(gca, ['(X,Y) = (', num2str(xyPosition(1,1)), ', ',num2str(xyPosition(1,2)), ')'], ...

'fontSize' ,20 );

התוכנית שמזיזה את הנקודה עשיתי כך:

y=0.5;

x=1:0.01:100;

x2=sin(x);

delay=0.0005;

for i=2:numel(x);

pause(delay);

hold on

plot(x2(i),y,'ob');

plot(x2(i-1),y,'ow')

end

עכשיו כאשר אני קורא לפונקציה של העכבר בלולאה ע"י הפקודה הבאה:

set (figure, 'WindowButtonMotionFcn',@mouseMove);

הוא מן הסתם פותח לי מלא FIGURE על כל הרצה של לולאה כי כמובן על קריאת פונקציה HOLD ON לא עובד

יש דרך להיתגבר על בעיה זו?

וגם הפונקציה של המרצה לא שומרת את הערכים של מיקום העכבר וגם פקודה SET לא יש איזושהי דרך ליפתור בעיה זו?

תודה רבה לכל העונים

פורסם

1.שים את הקוד בטאג code כדי שיהיה יותר קל לקרוא (לפחות תיישר לימין)

2.לא הבנתי למה אתה שם 2 פלוטים בכל ריצה של לולאה ביחד עם HOLD ON. כדי לעשות שהנקודה תזוז אתה צריך לנקות את הגרף כל ריצה של הלולאה ולצייר נקודה אחת

3.הפונקציה שהמרצה הביא עובדת בצורה עקומה (אם אני מבין נכון שמה את הנתונים של העכבר בTITLE של הFIGURE) אבל עדיין אפשר לעבוד עם זה

את הSET שאתה עושה אתה אמור לעשות פעם אחת (מחוץ ללולאה) ואז רק לקרוא את הTITLE בכל ריצה של הלולאה שלך

פורסם

הנה קוד שעובד. מצד שני הביצועים נוראיים

h=figure;xlim([-1,1]);
ylim([-1,1]);
set (h, 'WindowButtonMotionFcn',@mouseMove);
y=0.5;
x=1:0.01:100;
x2=sin(x);
delay=0.005;
MouseX(1)=0;
MouseY(1)=0;
pause(2);
for i=2:numel(x);
pause(delay);
hold on
plot(x2(i),y,'ob');
plot(x2(i-1),y,'or')
TitleHandle=get(gca,'title');
FigTitle=get(TitleHandle,'String');
XPos=10;
YPos=strfind(FigTitle,',');
YPosEnd=strfind(FigTitle,')');
MouseX=str2double(FigTitle(XPos:YPos(2)-1));
MouseY=str2double(FigTitle(YPos(2)+2:YPosEnd(end)-1));
plot(MouseX,MouseY,'xg');
end

בנוסף, כמה דברים שכדאי לקרוא על REALTIME

http://www.mathworks.com/help/matlab/ref/drawnow.html

http://stackoverflow.com/questions/3115833/real-time-plot-in-matlab

נערך על-ידי Diabetus

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים