matlab学习002-函数及流程控制语句

目录

一,matlab编程基础

1)matlab脚本和函数文件

①脚本文件

②函数文件

2)函数的定义和调用

①定义

②调用

3)程序流程控制

[①使用for求 1+2+2^2+......+2^62+2^63之和](#①使用for求 1+2+2^2+……+2^62+2^63之和)

②使用while语句求1+2+2^2+......+2^62+2^63之和

③使用matlab的内置函数sum求1+2^1+2^2+......+2^62+2^63之和


一,matlab编程基础

matlab有两种使用方式:一种是直接交互式的命令行操作方式;另外一种是使用M文件的编程工作方式。matlab语言语法简练,功能强大,同时支持结构化程序设计和面型对象程序设计。接下来我将开始学习matllab编程相关的知识点。

1)matlab脚本和函数文件

matlab程序文件为文本格式的M文件,其扩展名为".m",M文件有脚本文件和函数文件两种。

①脚本文件

脚本文件相当于命令行操作的批处理。当需要在命令行输入较多语句时,可以把这些相关的语句编辑在一起形成脚本文件,以方便重复使用。运行脚本文件时,只需要输入文件名,matlab就会自动按顺序执行文件中的命令。

**脚本文件没有输入输出变量,也没有独立工作空间,而是使用matlab的主工作空间。**即脚本文件产生的数据会一直保存在matlab的工作空间,除非用户运行clear命令将它们清除。

因此,脚本文件与函数文件最根本的区别就是有无function语句。

例如,下面👇这个M文件就是脚本文件:

②函数文件

若M文件的第一个程序行包含关键字function,则该M文件就是函数文件。如果在脚本文件开头第一行写上function xxx语句,那么该脚本文件就会变为一个没有输入与输出参数的函数文件。

需要注意的是,一个函数文件可以有多个函数 。与脚本文件不同,函数文件通常有输入输出参量(也可以选择没有)。函数文件运行时,有独立的工作空间,称为函数工作空间。函数文件内部使用的变量仅在该工作空间中起作用。当函数执行完成时,这些内部变量将随着函数工作空间一起被清除。

2)函数的定义和调用

①定义

函数的组成:function[返回值1(输出参数1),返回值2,...]=[输入值1(输入参数1),输入值2]

function [y1,y2]=函数名(x1,x2)

虽然函数名也可以不和文件名相同,但是为了方便识别知道对应的函数在哪个文件中,最好函数名和M文件名一致。如下,我定义了一个functiona函数用来返回两个值的相加和相减,如下👇

function [y1,y2]=functiona(x1,x2)
y1=x1+x2;  % 输出参数y1
y2=x1-x2;  % 输出参数y2

②调用

[输出参数1,输出参数2,....]=函数名(输入参数1,输入参数2,....)

在调用函数的时候需要在函数前面加上需要返回的参数有哪些,如上👆我想要同时返回y1和y2的值,因此我就用一个数组将这两个变量放在一起。

在调用函数的时候我没有使用分号结尾,如果使用分号结尾就不会显示相应的输出参数。

3)程序流程控制

matlab程序的流程控制和众多编程语言一样,也有if判断语句,for和while循环语句,switch匹配语句。还有对应的关键字break跳出循环,continue跳到下一个循环及return强制返回值。

唯一不同的就是:

  1. matlab中的控制语句的条件(表达式)不需要用空格包裹
  2. 不使用花括号来区分每块代码
  3. 不用分号在每句语句后面结尾
  4. 每个控制语句的最后都会有end结尾

在使用for语句 时,指定循环次数 可以使用:变量名=表达式(一般为区间 a:b)

①使用for求 1+2+2^2+......+2^62+2^63之和

function sum=functiona(x1,x2)
sum=0;  % 用于存储每一次相加的结果
for i=0:x2  %x从0取到输入参数x2的值
    sum=sum+x1^i;  % i=0,sum=0+2^0=0+1=1
end   % end用与结束语句的关键字

因为计算出来的数据太大,程序就用科学计数法来表示输出的结果:1.8447e+19-=1.8847×10^19

当我让计算的范围缩小到只需要计算到2的3次方,结果就会是:2^0+2^1+2^2+2^3=15。如下图👇

②使用while语句求1+2+2^2+......+2^62+2^63之和

function sum=functiona(x1,x2)
sum=0;  % 用于存储每一次相加的结果
i=0;    % 循环次数初始值
while i<=x2
    sum=sum+x1^i;  % i=0,sum=0+2^0=0+1=1
    i=i+1;
end   % end关键字用于语句的结束

③使用matlab的内置函数sum求1+2^1+2^2+......+2^62+2^63之和

如果我不想用for循环或者是while循环,就可以使用sum函数,关于sum函数的官方解释如下:

了解具体的参数之后开始编写代码:

function sum1=functiona(x1,x2)
i=0:x2;
sum1=sum(x1.^i);  % 用于存储每一次相加的结果

实现效果:

有问题请在评论区留言或者是私信我,一天8h在线。

相关推荐
今天我又学废了10 分钟前
Scala学习记录,List
学习
杨荧14 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
白子寰21 分钟前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
王俊山IT33 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
为将者,自当识天晓地。35 分钟前
c++多线程
java·开发语言
小政爱学习!37 分钟前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
k09331 小时前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
神奇夜光杯1 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue1 小时前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧1 小时前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv