Matlab

  • 脚本
    • 脚本的编辑
  • 程序控制结构
    • 顺序结构
    • 选择结构
    • 循环结构
  • 函数
    • 函数文件
    • 匿名函数
  • 经典案例——猴子吃桃子

脚本

Matlab命令执行方式有交互式的命令执行与脚本两种方式。交互式的命令执行方式,在命令行窗口逐条输入命令,MATLAB逐条解释执行;而脚本方式,将有关命令编成程序存储在一个扩展名为.m的文件中,每次运行该脚本,Matlab就会自动依次执行脚本中的命令。

脚本的编辑

首先,在编辑脚本之前,先了解Matlab的编辑器。Matlab编辑器界面包括功能区和编辑区两个部分。如图:

功能区:

编辑区:

然后,选择启动Matlab编辑器的方式:

  • 点击Matlab桌面的“主页”,点击选项卡工具条中的“新建脚本”
  • Matlab命令行窗口中输入命令:
    edit 文件名

最后,进行编辑脚本。建立一个脚本,其功能是:用两个实变量R、M生成复变量RM,然后运行该脚本。建立脚本文件并以文件名setcomp.m保存在当前目录下。

%示例:在指定的Matlab工作目录下,对命令窗口进行输入:
>> edit setcomp
%创建文件名后会自动跳转在编辑器下,然后输入如下代码并保存:R=[1,2,3;4,5,6];
M=[11,12,13;14,15,16];
RM=complex(R,M);>> %再在命令行窗口中输入脚本文件名,按Enter运行:
>> setcomp
>>%运行后,再输入RM,查看结果:
>> RMRM =1.0000 +11.0000i   2.0000 +12.0000i   3.0000 +13.0000i4.0000 +14.0000i   5.0000 +15.0000i   6.0000 +16.0000i

程序控制结构

程序控制方式是指在程序控制下进行的数据传递方式。程序控制结构是指以某种顺序执行的一系列动作,用于解决某个问题。其中,程序控制结构包括顺序、选择、循环这三种的基本控制结构。另外,每种结构仅有一个入口和出口。由这3种基本结构组成的多层嵌套程序称为结构化程序。

顺序结构

顺序结构的程序设计是最简单的,按照解决问题的顺序写出相应的语句,计算机按此顺序逐条执行语句,当一条语句执行完毕,控制自动转到下一条语句。

数据的输入
input()函数:通过键盘的输入获取数据
调用格式:data = input(提示信息),其中,提示信息为字符串,用于提示用户输入相应的数据。
注:若要输入字符串,需要前后加单撇号或双引号,界定字符串的起始和结束;或调用另一种格式:data = input(提示信息,‘s’)

数据的输出
disp()函数:用于在命令窗口显示变量和表达式的值
调用格式:disp(输出项),其中,输出项既可以为字符串,也可以为矩阵。

%示例:
>> matrix1 = input('创建2x3阶元素全为1的矩阵:')
创建2x3阶元素全为1的矩阵:ones(2,3)matrix1 =1     1     11     1     1>> name = input('请输入你的名字:')
请输入你的名字:'小明'name ='小明'>> %或者:
>>  name = input('请输入你的名字:','s')
请输入你的名字:小明name ='小明'>> disp(matrix1)1     1     11     1     1>> disp(name)
小明

选择结构

选择结构又称为分支结构。当程序执行到控制分支的语句时,首先判断条件,根据条件表达式的值选择相应的语句执行。分支结构包括单分支、双分支和多分支三种形式。

(1)单分支:
if  条件表达式语句块(2)双分支:
if  条件表达式1语句块1
else语句块2(3)多分支:
if  条件表达式1语句块1
elseif  条件表达式2语句块2
…
elseif  条件表达式n语句块n
else语句块n+1
end
%在指定的Matlab工作目录下,对命令窗口进行输入:
>> edit opt %创建脚本
%创建文件名后会自动跳转在编辑器下,然后输入如下代码并保存:%示例:
%输入一个字符,若为大写字母,则输出其对应的小写字母;
%若为小写字母,则输出其对应的大写字母;
%若为数字字符则输出其对应数的平方,若为其他字符则原样输出。
str = input("请输入一个字符:","s");
if str >= 'A' && str <= 'Z'disp(lower(str));
elseif str >= 'a' && str <= 'z'disp(upper(str));
elseif str >= '0' && str <= '9'disp(str2double(str)^2);
elsedisp(str);
end>> %再在命令行窗口中输入脚本文件名,按Enter运行:
>> edit opt
>> opt
请输入一个字符:S
s

循环结构

循环结构是当程序执行到循环控制语句时,根据循环判定条件对一组语句重复执行多次。循环结构可以看成是一个条件判断语句和一个向回转向语句的组合,可以实现有规律的重复计算处理。另外,循环结构的三个要素:循环变量、循环体和循环终止条件。

break语句用于终止循环的执行;continue语句控制跳过循环体中的某些语句。
(1)for语句:
for 循环变量=表达式1:表达式2:表达式3循环体语句
end
其中,表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。(2)while语句:
while 条件表达式循环体语句
end
%在指定的Matlab工作目录下,对命令窗口进行输入:
>> edit NarcissisticNumber %创建脚本
%创建文件名后会自动跳转在编辑器下,然后输入如下代码并保存:%示例:
%一个各位数字的立方和等于该数本身的3位整数称为水仙花数。输出全部水仙花数
Nar_num = []; %创建空矩阵存放结果
for n = 100:999bai = fix(n/100);              %求n的百位数字shi = mod(fix(n/10),10);       %求n的十位数字ge = mod(n,10);                %求n的个位数字if n == bai^3+ shi^3 + ge^3Nar_num=[Nar_num,n];                %存入结果end
end
disp(Nar_num)>> %再在命令行窗口中输入脚本文件名,按Enter运行:
>> NarcissisticNumber153   370   371   407

函数

计算机的函数,是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时,还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理;所谓出口,就是指函数的函数值,在计算机求得之后,由此口带回给调用它的程序。函数能提高应用的模块性与代码的重复利用率。

函数文件

在Matlab中,扩展名为.m的文件称为M文件,是一种程序化的编程语言,分为脚本文件(scripts)和函数文件(functions)。而函数文件是在脚本文件的基础上多添加了一行函数定义行。

函数文件的基本结构
1.函数名的命名规则与变量名的命名规则相同;
2.有多个参数时,参数和参数之间用逗号分隔;
3.若输出参数多于一个,则应该用方括号括起来。

函数文件的基本格式
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句

函数调用的基本格式
[输出实参表]=函数名(输入实参表)
函数调用时各实参出现的顺序,应与函数定义时形参的顺序一致

%点击"新建",再点击"函数",创建函数文件
%编写函数文件,求1/(m+1)+1/(m+2)+…+1/(m+n)与1/m(m+1)+1/(m+1)(m+2)+…+1/(m+n−1)(m+n)。
function [s1,s2]=sumfraction(m,n)
%SUM  sumfraction.m calculates sum of fractions
%m          区间下界
%n          区间上界
%s1         1/(m+1)+1/(m+2)+...+1/(m+n)
%s2         1/m/(m+1)+1/(m+1)/(m+2)+...+1/(m+n-1)/(m+n)
s1=0;s2=0;
for k=m+1:m+ns1=s1+1/k;s2=s2+1/(k-1)/k;
end>> %在命令窗口调用以上定义的函数,示例:
>> %求1/(8+1)+1/(8+2)+…+1/(8+8)与1/8*(8+1)+1/(8+1)(8+2)+…+1/(8+8−1)(8+8)。
>> %形参m、n对应的值分别为8、8。
>> [s1,s2]=sumfraction(8,8)s1 =0.6629s2 =0.0625

匿名函数

匿名函数是一种特殊的函数定义形式,不存储成函数文件。匿名函数的调用与标准函数的调用方法一样,但定义只能包含表达式。通常,匿名函数与函数句柄变量相关联,通过句柄变量调用该匿名函数。

定义匿名函数的基本格式
函数句柄变量=@(匿名函数输入参数)匿名函数表达式

%示例:
>> func = @(x)8*x+8;
>> num = 88;
>> number = func(num)number =712

经典案例——猴子吃桃子

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个 。以后每天早上都吃前一天剩下的一半且多一个 。到第 10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子?请用循环编程解决该问题。

%解答:
>> %普通循环算法:
>> x(1)=1;
>> for i=1:9
x(i+1)=2*x(i)+2;
end
>> x(10)ans =1534>> %递归循环算法:
>> edit MonkeyEatSpeechfunction [S] = MonkeyEatSpeech(x)
if x == 10S = 1;
elseS = 2+2*MonkeyEatSpeech(x+1);
end>> S = MonkeyEatSpeech(1)S =1534

Matlab:程序设计相关推荐

  1. c2064 项不会计算为接受0个参数的函数_无网格法理论与Matlab程序设计(6)——传统径向基点插值(RPIM)形函数...

    参考资料 G.R.Liu Y.T.GU著 王建明 周学军译 <无网格法理论及程序设计> 数值实现 Matlab 2019a 前情回顾 形式主义的居士:无网格法理论与Matlab程序设计(1 ...

  2. matlab平面问题编程,有限元平面矩形单元MATLAB程序设计.docx

    有限元平面矩形单元MATLAB程序设计 有限元平面矩形单元MATLAB程序设计摘要本论文主要研究内容是有限元平面矩形单元的基本原理和MATLAB软件的图形用户界面及函数编程的基本知识,并根据有限元平面 ...

  3. 实验5 matlab程序设计2,实验5 Matlab程序设计2

    实验5 Matlab程序设计2 1. 实验目的: 2. 掌握建立和执行M文件的方法: 3. 掌握实现选择结构的方法: 4. 掌握实现循环结构的方法. 5. 熟悉利用向量运算来代替循环操作的方法. 6. ...

  4. matlab程序设计图像匹配,灰度,归一化算法,快速匹配。有代码好用。转载

    图像匹配matlab程序设计:1. 概念解释,2.数字图像匹配算法设计:⑴基于灰度的归一化匹配算法⑵基于灰度的快速模板匹配算法.三.相应matlab程序设计:1.数字图像匹配相关函数 2.数字图像匹配 ...

  5. matlab用for编写乘法表,实验二 Matlab程序设计基本方法1

    实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一.实验目的: 1.熟悉MATLAB 程序编辑与设计环境 2.掌握各种编程语句语法规则及程序设计方法 3.函数文件的编写和设计 4.了 ...

  6. matlab编写文件格式,MATLAB程序设计教程(4)——MATLAB文件操作

    MATLAB程序设计教程(4)--MATLAB文件操作 第4章MATLAB文件操作 4.1 文件的打开与关闭 4.2  文件的读写操作 4.3  数据文件定位 4.1 文件的打开与关闭 4.1.1 文 ...

  7. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——12

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--12 一 二 三 四 五 一 syms n x; s1=symsum(1/(2*n-1),n,1,10) s2=symsum(n*2+x^(n ...

  8. matlab中sqp的算法原理_最优化方法及其Matlab程序设计 马昌凤

    内容简介<最优化方法及其Matlab程序设计>较系统地介绍了非线性最优化问题的基本理论和算法,以及主要算法的Matlab程序设计,主要内容包括(精确或非精确)线搜索技术.最速下降法与(修正 ...

  9. MATLAB程序设计与应用 4.1 M文件

    MATLAB程序设计与应用 文章目录 MATLAB程序设计与应用 4. 第4章 MATLAB程序流程控制 4.1 M文件 4.1.1 M文件的建立与打开 4.1.2 M文件的分类 4. 第4章 MAT ...

  10. 实验三matlab实现,实验三matlab程序设计.docx

    实验三matlab程序设计.docx 共 24 页,第 27页 27 2014秋2012级<MATLAB程序设计>实验报告 班级:软件C121 姓名:冯杨腾 学号:125692 实验三 M ...

最新文章

  1. Matlab for Linux常用设置
  2. 营销型企业更因紧跟营销潮流
  3. java挖矿算法_Scrypt 不止是加密算法,也是莱特币的挖矿算法
  4. python的数值类型和运算符_python的数值类型和运算符
  5. 【Python】保留小数点后两位精度
  6. 尚学linux课程---8、rpm软件包安装
  7. Linux部署动态网页,Nginx发布支持动态配置的开源Web服务器
  8. java 通过反射得到命名空间_利用反射得到一个命名空间下的所有类,并调用?...
  9. 一键托管,阿里云全链路追踪服务正式商用:成本仅自建1/5或更少
  10. 排序千万级数据_从千万级房产成交量排名,窥探中国城市的真实家底
  11. 从gbdt到xgboost
  12. 【★原创★】夜晚,不要让电白白流失!
  13. Image.FrameDimensionsList 属性-----具体使用案例
  14. 重构和代码异味——通往更整洁的代码
  15. IPC Hi3518EV300开发板——1. Linux系统移植
  16. lua 常用数据类型总结
  17. 万字长文:用Python轻轻松松操作Excel、Word、CSV!
  18. 2013年新会计准则常用会计科目表经典注释整理【最全】
  19. 真正牛逼的人,都是极简主义者!!
  20. 希尔排序的时间复杂度为什么能小于O(n^2)

热门文章

  1. G20线上视频会议,各国直播间场景
  2. 云服务商选择攻略|中机智库干货
  3. 华为防火墙IPSec对接飞塔
  4. SIKI学院:MySQL数据库从零到精通:八:课时 10 : 09-如何利用MySQL Workbench查看数据库和创建
  5. 200 万年薪!西交大 2 位计算机博士入选华为天才少年
  6. 史上最简单的 MySQL 教程(二)「关系型数据库」
  7. 【考研英语-阅读-基础】中心思想题(干扰选项排除)
  8. 专访华为开发者社区唐九洲:与开发者 “在一起,梦飞扬”
  9. slf4j配置与解析
  10. 安装打印机一直显示设备未连接到服务器,HP M401驱动安装失败 一直显示连接设备无法安装的解决办法...