GUI应用Matlab实现矩阵计算器

Posted Matlab走起

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GUI应用Matlab实现矩阵计算器相关的知识,希望对你有一定的参考价值。

界面设计

效果展示

主体源码

%%矩阵相加a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia ~= ib | ja ~= jb |(ia ~= ib & ja ~= jb)     c='error.Matrix dimensions must agree.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    result = a+b ;    c= num2str(result);    set(handles.text1,'String',c)    guidata(hObject, handles);end
%%矩阵相减a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia ~= ib | ja ~= jb |(ia ~= ib & ja ~= jb)     c='error.Matrix dimensions must agree.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    result = a-b ;    c= num2str(result);    set(handles.text1,'String',c)    guidata(hObject, handles);end

%%矩阵点乘a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia ~= ib | ja ~= jb |(ia ~= ib & ja ~= jb)     c='error.Matrix dimensions must agree.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    result = a.*b ;    c= num2str(result);    set(handles.text1,'String',c)    guidata(hObject, handles);end
%%矩阵相乘a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ja ~= ib                 c='error.Inner matrix dimensions must agree.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    result = a*b ;    c= num2str(result);    set(handles.text1,'String',c)    guidata(hObject, handles);end
%%矩阵点除a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia ~= ib | ja ~= jb |(ia ~= ib & ja ~= jb)     c='error.Matrix dimensions must agree.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    result = a./b ;    c= num2str(result);    set(handles.text1,'String',c)    guidata(hObject, handles);end
%%矩阵左除a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia ~= ib         c='error.Matrix dimensions must agree.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    result = a\\b ;    c= num2str(result);    set(handles.text1,'String',c)    guidata(hObject, handles);end
%%矩阵右除a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia ~= ib         c='error.Matrix dimensions must agree.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    result = a/b ;    c= num2str(result);    set(handles.text1,'String',c)    guidata(hObject, handles);end
%%矩阵求秩a=str2num(get(handles.edit1,'string'));c=a';set(handles.text1,'string',num2str(c))
 a=str2num(get(handles.edit1,'string')); result =rank(a) ; c= num2str(result); set(handles.text1,'String',c) guidata(hObject, handles);
%%求逆a=str2num(get(handles.edit1,'string'));[ia ja]=size(a);if  ia~= ja                   c='error.Matrix dimensions must agree.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    if  abs(det(a))<1e-6                     c='error.Matrix is singular to working precision.';        set(handles.text1,'String',c)        guidata(hObject, handles);    else        result = inv(a) ;        c = num2str(result);        set(handles.text1,'String',c)        guidata(hObject, handles);    endend

%%求行列式a=str2num(get(handles.edit1,'string'));[ia ja]=size(a);if  ia ~= ja                   c='error.Matrix dimensions must agree.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    result = det(a) ;    c= num2str(result);    set(handles.text1,'String',c)    guidata(hObject, handles);end
%%求2-范数a=str2num(get(handles.edit1,'string'));result = norm(a);c = num2str(result);set(handles.text1,'String',c)guidata(hObject, handles)
%%求LU分解a=str2num(get(handles.edit1,'string'));[L,U,P]=lu(a);result = [L;U;P] ;c= num2str(result);set(handles.text1,'String',c)guidata(hObject, handles)

%%求AX=Ba=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia ~= ib    c='error.';    set(handles.text1,'String',c)    guidata(hObject, handles);else    if ia ~=ja                                c='error.Matrix must be square.';        set(handles.text1,'String',c)        guidata(hObject, handles);    else        if  det(a) == 0                            c='error.Matrix is singular to working precision.';            set(handles.text1,'String',c)            guidata(hObject, handles);        else            result = a\\b ;            c = num2str(result);            set(handles.text1,'String',c)            guidata(hObject, handles);        end    endend

a=str2num(get(handles.edit1,'string'));result = rref(a);c= num2str(result);set(handles.text1,'String',c)guidata(hObject, handles);
%%求特征值a=str2num(get(handles.edit1,'string'));[ia ja]=size(a);if  ia ~= ja                    c='error.Matrix must be square .';    set(handles.text1,'String',c)    guidata(hObject, handles);else    result = eig(a) ;    c= num2str(result);    set(handles.text1,'String',c)    guidata(hObject, handles);end%阶梯形a=str2num(get(handles.edit1,'string'));b=str2num(get(handles.edit2,'string'));[ia ja]=size(a);[ib jb]=size(b);if ia ~= ib         c='error.Matrix dimensions must agree.';    set(handles.edit34,'String',c)    guidata(hObject, handles);else    result = rref(a) ;    c= num2str(result);    set(handles.edit34,'String',c)    guidata(hObject, handles);end%%求转置a=str2num(get(handles.edit1,'string'));[ia ja]=size(a);if  ia ~= ja                    c='error.Matrix must be square .';    set(handles.edit34,'String',c)    guidata(hObject, handles);else    result =a' ;    c= num2str(result);    set(handles.edit34,'String',c)    guidata(hObject, handles);end

 

菜单结构设计

菜单的设计只做点拨,不要照搬!!!通过Menu Editor创建如图所示的菜单。“File”菜单调用简易计算器、科学计算器、程序员计算器及退出;“Help”菜单调用程序说明和版权所有。

 

 

File”菜单设计

通过设置简易计算器、科学计算器和程序员计算器所在面板的可视性属性,实现点击“File”菜单下的“简易计算器”、“科学计算器”和“程序员计算器”选项调用相应的计算器模块。调用简易计算器模块时,只需设置简易计算器所在面板的可视化属性值为“on”,其他计算器的可视化属性值为“off”;设置“简易计算器”菜单项的被选中(checked)属性值为“on”,其余菜单项的checked属性值为“off”。其余模块调用的原理与其类似。代码如下:

function simple_Callback(hObject, eventdata, handles)set(handles.science_clc,'Visible','off');set(handles.simple_clc,'Visible','on');set(handles.clc_p,'Visible','off');set(handles.jy_clc,'Position',[103.8 20.769 84.0 33.692]);set(handles.simple,'checked','on');set(handles.science,'checked','off');set(handles.programmer,'checked','off');

以上是关于GUI应用Matlab实现矩阵计算器的主要内容,如果未能解决你的问题,请参考以下文章

光学基于matlab GUI矩阵法和等效界面法光学薄膜对反射率影响含Matlab源码 2102期

瑕疵检测基于灰度共生矩阵实现痕迹检测matlab源码GUI

物理应用基于matlab GUI气象参数计算综合指标和IAQI含Matlab源码 2116期

物理应用基于matlab GUI气象参数计算综合指标和IAQI含Matlab源码 2116期

怎么用matlab实现计算器功能

天体学基于matlab GUI太阳天顶角计算含Matlab源码 2229期