АкушерствоАнатомияАнестезиологияВакцинопрофилактикаВалеологияВетеринарияГигиенаЗаболеванияИммунологияКардиологияНеврологияНефрологияОнкологияОториноларингологияОфтальмологияПаразитологияПедиатрияПервая помощьПсихиатрияПульмонологияРеанимацияРевматологияСтоматологияТерапияТоксикологияТравматологияУрологияФармакологияФармацевтикаФизиотерапияФтизиатрияХирургияЭндокринологияЭпидемиология

Global hTxt1,hTxt2,hTxt3,hTxt4,hTxt5,hTxt6,hTxt7

Прочитайте:
  1. Global hAxes hEd1 hEd2 hEd3 hEd4 hList

%-----------------------------------------------

hFig1 = figure

hAxes = axes('Parent',hFig1,'Color', [ 1 1 1],'Units',...

'points', 'Position', [ 20 60 230 230 ],'FontSize', 10);

%-----------------------------------------------

hEd1 = uicontrol(hFig1,'Style','edit','BackgroundColor',[1 1 1],...

'Position',[435 400 190 30],'HorizontalAlignment','left');

hEd2 = uicontrol(hFig1,'Style','edit','BackgroundColor',[1 1 1],...

'Position',[435 320 190 30],'HorizontalAlignment','left');

hEd3 = uicontrol(hFig1,'Style','edit','BackgroundColor',[1 1 1],...

'Position',[435 230 190 30],'HorizontalAlignment','left');

hEd4 = uicontrol(hFig1,'Style','edit','BackgroundColor',[1 1 1],...

'Position',[435 150 190 30],'HorizontalAlignment','left')

hList = uicontrol(hFig1,'Style','listbox','Position',[485 15 140 90],...

'String',{'sin','cos','MyFunct1','MyFunct2','f3' },...

'HorizontalAlignment', 'left');

hBut1 = uicontrol(hFig1,'Style','pushbutton','Position',[60 25 140 40],...

'String', 'GO');

hBut2 = uicontrol(hFig1,'Style','pushbutton','Position',[240 25 140 40],...

'String', 'CLEAR')

hTxt1 = uicontrol(hFig1,'Style','text','BackgroundColor',[0.7 0.7 0.7],...

'Position', [90 475 240 20],'String','Euler solution');

hTxt2 = uicontrol(hFig1,'Style','text','BackgroundColor',[0.7 0.7 0.7],...

'Position', [435 440 60 20],'String','X initial');

hTxt3 = uicontrol(hFig1,'Style','text','BackgroundColor',[0.7 0.7 0.7],...

'Position', [435 360 60 20],'String','Y initial');

hTxt4 = uicontrol(hFig1,'Style','text','BackgroundColor',[0.7 0.7 0.7],...

'Position', [435 260 60 20],'String','X final');

hTxt5 = uicontrol(hFig1,'Style','text','BackgroundColor',[0.7 0.7 0.7],...

'Position', [435 180 60 20],'String','N');

hTxt6 = uicontrol(hFig1,'Style','text','BackgroundColor',[0 0 0],...

'Position', [430 5 1 900]);

hTxt7 = uicontrol(hFig1,'Style','text','BackgroundColor',[0.7 0.7 0.7],...

'Position', [435 140 240 20],'String','Choose function');

В результате получается вот такое графическое окно:

Это окно предназначено для численного решения дифференциального уравнения

y'(x) = F(x); Xinitial < x < X final; Yinitial = y(Xinitial);

где функция F(x) выбирается из списка, расположенного в правом нижнем углу графического окна. Остальные параметры задаются с клавиатуры в редактируемых полях. Кнопка GO предназначена для начала расчётов по методу Эйлера и показа результата в виде графика на поверхности объекта Axes. Кнопка CLEAR позволяет очистить объект Axes от содержимого.

Как мы видим из рисунка предусмотрены расчёты со стандартными функциями sin(x) и cos(x), а также с собственными функциями MyFunct1(x), MyFunct2(x) и f3(x). Последние должны быть записаны в M-файлы MyFunct1.m, MyFunct2.m, f3.m.

Число N, которое вводится перед расчётами с клавиатуры, определяет шаг интегрирования, который равен

(Xfinal - Xinitial) / N.

Чтобы запустить программы пасчётов, нужно не только записать алгоритм решения на M-языке и сохранить текст в M-файле, но и связать эти программы с командными кнопками.


#$+Callback функции.

Функции, которые связывают с графическими элементами управления, называют callback-функциями (их не вызывают наши M-функции; они вызываются средой MATLAB у нас "за спиной", отсюда и происхождение их названия).

Чтобы связать наши кнопки с callback-функциями, которые будут вызываться средой MATLAB при "нажатии" на эти кнопки, при создании кнопок функцией uicontrol нужно прописать свойство 'Callback', указав ему в качестве значения имя M-функции. Это значит, что в ранее представленном файле сценария Proj1Script.m нужно изменить строки, касающиеся создания кнопок. Вот этот изменённый код, позволяющий связать кнопки с их callback-функциями:

hBut1 = uicontrol(hFig1,'Style','pushbutton','Position', …

[60 25 140 40],'String', 'GO','Callback','MyGO');

hBut2 = uicontrol(hFig1,'Style','pushbutton','Position', …

[240 25 140 40],'String', 'CLEAR','Callback','MyCLEAR');

Если функция, которая будет вызываться при нажати на кнопку GO будет записана в файле MyGO.m, то в качестве значения свойства 'Callback' обязательно нужно написать значение в виде 'MyGO', и нельзя писать 'MyGO.m' (возникнет ошибочная ситуация).

Поправив файл Proj1Script.m, перейдём теперь к написанию функций MyGO и MyCLEAR. Начнём с более простой функции MyCLEAR. Вот текст этой функции:


Дата добавления: 2015-01-18 | Просмотры: 639 | Нарушение авторских прав



1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |



При использовании материала ссылка на сайт medlec.org обязательна! (0.004 сек.)