⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 polgui_ver1_r14.m

📁 如何使用GUI那就下这个吧
💻 M
📖 第 1 页 / 共 3 页
字号:
%--------------------------------------------------------------------------% --- Executes on button press in get_test.% Secure test pointfunction get_test_Callback(hObject, eventdata, handles)% hObject    handle to get_test (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)global DATA DATA_ORIG DATA_TRANSF COUNTER COUNTER1 T M redigitize;if isempty(COUNTER) COUNTER=1; endif isempty(COUNTER1) COUNTER1=1; endif (strcmp(handles.s.status,'closed'))    handles.s.BytesAvailableFcnCount=48;    handles.s.BytesAvailableFcnMode = 'byte';    handles.s.BytesAvailableFcn = {@bytesavailablegui_callback,handles};    fopen(handles.s);end% This loop send request for three successive digitizations which is% averaged and checked for pen movementfor i=1:3,%     i%     COUNTER1    fprintf(handles.s,'%s','P');    pause(0.2);endif ~isequal(redigitize,1)    str_text2=sprintf('\n\n\nGet Cardinal Point LA');    set(handles.text2,'String',str_text2);    set(handles.get_la,'Enable','on');    set(handles.get_test,'Enable','off')endguidata(hObject,handles);%--------------------------------------------------------------------------% --- Executes on button press in get_la.% Secure Cardinal Point LA(Left Auricular)function get_la_Callback(hObject, eventdata, handles)% hObject    handle to get_la (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)global DATA DATA_ORIG DATA_TRANSF COUNTER COUNTER1 T M redigitize;% This loop send request for three successive digitizations which is% averaged and checked for pen movementfor i=1:3,%     i%     COUNTER1    fprintf(handles.s,'%s','P');    pause(0.2);endif ~isequal(redigitize,1)    str_text2=sprintf('\n\n\nGet Cardinal Point RA');    set(handles.text2,'String',str_text2);    set(handles.get_ra,'Enable','on');    set(handles.get_la,'Enable','off')endguidata(hObject,handles);% --- Executes on button press in get_ra.% Secure Cardinal Point RA(Right Auriculur)function get_ra_Callback(hObject, eventdata, handles)% hObject    handle to get_ra (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)global DATA DATA_ORIG DATA_TRANSF COUNTER COUNTER1 T M redigitize;% This loop send request for three successive digitizations which is% averaged and checked for pen movementfor i=1:3,%     i%     COUNTER1    fprintf(handles.s,'%s','P');    pause(0.2);endif ~isequal(redigitize,1)    str_text2=sprintf('\n\n\nGet Cardinal Point NASION');    set(handles.text2,'String',str_text2);    set(handles.get_nasion,'Enable','on');    set(handles.get_ra,'Enable','off');endguidata(hObject,handles);%--------------------------------------------------------------------------% --- Executes on button press in get_nasion.% Secure Cardinal Point Nasionfunction get_nasion_Callback(hObject, eventdata, handles)% hObject    handle to get_nasion (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)global DATA DATA_ORIG DATA_TRANSF COUNTER COUNTER1 T M redigitize;% This loop send request for three successive digitizations which is% averaged and checked for pen movementfor i=1:3,%     i%     COUNTER1    fprintf(handles.s,'%s','P');    pause(0.2);endif ~isequal(redigitize,1)    str_nasion=sprintf('\n\nCARDINAL POINTS OBTAINED\n\nALIGN FRAME TO HEAD CO-ORDINATE SYSTEM');       set(handles.text2,'String',str_nasion);    set(handles.align,'Enable','on');    set(handles.get_nasion,'Enable','off');endguidata(hObject,handles);%--------------------------------------------------------------------------% --- Executes on button press in get_montage.% Secure EEG Montagefunction get_montage_Callback(hObject, eventdata, handles)% hObject    handle to get_montage (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)global LOC DATA DATA_ORIG DATA_TRANSF COUNTER COUNTER1 T M redigitize k str_modal;set(handles.get_montage,'Enable','off');set(handles.remove,'Enable','Off');while k<=length(handles.needed_loc) % Check if loop is within the EEG montage points count    if isequal(k,5)            str_modal=sprintf('Get Point %s\nPress ESC to exit',handles.needed_loc(5,:));            str_text2=sprintf('\n\n\n Get Point %s\n\nPress ESC to exit',handles.needed_loc(5,:));            set(handles.text2,'String',str_text2);    end                pos_size = get(handles.figure1,'Position');    user_response = montage_modaldlg_r14('Title','Digitize','String',str_modal);        switch user_response             case 'OK'    % Digitize Point               for i=1:3,%                i%                COUNTER1               fprintf(handles.s,'%s','P');               pause(0.2);               end            case 'REMOVE LAST PT'  % Remove Last digitized Point%                     k%                     LOC%                     DATA%                     DATA_TRANSF                    k=k-1;                    resultStr= get(handles.points,'String');                    resultStr(k) =[];                    DATA(k,:)=[];                    DATA_TRANSF(k,:)=[];                    set(handles.points,'String',resultStr)                    LOC(k,:)=[];                    redigitize=1;                    COUNTER1=COUNTER1-3;                    COUNTER=COUNTER-1;            case 'No'               str_text2=sprintf('\n\nPress STOP to finish digitization\nOR\nGet additional Points');               set(handles.text2,'String',str_text2);               set(handles.get_additional,'Enable','Off')               break;        end     pause(0.5);    k=k+1;    if (redigitize==1)         redigitize        k=k-1;        str_text2=sprintf('\n\n\nRedigitize Point %s\n\nPress ESC to exit',handles.needed_loc(k,:));        str_modal=sprintf('Redigitize Point %s\nPress ESC to exit',handles.needed_loc(k,:));        set(handles.text2,'String',str_text2);        redigitize=0;    elseif ~isequal(k,length(handles.needed_loc)+1)        str_text2=sprintf('\n\n\nGet Point %s\n\nPress ESC to exit',handles.needed_loc(k,:));        str_modal=sprintf('Get Point %s\nPress ESC to exit',handles.needed_loc(k,:));        set(handles.text2,'String',str_text2);    else        str_text2=sprintf('\n\n\nGet Additional Points if needed');        set(handles.text2,'String',str_text2);    end    if k==length(handles.needed_loc)+1        str_modal1=sprintf('EEG Montage Digitized\nPress OK to Continue or \nRemove Last Point?');        user_response = montage_modaldlg_r14('Title','Digitize','String',str_modal1);        switch user_response             case 'OK'              str_text2=sprintf('\n\nPress STOP to finish digitization\nOR\nGet additional Points');              set(handles.text2,'String',str_text2);              set(handles.get_additional,'Enable','On')              break;            case 'REMOVE LAST PT'                    k                    LOC                    DATA                    DATA_TRANSF                    k=k-1;                    resultStr= get(handles.points,'String');                    resultStr(k) =[];                    DATA(k,:)=[];                    DATA_TRANSF(k,:)=[];                    set(handles.points,'String',resultStr)                    LOC(k,:)=[];                    redigitize=1;                    COUNTER1=COUNTER1-3;                    COUNTER=COUNTER-1;                    str_modal=sprintf('Redigitize Point %s\nPress ESC to exit',handles.needed_loc(k,:));            case 'No'               str_text2=sprintf('\n\nPress STOP to finish digitization\nOR\nGet additional Points');               set(handles.text2,'String',str_text2);               set(handles.get_additional,'Enable','Off')               break;        end    endendset(handles.get_additional,'Enable','on');set(handles.remove,'Enable','On');guidata(hObject,handles);% set(handles.get_additional,'Enable','on');        %--------------------------------------------------------------------------% --- Executes on button press in get_additional.function get_additional_Callback(hObject, eventdata, handles)% hObject    handle to get_additional (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)global DATA DATA_ORIG DATA_TRANSF COUNTER COUNTER1 additional T M;set(handles.get_additional,'Enable','off');additional=1;str_additional=sprintf('Press Stylus pen to digitize additional points\n Press OK to continue');uiwait(msgbox(str_additional,'Get Additional Points','help','modal'));%--------------------------------------------------------------------------% --- Executes on button press in align.% Align from device coordinates to head coordinatesfunction align_Callback(hObject, eventdata, handles)% hObject    handle to align (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)global DATA DATA_TRANSF COUNTER T M LOC;handles.data=DATA;hold(handles.coordinates,'off');la1=handles.data(2,:);ra2=handles.data(3,:);nasion=handles.data(4,:);% rest=data(5:end,:)a=nasion-la1;b1=ra2-la1;b2=la1-ra2;c=nasion-ra2;t1=dot(a,b1)/sqrt(dot(b1,b1));t2=dot(c,b2)/sqrt(dot(b2,b2));if t1<0 t1=t1*-1;endif t2<0 t2=t2*-1;endt=t1/(t1+t2);o=la1+t*b1;oy=nasion-o;ox=ra2-o;ox=ox/sqrt(dot(ox,ox));oy=oy/sqrt(dot(oy,oy));oz=cross(ox,oy);% oz1=o+2*ozT=[ 1 0 0 0; 0 1 0 0 ;0 0 1 0;-o 0];R=[ox;oy;oz];R1=inv(R);M=[R1 ;0 0 0]; % Transformed points from original pointsla=[la1 1]*T*M;ra=[ra2 1]*T*M;nasion=[nasion 1]*T*M;% rest_new=rest_new*T*M;% set(handles.coordinates,'BOX','on','XGrid','on','Ygrid','on','ZGrid','on','ZLim',[0 15]);plot3([0 5],[0 0],[0 0],'->','Parent',handles.coordinates)hold(handles.coordinates,'on');plot3([0 0],[0 5],[0 0],'->','Parent',handles.coordinates)% hold(handles.coordinates,'on');plot3([0 0],[0 0],[0 5],'->','Parent',handles.coordinates)% hold(handles.coordinates,'on');plot3([la(1,1) ra(1,1) nasion(1,1)],[la(1,2) ra(1,2) nasion(1,2)],[la(1,3) ra(1,3) nasion(1,3)],'*','Parent',handles.coordinates);hold(handles.coordinates,'on');set(handles.coordinates,'BOX','on','XGrid','on','Ygrid','on','ZGrid','on','ZLim',[-2 15]);xlabel(handles.coordinates,'X','Fontweight','bold');ylabel(handles.coordinates,'Y','Fontweight','bold');zlabel(handles.coordinates,'Z','Fontweight','bold');sprintf('Align\n');handles.center=o;set(handles.align,'Enable','off');set(handles.get_montage,'Enable','on');str_align=sprintf('\n\n\nGet EEG Montage\n\nGet Point %s',handles.needed_loc(COUNTER,:));set(handles.text2,'String',str_align);guidata(hObject,handles);ResultsStr = get(handles.points,'String');% ResultsStrDATA_TRANSF(1:4,:)=[DATA(1,:) 1;DATA(2,:) 1;DATA(3,:) 1;DATA(4,:) 1]*T*M; handles.location=LOC[r,c]=find(abs(DATA_TRANSF)<1e-5);     for i=1:length(r)         for j=1:length(c)             if (i==j)                 DATA_TRANSF(r(i),c(i))=0;             end         end     end     str_la=sprintf('X = %2.3g cm\nY = %2.3g cm\nZ = %2.3g cm',DATA_TRANSF(2,1),DATA_TRANSF(2,2),DATA_TRANSF(2,3)); set(handles.text_la,'String',str_la);str_ra=sprintf('X = %2.3g cm\nY = %2.3g cm\nZ = %2.3g cm',DATA_TRANSF(3,1),DATA_TRANSF(3,2),DATA_TRANSF(3,3));set(handles.text_ra,'String',str_ra); str_nasion=sprintf('X = %2.3g cm\nY = %2.3g cm\nZ = %2.3g cm',DATA_TRANSF(4,1),DATA_TRANSF(4,2),DATA_TRANSF(4,3));set(handles.text_nasion,'String',str_nasion);ResultsStr(1,:)={[handles.location(1,:),'   :   ',num2str(DATA_TRANSF(1,1)),'   ',num2str(DATA_TRANSF(1,2)),'   ',num2str(DATA_TRANSF(1,3))]};ResultsStr(2,:)={[handles.location(2,:),'   :   ',num2str(DATA_TRANSF(2,1)),'   ',num2str(DATA_TRANSF(2,2)),'   ',num2str(DATA_TRANSF(2,3))]};ResultsStr(3,:)={[handles.location(3,:),'   :   ',num2str(DATA_TRANSF(3,1)),'   ',num2str(DATA_TRANSF(3,2)),'   ',num2str(DATA_TRANSF(3,3))]};ResultsStr(4,:)={[handles.location(4,:),'   :   ',num2str(DATA_TRANSF(4,1)),'   ',num2str(DATA_TRANSF(4,2)),'   ',num2str(DATA_TRANSF(4,3))]};handles.translation=T;handles.rotation=M;set(handles.points,'String',ResultsStr);guidata(hObject,handles);%--------------------------------------------------------------------------% % --- Executes on selection change in points.% function points_Callback(hObject, eventdata, handles)% % hObject    handle to points (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 points contents as cell array% %        contents{get(hObject,'Value')} returns selected item from points

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -