You have
function pushbutton1_Callback(hObject, eventdata, handles)
handles.s_lz=double(handles.lz0):double(handles.lz_step):double(handles.lzf);
handles.s_nu=double(handles.nu0):double(handles.nu_step):double(handles.nuf);
[Result,Inp,lz,nu,str,c_,f0,fk]=m(hObject,eventdata,handles,varargin);
You cannot pass varargin in the call to m() because varargin is only defined in functions that refer to varargin in the function statement. Your function pushbutton1_Callback does not refer to varargin in the function line, so varargin cannot be used inside that function.
varargin is a special name that should only be used when the calling functions have a choice as to how many parameters to pass in. Inside a function, it should not be used without testing how many arguments were passed, or at least not without testing the size of varargin. Your code for m assumes that varargin is length 8 or more -- assumes, in other words, that any call to m has passed in at least 8 individual parameters after pasing in hObject, eventdata, and handles. In any case where you have a definite number of individual parameters that are required, you should be using named parameters instead of varargin. Or you should be changing your calling sequence to expect a named cell array or struct array or numeric array at that point that the caller packs the arguments into.