Matlab IMRECT обратная совместимость - PullRequest
1 голос
/ 25 февраля 2010

Я написал функцию GUI в MATLAB R2009b, которая использует функцию IMRECT. Мне нужно убедиться, что этот графический интерфейс также работает в MATLAB R2007b: с этого выпуска функция IMRECT претерпела значительные изменения. У меня два вопроса:

1 - в новом (R2009b) IMRECT определен метод GETCOLOR, который позволяет получить цвет, выбранный пользователем с помощью меню прокрутки. Есть ли способ имитировать это поведение для старой (R2007b) функции?

2 - в MATLAB R2009b я могу использовать WAIT после использования IMRECT следующим образом:

h = imrect(axhandle);
wait(h);

это позволяет подождать, пока пользователь правильно разместит свой прямоугольник, и дважды щелкнет, чтобы подтвердить выбор. Есть ли что-нибудь аналогичное, что можно использовать с IMRECT от R2007b?

1 Ответ

1 голос
/ 25 февраля 2010

К сожалению, для обеих функций требуется обходной путь.

Вот один из способов сделать это:

%# 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, я предлагаю оставить диалоговое окно для всех, чтобы они не запутались при переключении.

...