Во-первых, вам нужно убедиться, что вы подавили любой вывод в командное окно. Вы можете сделать это, убедившись, что в конце строк стоит точка точка с запятой , избегайте использования функции DISP для отображения данных и избегайте использования функции FPRINTF для отправки данных на стандартный вывод (т. е. командное окно).
Во-вторых, определите, какие «результаты» вы хотите отобразить. Если это вектор или матрица числовых значений, вы можете использовать объект UITABLE вместо статического текстового поля (как это предлагается в ответ Азима на ваш другой вопрос , и предполагая, что у вас есть одна из более новых версий MATLAB). Если это просто пара числовых значений, символов или строк, то я бы предложил использовать статическое текстовое поле. Например:
hList = uicontrol('Style','text','Position',[100 100 200 200]);
set(hList,'String',{'Line 1'; 'Line 2'}); % Displays 2 lines, one string each
vec = rand(3,1); % Column array of 3 random values
set(hList,'String',num2str(vec)); % Displays 3 lines, one number per line
С этой опцией вы, вероятно, в конечном итоге будете много делать с строковыми операциями .
ПРИМЕЧАНИЕ: Если в текстовые поля добавлено больше текста, чем они могут отобразить, они просто обрезают текст. Они не создают автоматически ползунки для просмотра всего текста. Вам придется либо увеличить статическое текстовое поле, настроить свойство "FontSize" статического текстового поля на меньшее значение, либо (более сложный вариант) создать собственный ползунок, который будет регулировать то, что отображается в текстовом поле.
РЕДАКТИРОВАТЬ: более сложный вариант ...
На случай, если кому-то будет интересно, я подумал, что я бы включил пример кода для создания статического текстового поля со слайдером, который управляет содержимым, отображаемым в текстовом поле. Есть довольно много разных способов сделать это, начиная от самой простой реализации, которую я могу себе представить (приведенной ниже), до более сложных версий, использующих вложенные функции и причудливые ООП .
Во-первых, вам нужно сохранить две следующие функции в виде m-файлов:
callback_scrolltext.m
function callback_scrolltext(source,event,hText)
textString = get(hText,'UserData');
nLines = numel(textString);
lineIndex = nLines-round(get(source,'Value'));
set(hText,'String',textString(lineIndex:nLines));
end
update_scrolltext.m
function update_scrolltext(newText,hText,hSlider)
newText = textwrap(hText,newText);
set(hText,'String',newText,'UserData',newText);
nRows = numel(newText);
if (nRows < 2),
sliderEnable = 'off';
else
sliderEnable = 'on';
end
nRows = max(nRows-1,1);
set(hSlider,'Enable',sliderEnable,'Max',nRows,...
'SliderStep',[1 3]./nRows,'Value',nRows);
end
Во-вторых, создайте объекты GUI с помощью следующего кода. Вы можете установить для свойств «Положение» любое значение, а также использовать любой дескриптор для объекта фигуры или панели вместо hParent :
hParent = figure;
hText = uicontrol('Style','text',...
'Parent',hParent,...
'Units','pixels',...
'Position',[100 100 100 40]);
hSlider = uicontrol('Style','slider',...
'Parent',hParent,...
'Units','pixels',...
'Position',[200 100 10 40],...
'Enable','off',...
'Callback',{@callback_scrolltext,hText});
Наконец, каждый раз, когда вы хотите изменить текст текстового поля, вызывайте update_scrolltext с текстом, который вы хотите отобразить (содержится в массиве ячеек так же, как строка ввода для TEXTWRAP есть) и ручки текстового поля и ползунка. Вот несколько примеров, чтобы попробовать:
update_scrolltext({'hello'},hText,hSlider);
update_scrolltext({'hello'; 'there'; 'silly'; 'world'},hText,hSlider);
Измените код так, как считаете нужным и наслаждайтесь! =) * +1061 *