Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Моделирование измерительных задач в среде MATLAB + Simulink. Учебное пособие
.pdf
ПРИМЕРЫ РАЗРАБОТКИ ПРИЛОЖЕНИЙ В MATLAB + SIMULINK
Рис. 32. Настройки параметров интерфейса, объект pushbutton
Для ввода текста необходимо использовать пункт String. Для
полей, в которые предполагается вносить числовые данные, не
-
обходимо определить имя переменой (рис. 33).
Далее в текст программы добавляются элементы программ
ного кода, включающие в себя необходимые вычисления. Для
этого правую кнопку мыши нажимаем на кнопке «Расчет» и
выбираем Callback – задание функции вызова. При этом откры
вается текст m-файла, в который уже внесена автоматически
информация по всем объектам. Последние строки содержат ин
формацию по созданию функции вызова, которая будет запускаться при нажатии на кнопку «Расчет».
81

МОДУЛЬ 2
Рис. 33. Настройки параметров интерфейса, объект text
Текст программы:
function varargout = data1(varargin)
% DATA1 M-le for data1.g
% DATA1, by itself, creates a new DATA1 or raises the existing
% singleton*.
%
% H = DATA1 returns the handle to a new DATA1 or the handle to
% the existing singleton*.
%
% DATA1(‘CALLBACK’,hObject,eventData,handles,...) calls the local
% function named CALLBACK in DATA1.M with the given input
arguments.
%
% DATA1(‘Property’,’Value’,...) creates a new DATA1 or raises the
% existing singleton*. Starting from the left, property value pairs are
82

ПРИМЕРЫ РАЗРАБОТКИ ПРИЛОЖЕНИЙ В MATLAB + SIMULINK
% applied to the GUI before data1_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to data1_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose «GUI allows
only one
% instance to run (singleton)».
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help data1
% Last Modied by GUIDE v2.5 19-Oct-2007 19:05:39
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mlename, ...
‘gui_Singleton’, gui_Singleton, ...
‘gui_OpeningFcn’, @data1_OpeningFcn, ...
‘gui_OutputFcn’, @data1_OutputFcn, ...
‘gui_LayoutFcn’, [] , ...
‘gui_Callback’, []);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before data1 is made visible.
function data1_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to gure
% eventdata reserved - to be dened in a future version of MATLAB
% handles structure with handles and user data1 (see GUIDATA)
% varargin command line arguments to data1 (see VARARGIN)
83

МОДУЛЬ 2
% Choose default command line output for data1
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes data1 wait for user response (see UIRESUME)
% uiwait(handles.gure1);
% --- Outputs from this function are returned to the command line.
function varargout = data1_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to gure
% eventdata reserved - to be dened in a future version of MATLAB
% handles structure with handles and user data1 (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function R_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundC
olor’));
end
function R_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles structure with handles and user data1 (see GUIDATA)
% Hints: get(hObject,’String’) returns contents of edit1 as text
% str2double(get(hObject,’String’)) returns contents of edit1 as a
double
% --- Executes during object creation, after setting all properties.
function L_CreateFcn(hObject, eventdata, handles)
84

ПРИМЕРЫ РАЗРАБОТКИ ПРИЛОЖЕНИЙ В MATLAB + SIMULINK
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundC
olor’));
end
function L_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles structure with handles and user data1 (see GUIDATA)
% Hints: get(hObject,’String’) returns contents of edit2 as text
% str2double(get(hObject,’String’)) returns contents of edit2 as a
double
% --- Executes during object creation, after setting all properties.
function C_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundC
olor’));
end
function C_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
85

МОДУЛЬ 2
% handles structure with handles and user data1 (see GUIDATA)
% Hints: get(hObject,’String’) returns contents of edit3 as text
% str2double(get(hObject,’String’)) returns contents of edit3 as a
double
% --- Executes during object creation, after setting all properties.
function C0_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,’BackgroundColor’,’white’);
else
set(hObject,’BackgroundColor’,get(0,’defaultUicontrolBackgroundC
olor’));
end
function C0_Callback(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles structure with handles and user data1 (see GUIDATA)
% Hints: get(hObject,’String’) returns contents of edit4 as text
% str2double(get(hObject,’String’)) returns contents of edit4 as a
double
% --- Executes during object creation, after setting all properties.
% --- Executes during object creation, after setting all properties.
function wr1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit11 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% --- Executes during object creation, after setting all properties.
function wa1_CreateFcn(hObject, eventdata, handles)
% hObject handle to text19 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
86

ПРИМЕРЫ РАЗРАБОТКИ ПРИЛОЖЕНИЙ В MATLAB + SIMULINK
% handles empty - handles not created until after all CreateFcns
called
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles structure with handles and user data1 (see GUIDATA)
global R L C C0
R=str2double(get(handles.R,’String’)); % считывание значения из
поля с именем R
и присвоение переменной R числового значения
L=str2double(get(handles.L,’String’)); % считывание значения из
поля с именем L
и присвоение переменной L числового значения
L=L*1e-3;
C=str2double(get(handles.C,’String’)); % считывание значения из
поля с именем C и присвоение переменной C числового значения
C=C*1e-9;
C0=str2double(get(handles.C0,’String’)); % считывание значения
из поля с
именем C0 и присвоение переменной C0 числового значения
C0=C0*1e-9;
% Расчет теоретических значений частот резонанса и антирезо
нанса
wr=(1/(L*C))^0.5;
wa=(1/L*(1/C+1/C0))^0.5;
N=500; % число точек построения графика зависимости модуля
проводимости от частоты
www = 0.9*wr:(1.2*wa-0.8*wr)/N:1.1*wa; % Задание интервала ча
стот построения графика
YY=Yw(www); % расчет значений модуля проводимости в задан
ном интервале
с помощью внешней функции Yw
% Поиск частот резонанса и антирезонанса, как максимума и
минимума на
% графике зависимости модуля проводимости от частоты
-
-
-
87

МОДУЛЬ 2
wr1=fminsearch(@mYw,0.9*wr);
wa1=fminsearch(@Yw,1.1*wa);
plot(www,YY) % Рисование графика
axis tight
% Вывод рассчитанных значений частот резонанса и антирезо
-
нанса в
% соответствующие поля
set(handles.wr1,’String’, wr1);
set(handles.wa1,’String’, wa1);
Для получения числовых переменных величины, считывае
мые из полей ввода, необходимо преобразовать из переменных
типа string в переменные типа double, учтя при этом размер
ность величин, вводимых в программу. Далее рассчитываем
теоретические значения частот резонанса и антирезонанса по
приведенным выше формулам и задаем интервал частот, в ко
торых будем осуществлять расчет и построение графика функции зависимости модуля проводимости от частоты. Для расчета
модуля проводимости используем дополнительную функцию,
оформленную в виде отдельного m-файла:
function res = Yw(w)
global R L C C0
G = R./(R^2+(w.*L-1./(w.*C)).^2);
B = w.*C0-(w.*L-1./(w.*C))./(R^2+(w.*L-1./(w.*C)).^2);
res=(G.^2+B.^2).^0.5;
Поиск частот резонанса и антирезонанса по графику моду
ля проводимости осуществляется как поиск минимума модуля
проводимости для антирезонанса и минимума, взятого с отри
цательным знаком, модуля проводимости для резонанса (значение переменной res взято с противоположным знаком). В данном примере для этих целей использована стандартная функция fminsearch.
Рассчитанные значения частот резонанса и антирезонанса
помещаются в соответствующие поля с помощью команды set.
Запуск программы осуществляется нажатием кнопки ►.
Результат работы программы приведен на рис. 34.
88

ПРИМЕРЫ РАЗРАБОТКИ ПРИЛОЖЕНИЙ В MATLAB + SIMULINK
Рис. 34. Результат работы программы (пример 1)
Пример 2. Определение добротности по частотной характе-
ристике модуля проводимости в области резонанса. Создадим
интерфейс для реализации данной задачи.
В окне программы необходимо выделить три области:
– область задания параметров элементов электрической
схемы;
– область отображения результатов расчета (заполняется по
-
сле нажатия на кнопку «Расчет»);
– область отображения графика частотной зависимости мо
-
дуля проводимости.
Результат работы программы показан на рис. 35.
Рис. 35. Результат работы программы (пример 2)
89

МОДУЛЬ 2
Частота резонанса определяется по максимуму модуля проводимости. Далее определяется уровень 0,7 от значения максимума и вычисляется диапазон частот на этом уровне. Добротность контура определяется по вышеприведенным формулам.
Приведем, как и в предыдущих примерах, текст программ
ного кода, необходимого для реализации решаемой задачи и
включенного в функцию Callback для кнопки «Расчет»:
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be dened in a future version of MATLAB
% handles structure with handles and user data3 (see GUIDATA)
global R L C C0 Ymax
R=str2double(get(handles.R,’String’));
L=str2double(get(handles.L,’String’));
L=L*1e-3;
C=str2double(get(handles.C,’String’));
C=C*1e-9;
C0=str2double(get(handles.C0,’String’));
C0=C0*1e-9;
wr=(1/(L*C))^0.5;
N=500;
www = 0.8*wr:0.4*wr/N:1.2*wr;
YY=Yw(www);
wr1=fminsearch(@mYw,0.8*wr);
Ymax=Yw(wr1);
plot(www,YY)
hold on
axis tight
a=0.8*wr;
b=1.2*wr;
dx=0.4*wr/100;
nroots = 0;
while 1
[x1,x2] = rootsearch(@Ywmax,a,b,dx);
if isnan(x1)
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
