基于MATLAB的简易矩阵计算器.docx

上传人:b****3 文档编号:5357228 上传时间:2022-12-15 格式:DOCX 页数:23 大小:514.24KB
下载 相关 举报
基于MATLAB的简易矩阵计算器.docx_第1页
第1页 / 共23页
基于MATLAB的简易矩阵计算器.docx_第2页
第2页 / 共23页
基于MATLAB的简易矩阵计算器.docx_第3页
第3页 / 共23页
基于MATLAB的简易矩阵计算器.docx_第4页
第4页 / 共23页
基于MATLAB的简易矩阵计算器.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于MATLAB的简易矩阵计算器.docx

《基于MATLAB的简易矩阵计算器.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的简易矩阵计算器.docx(23页珍藏版)》请在冰豆网上搜索。

基于MATLAB的简易矩阵计算器.docx

基于MATLAB的简易矩阵计算器

《MATLAB程序设计》

程序设计报告

 

设计题目:

简易矩阵计算器

班级:

021231

******

学号:

********

1.设计目标……………………

2.设计内容……………………

3.设计思想……………………

4.设计说明……………………

5.设计步骤及程序代码……………………

6.运行计算器……………………

7.总结…………………………

1.设计目标

1.熟悉MATLAB的主要控件使用方法。

2.熟悉MATLAB的GUI设计流程。

2.设计内容

设计一个简易的矩阵计算器,通过对简单应用矩阵计算器的设计,编制、调试实现矩阵相加减,矩阵的转置等简单运算,以学习应用MATLAB编写程序原理,加深对MATLAB的学习及应用。

3.设计思想

基于MATLAB中GUI界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用信息函数完成数据的输入输出,实现计算功能。

生成简单的应用软件。

4.设计说明

1)包含的功能有:

加、减、乘、转置等。

2)输入的原始数据分别为A或B矩阵,分别显示在不同标签中,运算的结果则显示在输出部分。

3)计算功能基本上是用系统内部函数。

4)程序能够自动判断输入数据的正确性,如不能输入

(1)。

5.设计步骤及只要代码

1)打开MATLAB,点击

,出现GUI的

2)

设计计算器版面直至

3)对功能键进行设计

执行A矩阵加B矩阵,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

B=eval((get(handles.Matrix_B,'String')));

[iAjA]=size(A);

[iBjB]=size(B);

ifiA~=iB|jA~=jB|(iA~=iB&jA~=jB)

R='error.Matrixdimensionsmustagree.';

set(handles.Answer,'string',R)

guidata(hObject,handles);

else

result=A+B;

R=num2str(result);

set(handles.Answer,'string',R)

guidata(hObject,handles);

end

执行A矩阵减B矩阵,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

B=eval((get(handles.Matrix_B,'String')));

[iAjA]=size(A);

[iBjB]=size(B);

ifiA~=iB|jA~=jB|(iA~=iB&jA~=jB)

R='error.Matrixdimensionsmustagree.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=A-B;

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

执行A矩阵与B矩阵相乘,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

B=eval((get(handles.Matrix_B,'String')));

[iAjA]=size(A);

[iBjB]=size(B);

ifjA~=iB

R='error.Innermatrixdimensionsmustagree.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=A*B;

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

执行A右除B矩阵,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

B=eval((get(handles.Matrix_B,'String')));

[iAjA]=size(A);

[iBjB]=size(B);

ifiA~=iB、

R='error.Matrixdimensionsmustagree.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=A\B;

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

执行A.*B,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

B=eval((get(handles.Matrix_B,'String')));

result=A.*B;

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

执行A./B,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

B=eval((get(handles.Matrix_B,'String')));

result=A./B;

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

执行A的转置,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

result=A';

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

执行A右除B,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

B=eval((get(handles.Matrix_B,'String')));

[iAjA]=size(A);

[iBjB]=size(B);

ifiA~=iBþ

R='error.Matrixdimensionsmustagree.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=A/B;

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

执行求A的行列式,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

[iAjA]=size(A);

ifiA~=jAR='error.Matrixmustbesquare.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=det(A);

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

执行求A的逆,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

[iAjA]=size(A);

ifiA~=jA

R='error.Matrixmustbesquare.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

ifdet(A)==0

R='error.Matrixissingulartoworkingprecision.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=inv(A);

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

end

执行求A的非共轭转置,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

result=A.';

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

执行求解系数阵为方阵且非奇异的线性方程组,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

B=eval((get(handles.Matrix_B,'String')));

[iAjA]=size(A);

[iBjB]=size(B);

ifiA~=iB

R='error.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

ifiA~=jA

R='error.Matrixmustbesquare.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

ifdet(A)==0

R='error.Matrixissingulartoworkingprecision.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=A\B;

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

end

end

执行求A的秩,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

result=rank(A);

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

执行求A的平方,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

[iAjA]=size(A);

ifiA~=jA

R='error.Inputsmustbeascalarandasquarematrix.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=A^2;

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

执行求A的立方,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

[iAjA]=size(A);

ifiA~=jA

R='error.Inputsmustbeascalarandasquarematrix.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=A^3;

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

执行求A的特征值,其执行代码如下

A=eval((get(handles.Matrix_A,'String')));

[iAjA]=size(A);

ifiA~=jA

R='error.Matrixmustbesquare.';

set(handles.Answer,'String',R)

guidata(hObject,handles);

else

result=eig(A);

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

end

执行求A开平方根,其执行代码如下

A=eval(get(handles.Matrix_A,'String'));

result=sqrt(A);

R=num2str(result);

set(handles.Answer,'String',R)

执行计算矩阵范围(默认为2范数),其执行代码如下

A=eval(get(handles.Matrix_A,'String'));

result=norm(A);

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

执行对A的分解,其执行代码如下

A=eval(get(handles.Matrix_A,'String'));

[LU]=lu(A);

result=[L;U];

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

执行将矩阵A化为最简阶梯矩阵,其执行代码如下

A=eval(get(handles.Matrix_A,'String'));

result=rref(A);

R=num2str(result);

set(handles.Answer,'String',R)

guidata(hObject,handles);

4)对输出进行设计

输出框内有新添加的

,使经过计算后的式子通过输出框显示。

6.运行计算器

A+B

A-B

A*B

 

A/LB

A.*B

 

A./B

A’

 

A/R

det(A)

inv(A)

A.’

Ax=B

Rank(A)

A^2

A^3

eig(A)

Sqrt(A)

Norm(A)

Lu(A)

rref(A)

7.总结

课程设计到此已告一段落,经过与同学的交流和上网搜寻资料,在老师给与的时间内,设计基本完成。

在本次设计中,学到很多有用的知识,也积累了不少宝贵的经验。

从一开始对MATLAB的模糊认识,到现在能用它制作一个简易矩阵计算器,对我个人来说是一个进步,因为在此期间遇到过很多难题,但还是一一去解决了,比如说对计算器的排版,对执行代码的设计等等。

设计完毕留给我的是欣喜,不过计算器仍存在一些不足与漏洞,有待以后去不断完善,并且我知道自己要学的东西还多着呢,希望今后多加学习,争取达到做我想做的东西的境界。

(好远)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1