Рис.1.67. Создание простейшего интерфейса и функций, исполняемых по нажатиям на кнопки

Интерфейс создадим с помощью команды guide, введя ее в командном окне. Выберем в открывшемся окне создание нового интерфейса. Построим его, как показано ниже.

Затем подготовим функции для ввода данных, для вычисления значений и для вывода вычисленных значений на экран.

Соответственно, нам понадобятся три разные функции. Их описания разместим выше чем описание действий, выполняемых по нажатию на кнопку.

Для ввода данных опишем функцию VvodArg, она возвращает вектор аргументов.

function[VectorArg]=VvodArg(hObject, eventdata, handles)

x=str2double(get(handles.edit1,'String'));

y=str2double(get(handles.edit2,'String'));

z=str2double(get(handles.edit3,'String'));

VectorArg=[x, y, z];

При выполнении функции происходит при помощи функции str2double преобразование строки считанных из окна интерфейса символов в число. Строку символов она получает от функции get, непосредственно осуществляющей считывание из окна интерфейса. Ее аргумент handles.edit1 это окно интерфейса, которое называется Edit1, это название можно увидеть если правой кнопкой мышки открыть, щелкнув на этом окне, его редактор свойств и поискать там переменную Tag. Второй аргумент функции get называется String, его можно увидеть также в редакторе свойств. Рядом с ним в редакторе свойств указано его значение. По умолчанию там стоит Text Edit 1, но при создании интерфейса оно было удалено нами, чтобы в окне не было этой ненужной надписи. После того, как пользователь впишет в окно новое число (значение исходной переменной), то переменная String будет содержать строку этих символов или один символ.

Введенные значения переменных помещаются затем в вектор аргументов. Он и будет возвращаемым значением функции.

Для вычисления новых значений опишем функцию ReshitZadachu.

function[VectorRes]=ReshitZadachu(VectorArg)

x=VectorArg(1);

y=VectorArg(2);

z=VectorArg(3);

f1=x^2+y+z;

f2=x+y^2+z;

 f3=x+y+z^2;

VectorRes=[f1, f2, f3];

Она получает как аргумент вектор аргументов и возвращает вектор результатов.

При выполнении функции, вычисляются новые значения и затем они помещаются в вектор результатов, который и будет возвращаемым значением функции.

Для вывода результатов на экран, опишем функцию VivodRes.

function[]=VivodRes(VectorRes,hObject, eventdata, handles)

f1=VectorRes(1);

f2=VectorRes(2);

f3=VectorRes(3);

S=sprintf('%g',f1);

set(handles.edit4,'String',S);

S=sprintf('%g',f2);

set(handles.edit5,'String',S);

S=sprintf('%g',f3);

set(handles.edit6,'String',S);

Она получает среди прочих (связанных с интерфейсом) аргументов вектор результатов вычислений. Функция VivodRes обеспечивает вывод в окно интерфейса с помощью функции set, которой в качестве аргументов передаются handles.edit4, означающий элемент интерфейса—окно вывода edit4, куда в принадлежащую этому окну переменную String, указанную как второй аргумент, будет помещена строка символов, содержащаяся в третьем аргументе—переменной S.

В свою очередь, переменная S получила эту строку символов в качестве возвращаемого значения функции sprintf. А этой функции были переданы аргументы, указывающие что необходимо из переменной f1 получить строку символов, первоначально являвшуюся числом (на это указывает аргумент ‘%g’).

Теперь, когда описаны все необходимые функции, приступим к описанию действий, происходящих после нажатия на кнопку. Эта кнопка имеет название (Tag) которое можно прочитать в ее инспекторе свойств правой кнопкой мышки. Это название pushbutton1. Соответственно, в файле, наряду с описаниями всех прочих элементов интерфейса, автоматически сгенерирован и абзац текста, озаглавленный function pushbutton1_Callback.

% --- Executes on button press in pushbutton1. CALCULATE

function pushbutton1_Callback(hObject, eventdata, handles)

 [VectorArg]=VvodArg(hObject, eventdata, handles);

[VectorRes]=ReshitZadachu(VectorArg);

VivodRes(VectorRes,hObject, eventdata, handles);

Запишем туда вызовы функций, которые последовательно обеспечат ввод данных, вычисление результатов и вывод их на экран.

Пример 2. Рассмотрим задачу о вводе матрицы и сохранении ее в файл. Начнем с создания интерфейса, изображенного на Рис.1.68.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: