www.gusucode.com > 实现一个数字信号处理的仿真系统matlab源码程序 > code/main.m
function varargout = main(varargin) % MAIN M-file for main.fig % MAIN, by itself, creates a new MAIN or raises the existing % singleton*. % % H = MAIN returns the handle to a new MAIN or the handle to % the existing singleton*. % % MAIN('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in MAIN.M with the given input arguments. % % MAIN('Property','Value',...) creates a new MAIN or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before main_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to main_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 main % Last Modified by GUIDE v2.5 25-Aug-2011 18:51:19 % Begin initialization code - DO NOT EDIT global y; global z; global mix; global t; global amp; global fre; global nak; gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @main_OpeningFcn, ... 'gui_OutputFcn', @main_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 main is made visible. function main_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 main (see VARARGIN) % Choose default command line output for main handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes main wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = main_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 during object creation, after setting all properties. function amp_edit_CreateFcn(hObject, eventdata, handles) % hObject handle to amp_edit (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 set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function amp_edit_Callback(hObject, eventdata, handles) global amp; amp=str2num(get(handles.amp_edit,'String')); % hObject handle to amp_edit (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 amp_edit as text % str2double(get(hObject,'String')) returns contents of amp_edit as a double % --- Executes during object creation, after setting all properties. function fre_edit_CreateFcn(hObject, eventdata, handles) % hObject handle to fre_edit (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 set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function fre_edit_Callback(hObject, eventdata, handles) global fre; fre=str2num(get(handles.fre_edit,'String')); % hObject handle to fre_edit (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 fre_edit as text % str2double(get(hObject,'String')) returns contents of fre_edit as a double % --- Executes on button press in sin_button. function sin_button_Callback(hObject, eventdata, handles) global y; global t; global amp; global fre; global nak; amp=str2num(get(handles.amp_edit,'String')); fre=str2num(get(handles.fre_edit,'String')); nak=50*fre; t=0:1/nak:15; y=zeros(length(t),length(amp),length(fre)); cla; for k=1:length(amp) for j=1:length(fre) for i=1:length(t) y(i,k,j)=amp(k)*sin(2*pi*fre(j).*t(i)); end findobj('tag','sig_axes'); plot(t, y(:,k,j),'parent',handles.sig_axes); end end % hObject handle to sin_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in tri_button. function tri_button_Callback(hObject, eventdata, handles) global y; global t; global amp; global fre; global nak; amp=str2num(get(handles.amp_edit,'String')); fre=str2num(get(handles.fre_edit,'String')); nak=50*fre; t=0:1/nak:15; y=zeros(length(t),length(amp),length(fre)); cla; for k=1:length(amp) for j=1:length(fre) pe=1/fre(j); NUM=15*fre(j); for i=1:length(t) for l=1:NUM %for l=0:(15*fre(j)-1) % if (t(i)>=l/fre(j) && t(i)<=(l/fre(j)+1/(2*fre(j)))) if (t(i)>=(l-1)*pe && t(i)<=(l-1)*pe+pe/2) y(i,k,j)=2*amp(k)/pe*t(i)-2*amp(k)*(l-1); %y(i)=amp(k)*2*fre(j)*t(i)-2*l*amp(k); else if (t(i)<=l*pe && t(i)>=(l-1)*pe+pe/2) y(i,k,j)=-2*amp(k)/pe*t(i)+2*amp(k)*l; %y(i)=-amp(k)*2*fre(j)*t(i)+2*l*amp(k); % end end end end end % y(:,k,j)=amp(k)*sin(2*pi*fre(j).*t); findobj('tag','sig_axes'); plot(t, 2*y(:,k,j)-amp,'parent',handles.sig_axes); end end % hObject handle to tri_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in rec_button. function rec_button_Callback(hObject, eventdata, handles) global y; global t; global amp; global fre; global nak; amp=str2num(get(handles.amp_edit,'String')); fre=str2num(get(handles.fre_edit,'String')); nak=50*fre; t=0:1/nak:15; y=zeros(length(t),length(amp),length(fre)); cla; for k=1:length(amp) for j=1:length(fre) pe=1/fre(j); NUM=15*fre(j); for i=1:length(t) for l=1:NUM %for l=0:(15*fre(j)-1) % if (t(i)>=l/fre(j) && t(i)<=(l/fre(j)+1/(2*fre(j)))) if (t(i)>=(l-1)*pe && t(i)<=(l-1)*pe+pe/2) y(i,k,j)=-amp(k); %y(i)=amp(k)*2*fre(j)*t(i)-2*l*amp(k); else if (t(i)<l*pe && t(i)>(l-1)*pe+pe/2) y(i,k,j)=amp(k); %y(i)=-amp(k)*2*fre(j)*t(i)+2*l*amp(k); % end end end end end findobj('tag','sig_axes'); plot(t, y(:,k,j),'parent',handles.sig_axes); end end % hObject handle to rec_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function snr_edit_CreateFcn(hObject, eventdata, handles) % hObject handle to snr_edit (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 set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function snr_edit_Callback(hObject, eventdata, handles) snr=str2num(get(handles.snr_edit,'String')); % hObject handle to snr_edit (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 snr_edit as text % str2double(get(hObject,'String')) returns contents of snr_edit as a double % --- Executes on button press in plot1_button. function plot1_button_Callback(hObject, eventdata, handles) global z; global t; global amp; global fre; global nak; amp=str2num(get(handles.amp_edit,'String')); fre=str2num(get(handles.fre_edit,'String')); snr=str2num(get(handles.snr_edit,'String')); nak=50*fre; snr1=10^(snr/10); t=0:1/nak:15; % x=ones(1,length(t)); % z=awgn(x,snr1,'measured')-1; deta=sqrt((amp^2)/(2*snr1)); z=randn(1,length(t))*deta; % hObject handle to plot1_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) findobj('tag','noi_axes'); plot(t,z,'parent',handles.noi_axes); % --- Executes on button press in plot2_button. function plot2_button_Callback(hObject, eventdata, handles) global y; global z; global mix; global t; global amp; global fre; global nak; amp=str2num(get(handles.amp_edit,'String')); fre=str2num(get(handles.fre_edit,'String')); nak=50*fre; t=0:1/nak:15; mix=zeros(1,length(t)); for k=1:length(amp) for j=1:length(fre) mix=y(:,k,j)'+z; end end % hObject handle to plot2_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) findobj('tag','add_axes'); plot(t,mix,'parent',handles.add_axes); % --- Executes on button press in back_button. function back_button_Callback(hObject, eventdata, handles) close all; % hObject handle to back_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in next_button. function next_button_Callback(hObject, eventdata, handles) fig=openfig('filterfig.fig'); handles = guihandles(fig); guidata(fig, handles); % get(handles.filter_figure); % hObject handle to next_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in quit_button. function quit_button_Callback(hObject, eventdata, handles) close all; % hObject handle to quit_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on key press with focus on figure1 and none of its controls. function figure1_KeyPressFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata structure with the following fields (see FIGURE) % Key: name of the key that was pressed, in lower case % Character: character interpretation of the key(s) that was pressed % Modifier: name(s) of the modifier key(s) (i.e., control, shift) pressed % handles structure with handles and user data (see GUIDATA) % --- Executes on key release with focus on figure1 and none of its controls. function figure1_KeyReleaseFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata structure with the following fields (see FIGURE) % Key: name of the key that was released, in lower case % Character: character interpretation of the key(s) that was released % Modifier: name(s) of the modifier key(s) (i.e., control, shift) released % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function figure1_CreateFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called