function varargout = linear(varargin)
% LINEAR Application M-file for linear.fig
%    FIG = LINEAR launch linear GUI.
%    LINEAR('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.0 21-Feb-2003 23:19:30

if nargin == 0  % LAUNCH GUI

	fig = openfig(mfilename,'reuse');

	% Generate a structure of handles to pass to callbacks, and store it. 
	handles = guihandles(fig);
	guidata(fig, handles);

	if nargout > 0
		varargout{1} = fig;
	end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

	try
		if (nargout)
			[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
		else
			feval(varargin{:}); % FEVAL switchyard
		end
	catch
		disp(lasterr);
	end

end


%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and 
%| sets objects' callback properties to call them through the FEVAL 
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the 
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback.  You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks.  Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.


% --------------------------------------------------------------------
function varargout = popupmenu1_Callback(h, eventdata, handles, varargin)
load x;
val = get(h,'Value');
switch val
case 1
	handles.data = 0;
case 2
	handles.data = rand(1000,1);
case 3
	handles.data = x;
end
guidata(h,handles)


% --------------------------------------------------------------------
function varargout = edit1_Callback(h, eventdata, handles, varargin)


% --------------------------------------------------------------------
function varargout = edit2_Callback(h, eventdata, handles, varargin)


% --------------------------------------------------------------------
function varargout = edit3_Callback(h, eventdata, handles, varargin)


% --------------------------------------------------------------------
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)

% Get user input from GUI
x = handles.data;

L = str2double(get(handles.edit1,'String'));
d = str2double(get(handles.edit2,'String'));
u = str2double(get(handles.edit3,'String'));

% Calculate data
w = zeros(L,1);
x1 = zeros(L,1); 
e(1:d-1)= x(1:d-1);
for n = d+1:size(x),
    x1 =[x(n-d);x1(1:L-1)] ;
    y(n) = (w)'*x1;
    e(n) = x(n) - y(n);   
    c = x1.^2;
    c1= sum(c);
    w = w + (u/(1+c1))*x1*e(n);    
end

% Create input plot
axes(handles.axes1)
plot(x)
set(handles.axes1,'XMinorTick','on')
grid on

% Create estimate plot
axes(handles.axes2)
plot(y)
set(handles.axes2,'XMinorTick','on')
grid on

% Create tap weight plot
axes(handles.axes3)
stem(w)
set(handles.axes3,'XMinorTick','on')
grid on

% Create error plot
axes(handles.axes4)
plot(e)
set(handles.axes4,'XMinorTick','on')
grid on