Matlab:程序设计

Matlab

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

脚本

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

脚本的编辑

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

功能区:
Matlab:程序设计_第1张图片

编辑区:
Matlab:程序设计_第2张图片

然后,选择启动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,查看结果:
>> RM

RM =

   1.0000 +11.0000i   2.0000 +12.0000i   3.0000 +13.0000i
   4.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     1
     1     1     1

>> name = input('请输入你的名字:')
请输入你的名字:'小明'

name =

    '小明'

>> %或者:
>>  name = input('请输入你的名字:','s')
请输入你的名字:小明

name =

    '小明'

>> disp(matrix1)
     1     1     1
     1     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);
else
    disp(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:999
    bai = fix(n/100);            	%求n的百位数字
    shi = mod(fix(n/10),10);    	%求n的十位数字
    ge = mod(n,10);             	%求n的个位数字
    if n == bai^3+ shi^3 + ge^3
       Nar_num=[Nar_num,n];             	%存入结果
    end
end
disp(Nar_num)

>> %再在命令行窗口中输入脚本文件名,按Enter运行:
>> NarcissisticNumber
   153   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+n
    s1=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+81)(8+8)>> %形参m、n对应的值分别为88>> [s1,s2]=sumfraction(8,8)

s1 =

    0.6629


s2 =

    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 MonkeyEatSpeech

function [S] = MonkeyEatSpeech(x)
if x == 10
    S = 1;
else
    S = 2+2*MonkeyEatSpeech(x+1);
end

>> S = MonkeyEatSpeech(1)

S =

        1534

你可能感兴趣的:(初识,Matlab,matlab,程序设计)