许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  第9.1章:MATLAB程序设计详解

第9.1章:MATLAB程序设计详解

阅读数 7
点赞 0
article_banner

1.1 命令文件

在平常对于实际应用中,我们有时候需要输出较多的命令,直接用命令行就显得很麻烦,我们就可以利用M文件来实现。在实际运行这些命令时,只需要其他M文件或者命令行调用文件名,系统就会运行所写M文件里面的命令。

 M文件可以在任何编辑器上进行编辑,MATLAB也自带了相应的M文件编辑器。


    MATLAB的编辑器
   

(1)计算阶乘的 实例

首先我们就可以新建立一个M文件(点击编辑器的新建),保存为Factorial.m文件

Factorial.m

function y=f(x)%MATLAB阶乘设计实验%用来求阶乘的函数%参数为任何大于0的数 if x<0    error('你输入了小于0的数');    return ;else     if  x==0    y=1;     else    y=1;    for x=1:x        y=y*x;    end    end end     

之后我们就使用所写的阶乘计算函数。

y=input('请你输入要计算的阶乘数');s=Factorial(y);fprintf('你所做的阶乘结果为s=%d\n',s);



     输出的结果
    


1.2 函数文件

函数文件第一行都是以function开始的,我们上面所举的例子就是,他也是函数文件的标志。所谓函数文件是实现某些特定的功能而编写的,例如MATLAB里面提供的各种函数,其实就是函数文件。他就是如果C语言里面我们函数一样,可以自己编写,自己调用。

(2)分段函数实例

%%f.m%计算某个分段函数function y=f(x)if x<3    y=2*x;elseif x>=3&&x<8     y=x^2;else     y=x+2;end

2.1 顺序结构

 任何的程序都大概可以分为顺序结构,循环结构,分支结构三种。

 顺序结构最为简单,是最容易学的一种结构。

%顺序结构例子%计算两个矩阵的差disp('To calculate the difference between the two matrices')A_1=[1,2;3,4];B_1=[3,4;5,6];disp(A_1);disp(B_1);disp('The difference between A_1 and B_1')C_1=B_1-A_1



     对应的输出结果
    

2.2 循环结构

 循环结构也是MATLAB里面一个重要的结构之一。他与C语言的区别在于,每一个循环结尾需要加一个end。如for -end  ;while -end。具体下面介绍两种用法。

% for 变量=表达式%     可执行语句1%     .........%     可执行语句N% endfunction y=f(x) for i=1:length(x)-1     for j=1:length(x)-1         if(x(j)>x(j+1))             temp=x(j);             x(j)=x(j+1);             x(j+1)=temp;         end     end end disp('排好的顺序是');x



     排序结果图
    

2.3 选择结构

MATLAB语言作为一种编程语言,自然也有语言所具备的选择结构。MATLAB提供了三种选择结构

if—else-end结构;swtich-case-end结构;try-catch-end结构

%此函数是用来计分的function jifen(Name,Score)%其中name和SCore为参数%name为学生姓名%Score中元素为学生分数n=length(Name);% %----------------%   优秀|   85-100|%   良好|   70-84 |%   及格|    60-69|% 不及格|    0-60 |% -----------------for i=0:15    A_level{i+1}=85+i;    if i<=14       B_level{i+1}=70+i;          if i<=9       C_level{i+1}=60+i;           end    endend%创建存贮成绩等级的单元数组level=cell(1,n);%创建结构体变量S=struct('Name',Name,'Score',Score,'level',level);%根据学生成绩得出相应的等级for i=1:n    switch S(i).Score        case A_level             S(i).level='优秀';        case B_level             S(i).level='良好';        case C_level              S(i).level='及格';        otherwise            S(i).level='不及格';    endendfprintf('你所输入的学生等级如下\n');disp(['学生姓名',blanks(4),'得分',blanks(4),'等级']);for i=1:n    r=length(S(i).Name);    %  fprintf('%s %d %s\n',S(i).Name,S(i).Score,S(i).level) disp([S(i).Name,blanks(10-r),num2str(S(i).Score),blanks(7-r),S(i).level]); end

我们命令行输入以下时候会出现如下结果

>> Name={'马伟','易烊千玺','李嘉欣','boret','Lisa','weiwei'};>> Score={99,99,77,77,65,45};>> jifen(Name,Score)你所输入的学生等级如下学生姓名    得分    等级马伟        99     优秀易烊千玺      99   优秀李嘉欣       77    良好boret     77  良好Lisa      65   及格weiwei    45 不及格

 最后我们把今天所写的代码总结一下吧,加入成绩排序系统,做一个小小的成绩录入系统。

附录(大家可以尝试一下try—catch-end)

try

语句组1

catch

语句组2

end

%此函数是用来计分的function jifen(Name,Score)%其中name和SCore为参数%name为学生姓名%Score中元素为学生分数n=length(Name);% %----------------%   优秀|   85-100|%   良好|   70-84 |%   及格|    60-69|% 不及格|    0-60 |% -----------------for i=0:15    A_level{i+1}=85+i;    if i<=14       B_level{i+1}=70+i;          if i<=9       C_level{i+1}=60+i;           end    endend%创建存贮成绩等级的单元数组level=cell(1,n);%创建结构体变量S=struct('Name',Name,'Score',Score,'level',level);%根据学生成绩得出相应的等级for i=1:n    switch S(i).Score        case A_level             S(i).level='优秀';        case B_level             S(i).level='良好';        case C_level              S(i).level='及格';        otherwise            S(i).level='不及格';    endendfprintf('你所输入的学生等级如下\n');disp(['学生姓名',blanks(4),'得分',blanks(4),'等级']);for i=1:n    r=length(S(i).Name);    %  fprintf('%s %d %s\n',S(i).Name,S(i).Score,S(i).level) disp([S(i).Name,blanks(10-r),num2str(S(i).Score),blanks(7-r),S(i).level]); end%对成绩进行排序,重新输出排序好的结果for i=1:n-1    for i=1:n-1    if(S(i).Score>S(i+1).Score)        temp=S(i);              S(i)=S(i+1);                S(i+1)=temp;    end    endend fprintf('排好的顺序是\n'); disp(['学生姓名',blanks(4),'得分',blanks(4),'等级',blanks(5),'排名']); for i=1:n      disp([S(i).Name,blanks(6),num2str(S(i).Score),blanks(7),S(i).level,blanks(5),num2str(i)]);            end 



     运行结果
    


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空