Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример оформления.docx
Скачиваний:
8
Добавлен:
15.07.2019
Размер:
652.34 Кб
Скачать

Приложение: Текст разработанной программы

function varargout = mygui_v11_2(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @mygui_v11_2_OpeningFcn, ...

'gui_OutputFcn', @mygui_v11_2_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(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

function mygui_v11_2_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

function varargout = mygui_v11_2_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

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

% кнопка открыть файл

function pushbutton1_Callback(hObject, eventdata, handles)

filepath=uigetfile({'*.txt','Файл с сигналом (*.txt)'},'Выбор сигнала','Сигнал_11_2.txt');

handles.signal=load(filepath);

handles.signal=handles.signal-mean(handles.signal);

handles.fd=4;

handles.t=120;

if exist('handles.scale','var')==0

handles.scale='linear';

end

if exist('handles.segsize','var')==0

handles.segsize=100;

end

drawsignal(handles.signal,handles.axes1,handles);

drawspm(handles.signal,handles.axes2,handles);

drawakf(handles.signal,handles.axes3,handles);

set(handles.uipanel4,'visible','on');

guidata(hObject, handles);

% кнопка фильтровать

function pushbutton2_Callback(hObject, eventdata, handles)

load('filter_coef_ss_v11_2.mat');

handles.filteredsignal=filter(Num,Den,handles.signal);

drawsignal(handles.filteredsignal,handles.axes4,handles);

drawspm(handles.filteredsignal,handles.axes5,handles);

drawakf(handles.filteredsignal,handles.axes6,handles);

guidata(hObject, handles);

% вывод вср

function drawsignal(signal,axe,handles)

tt=0:1/handles.fd:(length(signal)/handles.fd-1/handles.fd);

axes(axe);

plot(tt,signal);

grid on;

set(axe,'XLim',[0 handles.t],'YLimMode','auto');

% вывод акф

function drawakf(signal,axe,handles)

akf=xcorr(signal,round(length(signal)/2),'coeff');

tmax=length(akf)/handles.fd;

lt=(-tmax+1/handles.fd)/2;

rt=(tmax-1/handles.fd)/2;

tt=lt:1/handles.fd:rt;

axes(axe);

plot(tt,akf);

grid on;

set(axe,'YLim',[-1 +1],'XLim',[lt rt]);

% вывод спм

function drawspm(signal,axe,handles)

[spm,f]=pwelch(signal,handles.segsize,80,2048);

axes(axe);

plot(f,spm);

grid on;

set(axe,'YScale',handles.scale);

set(axe,'XLim',[0 max(f)],'YLimMode','auto');

% переключатель масштаба

function uipanel2_SelectionChangeFcn(hObject, eventdata, handles)

selection=get(hObject,'Tag');

switch selection

case 'rblin'

handles.scale='linear';

set(handles.axes2,'YScale','linear');

set(handles.axes5,'YScale','linear');

case 'rblog'

handles.scale='log';

set(handles.axes2,'YScale','log');

set(handles.axes5,'YScale','log');

end

guidata(hObject,handles);

% переключатель размера сегмента

function uipanel6_SelectionChangeFcn(hObject, eventdata, handles)

handles.segsize=get(hObject,'UserData');

drawspm(handles.signal,handles.axes2,handles);

if isempty(handles.filteredsignal) || ~exist('handles.filteredsignal','var')

drawspm(handles.filteredsignal,handles.axes5,handles);

end

guidata(hObject,handles);