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 日

0 投票

"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 日
Thank you for the quick answer!
Could you possibly help me a bit more, am I on the right way if I write it like this?
if ishandle(plot_handles(figureid))
Set_Title=input('New Title: ','s');
h = plot_handles(figureid);
title( Set_Title,'FontSize',16)
else
error('Invalid figure-ID')
end
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 件)

カテゴリ

ヘルプ センター および File Exchange で Graphics Object Programming についてさらに検索

製品

質問済み:

fxo
2013 年 5 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by