Для того, чтобы дескрипторы графических объектов были известны вызываемым функциям, они должны быть объявлены как глобальные в основной программе и в вызываемых функциях, если дескрипторы в них используются.
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 Параметры конструктора аналогичны параметрам объектов дескрипторной графики
l Диалоговое окно общего назначения
hd=dialog
hd=dialog('color',[1 0 0])
hd=dialog('color',[1 0 0],'Resize','off')
l Диалоговое окно с сообщением об ошибке
hd= errordlg
hd= errordlg(‘Деление на 0',...
'Сообщение об ошибке‘)
if m>10, errordlg('масса введена неверно',...
'Сообщение об ошибке','on')
end
l Диалоговое окно справочной информации
hd=helpdlg
helpdlg('По умолчанию h=235', 'Помощь')
Диалоговое окно для ввода строк
res=inputdlg({'X=','Y=','Z='},...
'Задайте координаты точки')
Диалоговое окно выбора из списка
d=dir
str={d.name}
[ind,ok]=listdlg('ListString',str,...
'PromptString','Выбор файла',…
'SelectionMode','singl')
l Диалоговое окно с сообщением
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)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.