Скачиваний:
95
Добавлен:
01.05.2014
Размер:
1.29 Mб
Скачать

4.3. Исследование спектра сигналов, ограниченных во времени

4.3.1. Теоретические сведения:

Сигнал: x(n) = sin(2πfnT), T = 1/fд

f– частота,fд– частота дискретизации

Программа выполнена с помощью GUIDE(GUI Builder) – конструктора графического интерфейсаMatlab.

4.3.2. Графический интерфейс:

4.3.3. Текст программы:

function varargout = fig_2(varargin)

% FIG_2 M-file for fig_2.fig

% FIG_2, by itself, creates a new FIG_2 or raises the existing

% singleton*.

%

% H = FIG_2 returns the handle to a new FIG_2 or the handle to

% the existing singleton*.

%

% FIG_2('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in FIG_2.M with the given input arguments.

%

% FIG_2('Property','Value',...) creates a new FIG_2 or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before fig_2_OpeningFunction gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to fig_2_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

% Copyright 2002-2003 The MathWorks, Inc.

% Edit the above text to modify the response to help fig_2

% Last Modified by GUIDE v2.5 24-Apr-2006 23:31:09

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

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

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @fig_2_OpeningFcn, ...

'gui_OutputFcn', @fig_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

% End initialization code - DO NOT EDIT

% --- Executes just before fig_2 is made visible.

function fig_2_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to fig_2 (see VARARGIN)

% Choose default command line output for fig_2

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% This sets up the initial plot - only do when we are invisible

% so window can get raised using fig_2.

if strcmp(get(hObject,'Visible'),'off')

genSIN_1(handles);

end

% UIWAIT makes fig_2 wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = fig_2_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

genSIN_1(handles);

%popup_sel_index = 1;%get(handles.popupmenu1, 'Value');

%switch popup_sel_index

% case 1

% plot(rand(5));

% case 2

% plot(sin(1:0.01:25.99));

% case 3

% bar(1:.5:10);

% case 4

% plot(membrane);

% case 5

% surf(peaks);

%end

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

function FileMenu_Callback(hObject, eventdata, handles)

% hObject handle to FileMenu (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

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

function OpenMenuItem_Callback(hObject, eventdata, handles)

% hObject handle to OpenMenuItem (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

file = uigetfile('*.fig');

if ~isequal(file, 0)

open(file);

end

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

function PrintMenuItem_Callback(hObject, eventdata, handles)

% hObject handle to PrintMenuItem (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

printdlg(handles.figure1)

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

function CloseMenuItem_Callback(hObject, eventdata, handles)

% hObject handle to CloseMenuItem (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

selection = questdlg(['Close ' get(handles.figure1,'Name') '?'],...

['Close ' get(handles.figure1,'Name') '...'],...

'Yes','No','Yes');

if strcmp(selection,'No')

return;

end

delete(handles.figure1)

% --- Executes on selection change in popupmenu1.

function popupmenu1_Callback(hObject, eventdata, handles)

% hObject handle to popupmenu1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array

% contents{get(hObject,'Value')} returns selected item from popupmenu1

% --- Executes during object creation, after setting all properties.

function popupmenu1_CreateFcn(hObject, eventdata, handles)

% hObject handle to popupmenu1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc

set(hObject,'BackgroundColor','white');

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

%set(hObject, 'String', {'plot(rand(5))', 'plot(sin(1:0.01:25))', 'bar(1:.5:10)', 'plot(membrane)', 'surf(peaks)'});

function edit2_Callback(hObject, eventdata, handles)

% hObject handle to edit2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (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 edit2_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit2 (see GCBO)

% eventdata reserved - to be defined 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 && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% --- Executes on button press in pushbutton4.

function pushbutton4_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

function edit3_Callback(hObject, eventdata, handles)

% hObject handle to edit3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (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 edit3_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit3 (see GCBO)

% eventdata reserved - to be defined 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 && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit4_Callback(hObject, eventdata, handles)

% hObject handle to edit4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (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.

function edit4_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit4 (see GCBO)

% eventdata reserved - to be defined 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 && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% unsere

function genSIN_1(handles)

FREQstr = get(handles.edit2, 'String');

FREQnum = str2num(FREQstr);

FREQSstr = get(handles.edit3, 'String');

FREQSnum = str2num(FREQSstr);

TMAXstr = get(handles.edit4, 'String');

TMAXnum = str2num(TMAXstr);

STEP = TMAXnum/FREQSnum;

T = 0:STEP:TMAXnum;

SIGSIN = sin(2*pi*FREQnum*T);

axes(handles.axes1);

cla;

plot(T, SIGSIN);

NWINDOWstr = get(handles.edit6, 'String');

NWINDOWnum = str2num(NWINDOWstr);

WINDOWindex = get(handles.popupmenu2, 'Value');

switch WINDOWindex

case 1

WNDW = window(@rectwin, NWINDOWnum);

case 2

WNDW = window(@triang, NWINDOWnum);

case 3

WNDW = window(@hann, NWINDOWnum);

case 4

WNDW = window(@hamming, NWINDOWnum);

case 5

WNDW = window(@blackmanharris, NWINDOWnum);

end

if(length(WNDW)>length(SIGSIN))

KMAX = length(SIGSIN);

else

KMAX = length(WNDW);

end

SIGSIN1(1:KMAX) = SIGSIN(1:KMAX).*WNDW(1:KMAX)';

NFFTstr = get(handles.edit5, 'String');

NFFTnum = str2num(NFFTstr);

POWERS = fft(SIGSIN1, NFFTnum);

POWERSPECTR = POWERS.*conj(POWERS);

axes(handles.axes3);

cla;

%plot((1:20), POWERSPECTR(1:20));

plot(POWERSPECTR(1:50));

function edit5_Callback(hObject, eventdata, handles)

% hObject handle to edit5 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit5 as text

% str2double(get(hObject,'String')) returns contents of edit5 as a double

% --- Executes during object creation, after setting all properties.

function edit5_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit5 (see GCBO)

% eventdata reserved - to be defined 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 && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% --- Executes on selection change in listbox1.

function listbox1_Callback(hObject, eventdata, handles)

% hObject handle to listbox1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns listbox1 contents as cell array

% contents{get(hObject,'Value')} returns selected item from listbox1

% --- Executes during object creation, after setting all properties.

function listbox1_CreateFcn(hObject, eventdata, handles)

% hObject handle to listbox1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: listbox controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% --- Executes on selection change in popupmenu2.

function popupmenu2_Callback(hObject, eventdata, handles)

% hObject handle to popupmenu2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupmenu2 contents as cell array

% contents{get(hObject,'Value')} returns selected item from popupmenu2

% --- Executes during object creation, after setting all properties.

function popupmenu2_CreateFcn(hObject, eventdata, handles)

% hObject handle to popupmenu2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit6_Callback(hObject, eventdata, handles)

% hObject handle to edit6 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit6 as text

% str2double(get(hObject,'String')) returns contents of edit6 as a double

% --- Executes during object creation, after setting all properties.

function edit6_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit6 (see GCBO)

% eventdata reserved - to be defined 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 && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

4.3.4. Файлы, относящиеся к програме:

- fig_2.fig– файл графического интерфейса

- fig_2.m– файл с функциями, обрабатывающими графическую форму

4.3.5. Запуск программы:

>> fig_2

4.3.6. Вывод:

Наилучший эффект достигается при использовании окна Хэмминга. При использовании прямоугольного окна в спектре появляются боковые лепестки. Ширина главного лепестка спектра при использовании окна Блэкмана–Харриса больше, чем ширина главного лепестка спектра при использовании окна Хэмминга.

Из тестирования программы видно, что при уменьшении ширины окна, спектр сигнала расширяется, то есть при ограничении сигнала во времени его спектр становится шире, что, совпадает с теорией.

Соседние файлы в папке Лабораторная работа 2(9)
  • #
    01.05.2014621 б56sigprefs.mat
  • #
    01.05.2014264.17 Кб56startup.spt
  • #
    01.05.2014313 б57t_meandr.m
  • #
    01.05.2014896 б57t_rastspectr.m
  • #
    01.05.2014261 б57t_windows.m
  • #
    01.05.20141.29 Mб95лаб2_matlab.doc