Графический пользовательский интерфейс. Создание стандартного графического окна со свойствами по умолчанию, страница 2

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

global  hf ha1 ha2 ha3 he1 he2 he3

%Создание окна интерфейса и окон графиков

hf=figure('units','pixels','Position',[0,0,800,500])

ha1=axes('units','pixels','Position',[20,20,350,250])

ha2=axes('units','pixels','Position',[420,20,350,250])

Вставка рисунка демпфера

ha3=axes('units','pixels',...

'Position',[500,300,256,192])

 tx=imread('ris2.bmp','bmp');image(tx);

   col=get(hf,'Color')

   set(ha3,'XColor',col)

   set(ha3,'YColor',col)

Создание кнопки

 hbt1=uicontrol(hf,'Style','pushbutton',...

    'Position',[350,300,100,50],…

'String','Расчет', 'Callback','C_B1')

Исходные данные

uicontrol(hf,'Style','text',...

    'Position',[100,450,200,30],'String',...

    'Исходные данные')

uicontrol(hf,'Style','text',...

    'Position',[50,400,100,30],'String',...

    'Масса поршня')

he1=uicontrol(hf,'Style','edit',...

    'Position',[200,400,100,30])

Описание файла C_B1.m

global   hf ha1 ha2 ha3 he1 he2 he3

% Ввод исходных данных

m=str2num(get(he1,'string'))

c=str2num(get(he2,'string'));

H=str2num(get(he3,'string'));

D1=0.1; d=0.01; z=25; mu=6e-2;

p=sqrt(c/m);

n=4*pi*mu*H/(m*z)*(D1/d)^4;

% Задание начальных условий

y0=[0.05 0];

% Решение дифференциального уравнения

[T,Y] = ode45 (@vid2,[0 1],y0,[ ],p,n);

% Графики функций перемещения и скорости демпфера

axes ( ha1)

                                   cla

                                   plot (T,Y( :,1))

                                   grid on

                                   axes ( ha2)

                                   cla

                                   plot ( T,Y( :,2))

                                   grid on

vid2 – файл, описывающий вид системы ОДУ модели:

function ur2=vid2(t,y,p,n);

ur2=zeros(2,1);

ur2(1)=y(2);

ur2(2)=-2*n*y(2)-p^2*y(1);

Передача параметров n и p происходит через аппарат формальных- фактических параметров:

[T,Y] = ode45 (@vid2,[0 1],y0,[ ],p,n);

function ur2=vid2(t,y,p,n);

Для проведения исследований по модели можно использовать слайдер

Тогда в основную программу нужно добавить его описание

hs1=uicontrol(hf,'Style','slider',...

    'Position',[300,400,100,30],…

            'Callback', 'C_B1', 'Max',10)

l  В программу обработки события вставляется фрагмент

set(he1,'string',num2str(get(hs1,'value')));

m=get(hs1,'value')

l  Дескриптор слайдера описывается как глобальный

l  Расширение возможностей графического пользовательского интерфейса реализуется с помощью диалоговых окон Matlab.

l  Окна создаются специальными стандартными функциями и отличаются от окна figure отсутствием меню, панели инструментов, неизменяемыми размерами и т.д.

l  В Matlab существует 14 видов диалоговых окон.

l  При открытии окна с помощью конструктора может создаваться дескриптор окна, который затем может использоваться в программе.

l  Параметры конструктора аналогичны параметрам объектов дескрипторной графики

Диалоговое окно общего назначения

hd=dialog

hd=dialog('color',[1 0 0])

hd=dialog('color',[1 0 0],'Resize','off')

Диалоговое окно с сообщением об ошибке

hd= errordlg

hd= errordlg(‘Деление на 0',...

'Сообщение об ошибке‘)

if m>10, errordlg('масса введена неверно',...

'Сообщение об ошибке','on')

end

Диалоговое окно справочной информации

hd=helpdlg

helpdlg('По умолчанию h=235', 'Помощь')

Диалоговое окно для ввода строк

res=inputdlg({'X=','Y=','Z='},...

    'Задайте координаты точки')

Диалоговое окно выбора из списка

d=dir

str={d.name}

[ind,ok]=listdlg('ListString',str,...

    'PromptString','Выбор файла',…

'SelectionMode','singl')

Диалоговое окно с сообщением

gf=imread('catmiss0.jpg','jpg');

image(gf)

msgbox('я поймал мышь','кот')

Диалоговое окно с запросом

a=questdlg('Продолжить?','Сделайте выбор')

Диалоговое окно выбора файла для чтения

[fn,fp]=uigetfile('*.* ‘ , 'Выбор файла')

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

Диалоговое окно выбора цвета

col=uisetcolor([1 0 0],… 'Выбор цвета')

Диалоговое окно полосы прогресса

hwb=waitbar(0,'Пожалуйста, ждите');

for i=1:10000,waitbar(i/10000,hwb),end

•  Создадим модель с проведением серии экспериментов по модели.

•  Выберем в качестве варьируемого параметра m –масса поршня

% Задание начальных условий

y0=[0.05 0]; M=[2.73,3,4,5];

for i=1:length(M),

m=M(i); 

% Решение дифференциального уравнения

diap=0:0.01:1

[T,Y]=ode45(@vid2,diap,y0,[],m);

R(:,i)=Y(:,1);

end

% Графики функций перемещения и скорости демпфера

figure(1)

plot(T,R(:,1:length(M)))

MR=min(R);

figure(2)

plot(M,MR)