image thumbnail

DAQ Recoder

by

 

This program developed to record AI signals like EEG or EMG. Almost NI Card was supported.

DAQ_Recoder(varargin)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% DAQ_RECODER is a real-time DAQ monitoring & recording program.
%
%   Developed by duk SHIN(shinduk@cns.pi.titech.ac.jp), Yasuharu KOIKE Lab., 
%   Copyleft(c) 2010, TOKYO INSTITUTE OF TECHNOLOGY.
%
%   
%   Last Modified by GUIDE v2.5 25-Aug-2010 15:37:56



function varargout = DAQ_Recoder(varargin)

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @DAQ_Recoder_OpeningFcn, ...
                   'gui_OutputFcn',  @DAQ_Recoder_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 DAQ_Recoder is made visible.
function DAQ_Recoder_OpeningFcn(hObject, eventdata, handles, varargin) %#ok<INUSL>
% 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 DAQ_Recoder (see VARARGIN)

% Choose default command line output for DAQ_Recoder
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);

% Determine which adaptor was selected.
[adaptorStr] = daqgate('privateGetAdaptor', 'analoginput');
set(handles.popupmenu1, 'String', adaptorStr);

% This sets up the initial plot - only do when we are invisible
% so window can get raised using DAQ_Recoder.
if strcmp(get(hObject,'Visible'),'off')

end

        hAx = gca;
        EEG=zeros(8000,16);
        for i=1:16
          EEG(:,i)=EEG(:,i)-10*(i-1);
        end
        plot(hAx,(1:8000)/2000,EEG);
        set(hAx,'YAxisLocation','right','ylim',[-156 6],'YTick',[],'Box','Off','FontSize', 9,'TickDir','out','TickLength',[0.005 0.025]);
 
% hLine=[];
% 
% for i = 1:8;
% hLine(i) = line('Parent', data.handle.axes,...
%    'Xdata', 1:(length(d(:,1))),...
%    'Ydata', d(:,i),...
%    'Color', data.map(i,:),...
%    'HandleVisibility', 'off');
% end
% drawnow;

% UIWAIT makes DAQ_Recoder wait for user response (see UIRESUME)
% uiwait(handles.DAQ_Recorder);

% --- Outputs from this function are returned to the command line.
function varargout = DAQ_Recoder_OutputFcn(~, ~, 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;

% --------------------------------------------------------------------
function FileMenu_Callback(~, ~, ~) %#ok<DEFNU>
% 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(~, ~, handles) %#ok<DEFNU>
% 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)

 % open uigetfile dialog GUI
    [filename] = uigetfile({'*.mat'}, 'Open Plot EEG File *.mat');
    fname=sprintf(filename);               
               load(fname, 'logEEG','samp','logTime','ch_num','duration','fileNum');
        hAx=gca;
        onesEEG=ones(samp*logTime,ch_num);
        
        for i=1:ch_num
            onesEEG(:,i)=-10*(i-1)*onesEEG(:,i);%+onesEEG(:,i).*(gain-1)*4;
        end
       
        EEG=logEEG+onesEEG;
        plot(hAx,(1:samp*logTime)/samp,EEG);
        set(hAx,'YAxisLocation','right','XGrid','on','XMinorGrid','on',...
            'Ylim',[-156 6],'YTick',[],'Box','Off','FontSize', 9,'TickDir','out','TickLength',[0.005 0.025]);
        set(handles.edit1,'String',samp);  %','
        set(handles.edit2,'String',duration);
        set(handles.edit3,'String',fileNum);
        set(handles.edit4,'String',logTime);
% --------------------------------------------------------------------
function PrintMenuItem_Callback(~, ~, handles) %#ok<DEFNU>
% 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)
printpreview(handles.DAQ_Recorder)

% --------------------------------------------------------------------
function CloseMenuItem_Callback(~, ~, handles) %#ok<DEFNU>
% 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.DAQ_Recorder,'Name') '?'],...
                     ['Close ' get(handles.DAQ_Recorder,'Name') '...'],...
                     'Yes','No','Yes');
if strcmp(selection,'No')
    return;
end

delete(handles.DAQ_Recorder)


% --- Executes on selection change in popupmenu1.
function popupmenu1_Callback(~, ~, handles) %#ok<DEFNU>
% 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
%%

val = get(handles.popupmenu1, 'Value');
str =  get(handles.popupmenu1, 'String');

%%
% Need to check if str is a space which occurs when no adaptors are
% registered.
if iscell(str)
   adaptorStr = str{val};
   index = find(adaptorStr == ' ');
   % Split the adaptor string into adaptor and id.
   adaptor = adaptorStr(1:index(1)-1);
   id = adaptorStr(index(1)+1:index(2)-1);
   
   if ~strcmp(adaptor, 'winsound') 
       Input_type = adaptorStr(index(2)+2:end-1);
   end

   AI = analoginput(adaptor, id);

   if strcmp(adaptor, 'winsound')
      set(ai, 'SampleRate', 44100);
   end
   
   % Determine the number of channels allowed for the selected adaptor.
   AIInfo = daqhwinfo(AI);
   
   % Construct the names based on the hardware.
       if strcmp(Input_type, 'Differential')
           set(AI, 'InputType', 'Differential');
          allchannel = AIInfo.DifferentialIDs;
       elseif strcmp(Input_type, 'SingleEnded')
           set(AI, 'InputType', 'SingleEnded');
          allchannel = AIInfo.SingleEndedIDs;
       end
       names = makenames('Display ', allchannel+1);

   % Update the Channel listbox.
   set(handles.popupmenu3, 'Value', 1, 'String', names);
  
end
samp = str2double(get(handles.edit1,'string'));
duration = str2double(get(handles.edit2,'string'));

set(AI,'SampleRate',samp);
set(AI,'SamplesPerTrigger',duration);
set(AI,'TriggerType','Immediate');
set(AI,'TriggerRepeat',inf);

setappdata(handles.DAQ_Recorder,'AI',AI);

    Samp_freq = 200;
    t = 1/Samp_freq:1/Samp_freq:0.5;
    h= 6.44*(exp(-10.80*t) - exp(-16.52*t));
    h = h/sum(h);
    setappdata(handles.DAQ_Recorder,'h',h);
    
% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, ~, ~) %#ok<DEFNU>
% 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', {''});



% --- Executes on button press in pushbutton_Start.
function pushbutton_Start_Callback(~, ~, handles) %#ok<DEFNU>
% hObject    handle to pushbutton_Start (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
        openDAQ=daqfind;
        for i=1:length(openDAQ),
          stop(openDAQ(i));
        end

        set(handles.pushbutton_stop, 'Enable', 'on')
        set(handles.pushbutton_Start, 'Enable', 'off')
        
        ch_num=getappdata(handles.DAQ_Recorder,'ch_num');
        samp=getappdata(handles.DAQ_Recorder,'samp');
        view_time=getappdata(handles.DAQ_Recorder,'view_time'); 
        AI=getappdata(handles.DAQ_Recorder,'AI');
      
      %  gain=str2double(get(handles.edit6,'string'));
        rawEEG=zeros(samp*view_time,ch_num);       
        onesEEG=ones(samp*view_time,ch_num);
        for i=1:ch_num
            onesEEG(:,i)=-(160/ch_num)*(i-1)*onesEEG(:,i);%+onesEEG(:,i).*(gain-1)*4;
        end
        
        frame = samp/10;

      %  [b,a]=butter(4,30/500,'low');
        
%% Loop Start
start(AI)
%WAIT(AI, duration/(AI.SampleRate*1))
while(strcmp(get(handles.pushbutton_stop, 'Enable'),'on')==1)
    
    %% view_plot
      while AI.SamplesAvailable <AI.SamplesPerTrigger
                    
              while AI.SamplesAvailable < frame
              end
              log_data = peekdata(AI,frame);  
              rawEEG=[rawEEG(frame+1:size(rawEEG,1),:);log_data];
              
       % Display   
         if  get(handles.checkbox2,'Value')==1
           hAx = gca;   
            EEG=rawEEG+onesEEG;                    
            EEGLine=getappdata(handles.DAQ_Recorder,'EEGLine');
                for i=1:ch_num
                    set(EEGLine(i),'ydata',EEG(:,i));
                end
            set(hAx,'YAxisLocation','right','XGrid','on','XMinorGrid','on',...
                'Ylim',[-(160/ch_num)*(ch_num-1)-160/ch_num  160/ch_num],'YTick',[],'Box','Off','FontSize', 9,'TickDir','out','TickLength',[0.005 0.025]);
            drawnow
         end
         
              
       end  
    
  %% Get data
        getdata(AI,AI.SamplesPerTrigger);

  %% Torque Viewer
        if  get(handles.checkbox4,'Value')==1
          
          
        end
%%
        
end
%%
stop(AI)
display('STOP!')
showdaqevents(AI)
%delete(AI);
%clear AI

% --- Executes on button press in pushbutton_stop.
function pushbutton_stop_Callback(~, ~, handles) %#ok<DEFNU>
% hObject    handle to pushbutton_stop (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(handles.pushbutton_stop, 'Enable', 'off')
set(handles.pushbutton_Start, 'Enable', 'on')

% --- Executes on selection change in popupmenu3.
function popupmenu3_Callback(~, ~, handles) %#ok<DEFNU>
% hObject    handle to popupmenu3 (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 popupmenu3 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu3
    ch_num =  get(handles.popupmenu3, 'Value');
 %   str =  get(handles.popupmenu3, 'String');
    setappdata(handles.DAQ_Recorder,'ch_num',ch_num);
    AI=getappdata(handles.DAQ_Recorder,'AI');
    addchannel(AI,0:ch_num-1);   %4ch  0:3
    setappdata(handles.DAQ_Recorder,'AI',AI);
% --- Executes during object creation, after setting all properties.
function popupmenu3_CreateFcn(hObject, ~, ~) %#ok<DEFNU>
% hObject    handle to popupmenu3 (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 edit1_Callback(~, ~, ~) %#ok<DEFNU>
% hObject    handle to edit1 (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 edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double


% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, ~, ~) %#ok<DEFNU>
% hObject    handle to edit1 (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 edit2_Callback(~, ~, ~) %#ok<DEFNU>
% 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, ~, ~) %#ok<DEFNU>
% 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



function edit3_Callback(~, ~, ~) %#ok<DEFNU>
% 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, ~, ~) %#ok<DEFNU>
% 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(~, ~, ~) %#ok<DEFNU>
% 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, ~, ~) %#ok<DEFNU>
% 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


% --- Executes on button press in checkbox1.
function checkbox1_Callback(~, ~, ~) %#ok<DEFNU>
% hObject    handle to checkbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of checkbox1




% --- Executes on button press in pushbutton_Init.
function pushbutton_Init_Callback(hObject, ~, handles) %#ok<DEFNU>
% hObject    handle to pushbutton_Init (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
        openDAQ=daqfind;
        for i=1:length(openDAQ),
          stop(openDAQ(i));
        end
        set(handles.pushbutton_stop, 'Enable', 'off')
        set(handles.pushbutton_Start, 'Enable', 'off')
        % Determine which adaptor was selected.
        [adaptorStr] = daqgate('privateGetAdaptor', 'analoginput');
        set(handles.popupmenu1, 'String', adaptorStr);

        % This sets up the initial plot - only do when we are invisible
        % so window can get raised using DAQ_Recoder.
        if strcmp(get(hObject,'Visible'),'off')
        end
 
        val = get(handles.popupmenu1, 'Value');
        str =  get(handles.popupmenu1, 'String');

        %%
        % Need to check if str is a space which occurs when no adaptors are
        % registered.
        if iscell(str)
           adaptorStr = str{val};
           index = find(adaptorStr == ' ');
           % Split the adaptor string into adaptor and id.
           adaptor = adaptorStr(1:index(1)-1);
           id = adaptorStr(index(1)+1:index(2)-1);

           if ~strcmp(adaptor, 'winsound') 
               Input_type = adaptorStr(index(2)+2:end-1);
           end

           AI = analoginput(adaptor, id);

           if strcmp(adaptor, 'winsound')
              set(ai, 'SampleRate', 44100);
           end

           % Determine the number of channels allowed for the selected adaptor.
           AIInfo = daqhwinfo(AI);

           % Construct the names based on the hardware.
               if strcmp(Input_type, 'Differential')
                   set(AI, 'InputType', 'Differential');
                  allchannel = AIInfo.DifferentialIDs; %#ok<NASGU>
               elseif strcmp(Input_type, 'SingleEnded')
                   set(AI, 'InputType', 'SingleEnded');
                  allchannel = AIInfo.SingleEndedIDs; %#ok<NASGU>
               end


           % Update the Channel listbox.
        end
        ch_num =  get(handles.popupmenu3, 'Value');
        samp = str2double(get(handles.edit1,'string'));
        view_time=str2double(get(handles.edit5,'string'));
        % duration = str2double(get(handles.edit2,'string'));
        duration = samp*3;
        set(AI,'SampleRate',samp);
        set(AI,'SamplesPerTrigger',duration);
        set(AI,'TriggerType','Immediate');
        set(AI,'TriggerRepeat',inf);
        
        % save file
        name = get(handles.edit4,'string');
        file_name=sprintf('%s_data.daq',name);
        wsave = get(handles.checkbox1,'Value');
        
        if  wsave==1
            set(AI,'LogToDiskMode', 'Index');
            set(AI,'LogFileName', file_name);
            set(AI,'LoggingMode', 'Disk&Memory');
        end
        
        setappdata(handles.DAQ_Recorder,'AI',AI);
        setappdata(handles.DAQ_Recorder,'ch_num',ch_num);
        setappdata(handles.DAQ_Recorder,'samp',samp);
        setappdata(handles.DAQ_Recorder,'view_time',view_time);
        
        addchannel(AI,0:ch_num-1);  
        hAx = gca;
        EEG=zeros(samp*view_time,ch_num);
        for i=1:ch_num
          EEG(:,i)=EEG(:,i)-(160/ch_num)*(i-1);
        end
        EEGLine = plot(hAx,(1:samp*view_time)/samp,EEG,'LineWidth',2);
        setappdata(handles.DAQ_Recorder,'EEGLine',EEGLine);
        set(hAx,'YAxisLocation','right','XGrid','on','XMinorGrid','on','Ylim',[-(160/ch_num)*(ch_num-1)-160/ch_num  160/ch_num],'YTick',[],'Box','Off','FontSize', 9,'TickDir','out','TickLength',[0.005 0.025]);

display('Init OK!')
        set(handles.pushbutton_stop, 'Enable', 'on')
        set(handles.pushbutton_Start, 'Enable', 'on')


function edit5_Callback(~, ~, ~) %#ok<DEFNU>
% 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, ~, ~) %#ok<DEFNU>
% 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 button press in checkbox2.
function checkbox2_Callback(~, ~, ~) %#ok<DEFNU>
% hObject    handle to checkbox2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of checkbox2





function edit6_Callback(~, ~, ~) %#ok<DEFNU>
% 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, ~, ~) %#ok<DEFNU>
% 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



% --------------------------------------------------------------------
function DAQ_Recorder_Callback(~, ~, ~) %#ok<DEFNU>
% hObject    handle to DAQ_Recorder (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 radiobutton3.
function radiobutton3_Callback(~, ~, ~) %#ok<DEFNU>
% hObject    handle to radiobutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of radiobutton3


% --- Executes on button press in radiobutton4.
function radiobutton4_Callback(~, ~, ~) %#ok<DEFNU>
% hObject    handle to radiobutton4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of radiobutton4





% update the plot with the current plot selected
%function update_plot(handles,ch_num)


        
     


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




Contact us