К сожалению, для обеих функций требуется обходной путь.
Вот один из способов сделать это:
%# Create a figure and some points
fh = figure;plot(rand(10,1),rand(10,1),'.')
ah = gca;
%# this allows the user to place the rectangle. However, the code resumes
%# as soon as the rectangle has been drawn
rh = imrect(ah,[]);
%# Create a dialog to have the possibility to uiwait
wh = warndlg('Please close this dialog once you are done adjusting your rectangle');
uiwait(wh)
%# Get the color of the rectangle
rectKids = get(rh,'Children');
rectangleColor = get(rectKids(1),'Color');
Вы можете использовать verLessThan , чтобы проверить версию Matlab и получить надлежащую функциональность. Однако, если есть пользователи, которые будут использовать код как в 2007b, так и в 2009b, я предлагаю оставить диалоговое окно для всех, чтобы они не запутались при переключении.