Chapter 4: Programming in Matlab - College of the Redwoods
Chapter 4: Programming in Matlab - College of the Redwoods
Chapter 4: Programming in Matlab - College of the Redwoods
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
424 <strong>Chapter</strong> 4 <strong>Programm<strong>in</strong>g</strong> <strong>in</strong> <strong>Matlab</strong><br />
iii. Set both ‘XGrid’ and ‘YGrid’ properties to ‘on’.<br />
iv. Set <strong>the</strong> ‘ButtonDownFcn’ property <strong>of</strong> <strong>the</strong> axes object to <strong>the</strong> callback function<br />
handle @cursorUpdateText_Callback.<br />
Create a panel as a child <strong>of</strong> <strong>the</strong> figure object with <strong>Matlab</strong>’s uipanel command.<br />
Inside <strong>the</strong> panel, create a static text uicontrol as a child <strong>of</strong> <strong>the</strong> panel. Set <strong>the</strong><br />
‘Str<strong>in</strong>g’ property <strong>of</strong> this control to ‘(0,0)’ to start with. Write <strong>the</strong> callback function<br />
cursorUpdateText_Callback that gets <strong>the</strong> ‘CurrentPo<strong>in</strong>t’ <strong>of</strong> a mouse click <strong>in</strong><br />
<strong>the</strong> axes object and stores it <strong>in</strong> <strong>the</strong> variable x. Concatenate <strong>the</strong> follow<strong>in</strong>g str<strong>in</strong>g.<br />
textStr=[’(’,num2str(x(1,1)),’,’,num2str(x(1,2)),’)’];<br />
Assign textStr as <strong>the</strong> value <strong>of</strong> <strong>the</strong> ‘Str<strong>in</strong>g’ property <strong>of</strong> <strong>the</strong> static text uicontrol.<br />
Thus, click<strong>in</strong>g <strong>the</strong> mouse <strong>in</strong> <strong>the</strong> axes should update <strong>the</strong> text object with <strong>the</strong><br />
coord<strong>in</strong>ates <strong>of</strong> <strong>the</strong> mouse cursor <strong>in</strong> <strong>the</strong> axes object.<br />
5. Write a <strong>Matlab</strong> GUI that conta<strong>in</strong>s one axes object. Set each <strong>of</strong> <strong>the</strong> follow<strong>in</strong>g<br />
properties <strong>of</strong> <strong>the</strong> axes object to <strong>the</strong> <strong>in</strong>dicated value.<br />
i. Set both ‘XLim’ and ‘YLim’ properties to [−10, 10].<br />
ii. Set both ‘XTick’ and ‘YTick’ properties to -10:2:10.<br />
iii. Set both ‘XGrid’ and ‘YGrid’ properties to ‘on’.<br />
iv. Set <strong>the</strong> ‘ButtonDownFcn’ property <strong>of</strong> <strong>the</strong> axes object to <strong>the</strong> callback function<br />
handle @updateL<strong>in</strong>e_Callback.<br />
Initialize a l<strong>in</strong>e object with <strong>the</strong> command hL<strong>in</strong>e=l<strong>in</strong>e(0,0). Write a callback<br />
function updateL<strong>in</strong>e_Callback that gets <strong>the</strong> ‘CurrentPo<strong>in</strong>t’ <strong>of</strong> <strong>the</strong> mouse click<br />
<strong>in</strong> <strong>the</strong> axes object. Append <strong>the</strong> x- and y-coord<strong>in</strong>ates <strong>of</strong> this new po<strong>in</strong>t to <strong>the</strong> value<br />
<strong>of</strong> <strong>the</strong> ‘XData’ and ‘YData’ properties <strong>of</strong> <strong>the</strong> l<strong>in</strong>e object hav<strong>in</strong>g handle hL<strong>in</strong>e.<br />
For example, to update <strong>the</strong> x-data, you will need <strong>the</strong>se l<strong>in</strong>es <strong>in</strong> <strong>the</strong> body <strong>of</strong> <strong>the</strong><br />
callback.<br />
newPo<strong>in</strong>t=get(hObject,’CurrentPo<strong>in</strong>t’);<br />
x=get(hL<strong>in</strong>e,’XData’);<br />
set(hL<strong>in</strong>e,’XData’,[x,newPo<strong>in</strong>t(1,1)])<br />
Similar code is required to update <strong>the</strong> ‘YData’. Thus, each time you click your<br />
mouse <strong>in</strong> <strong>the</strong> axes, a new l<strong>in</strong>e segmented is added, connect<strong>in</strong>g <strong>the</strong> last po<strong>in</strong>t plotted<br />
to <strong>the</strong> current po<strong>in</strong>t clicked with <strong>the</strong> mouse.