How do I use IF-loops with plot_handles?

조회 수: 1 (최근 30일)
fxo
fxo 2013년 5월 20일
I'm having a bit of a problem to integrate the if-loop with plot handles. So the program I'm writing has this structure:
It has this menufile in which you choose what you want to do (This is only a small part of it):
case 1
plot_handles = createPlot(plot_handles);
case 2
changeWidth(plot_handles);
In case 1 you'll be able to index a figure and write the function which is plotted and you're being returned to the menu.
function plot_handles = createPlot(plot_handles)
clc
try
figureid = input('Input figure-ID: ');
func= input('Input function f(x): ','s');
figure(figureid);
h=ezplot(func);
plot_handles(figureid)=h;
catch
lasterr
error('Nonvalid function!');
end
end
Back in the menu I enter case 2 where the thought is that it'll ask you which figure you want to edit.Once you've choosen that you're supposed to be able to edit that figures' linewidth:
function changeWidth(plot_handles)
figureid = input('Input figure-ID: ');
h = plot_handles(figureid);
if exist(figureid)== 0 % Here's the problem, I don't know how to test if ...
% the ID is correct or not.
error('Invalid figure-ID')
else
width=input('Input new width: ');
set(h, 'linewidth', width)
end
The problem is that I don't know how to check if figure-ID is correct in the IF-loop, elsewhere I want the errormessage so be written out.
Would really appreciate some help!

채택된 답변

per isakson
per isakson 2013년 5월 20일
편집: per isakson 2013년 5월 20일
"check if figure-ID is correct "
There is a function:
ishandle
Test for valid graphics object handle
Continue:
I think code cells are useful when experimenting with code, see Evaluate Subsections of Files Using Code Cells. One small step at a time, check the result and proceed to next step.
Doc says:
h = ezplot(...) returns the handle to all the plot objects in h.
My first step:
h = ezplot( @sin );
get( h, 'Type' )
returns
ans =
line
Thus, ezplot returned the handle of the line object. Did you expect that?
  댓글 수: 3
fxo
fxo 2013년 5월 20일
I solved it on my own using ishandle as you said, once again, thank you for the waypointer!
per isakson
per isakson 2013년 5월 20일
"right way" that depends on who you ask. I doubbt.
  • I hessitate to use the same variable, h, as handle to a graphic object and index to a double array.
  • I hessitate to rely on current figure and current axes when more than one figure or axes exist simultaneously.

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

추가 답변 (0개)

카테고리

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

제품

Community Treasure Hunt

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

Start Hunting!

Translated by