MATLAB教程_台大郭彦甫-03Structured_Programming_&_Function(结构化程式与自定义函数)

这篇教学内容涵盖了MATLAB的基础编程要素,包括脚本编写、结构化编程和自定义函数。讲解了如何创建和运行.m文件,使用function函数,注解方法,以及代码分段执行。此外,还介绍了调试技巧如设置断点,代码智能缩进,以及流程控制语句如if, for, while, switch等。最后提到了一些脚本编写的小技巧和函数定义的方法,并给出了几个实际应用示例。
摘要由CSDN通过智能技术生成

教学内容:
• Script writing(撰写matlab程序语言)
• Structured programming(结构化编程)
• User-defined function(自定义函数)

MATLAB Script

写的程序要被保存在(.m)文件中。

Start A Script (.m) File

创建一个文件,点击
在这里插入图片描述
中文版:新建脚本
文件名不能以数字开头,区分大小写。

Script Editor(编辑器)

在编辑器里写,可以将代码保存在文件中,在命令行窗口写不会保存。所以以后可以在新建一个Script里写代码。

输入范例,运行:
在这里插入图片描述
如何使用function函数
点击fx图标,里面有所有的你想要用的函数。

注解符号:%
1.自己打%符号;
2.在这里插入图片描述
3.选择要注释的语句,右键点击,选择注释即可。

两个(%%)符号:
将整个Script代码文件,分成好几个Section部分。
这要做就可以只执行一部分代码,有利于Debug
点击Run Section(运行节) 只运行部分代码。
点击Run(运行),运行整个文件。

在这里插入图片描述
Debug:
点击最左边一列的横线,就会出现Debug Knot断点
程序执行到这就会停止,可以检查上述运行的具体过程。
命令行窗口的">>“变成"K>>”。

在这里插入图片描述
代码智能缩进Smart Indent:
ctrl+I

Script Flow

代码执行顺序:每一行从上到下。

结构化程序设计Structured programming
使用一些循环等使程序看起来更加简洁。

一些指令

if,elseif,else如果条件为true,则执行语句
for执行指定次数的语句
switch,case,otherwise执行几组语句中的一组
try,catch执行语句并捕获结果错误
while在条件为真时重复执行语句
break终止for或while循环的执行
continue将控制传递到for或while循环的下一次迭代
end终止代码块,或指示最后一个数组索引
pause暂缓执行
return将控制返回到调用函数

Relational (Logical) Operators

逻辑运算符

OperatorMeaning
<小于
<=小于等于
>大于
>=大于等于
==等于
~=不等于
&&与(和)
||

a>10:两个结果:1—>正确;0—>错误

if elseif else

if condition1
    statement1
elseif condition2
    statement2
else
    statement3
end

注意:以end结束
elseif和else可写可不写。

举例:判断余数是奇数还是偶数。
function求余数:rem(a,b)
remainder余数
在这里插入图片描述

switch

switch expression
    case value1
        statement1
    case value2
        statement2
.
.
    otherwise
        statement
end

注意:以end结尾

例子:
在这里插入图片描述

while

while expression
    statement
end

注意:以end结尾

例子:
B = prod(A) 返回 A 的数组元素的乘积
A=1:n
A=[1 2 3…n]
prod(A)=n!
n!<1*10100
在这里插入图片描述
在这里插入图片描述
练习:
使用while计算1+2+3+…999

在这里插入图片描述

for

for variable=start : increment : end
    commands
end

注意:以end结束
increment 增量

例子:
n=1,a(1)=21
n=2,a(2)=22
n=3,a(3)=23

在这里插入图片描述
在这里插入图片描述
注意:如果想要改变a数组里面的元素,首先要先clear a,才行。
否则,就算改变了代码,输出的还是上面的元素。

题目:
输出21,23,25,27,29

在这里插入图片描述
在这里插入图片描述

Pre-allocating Space to Variables

给变量提前分配好空间比边运算边分配空间所花的时间更短。

举例:
比较程序A和程序B所用的时间
程序A没有提前分配空间,程序B有提前配空间。

如何计算程序所花的时间?
tic 计时开始

toc 计时结束

在这里插入图片描述
在这里插入图片描述
可见A比B慢,即未提前分配空间更慢。

题目:
把数组A复制到数组B中,把数组B中的复数元素改为0。

在这里插入图片描述
在这里插入图片描述

break

终止for或while循环的执行

Tips for Script Writing

写程序的一些小技巧:
在写程序之前,先输入命令:
clear all:清空所有的变量(如果不清除,变量还是以前的值)
close all:把图形全部关掉

clc:清空命令行窗口

使用分号;不输出一些语句

如果一条语句太长,使用"…",再按回车,将一条语句变成两行,代表这两行代码是一条语句;直接换行会显示错误。

A = [1 2 3 4 5 6; …
6 5 4 3 2 1];

如果程序出现宕机,例如一直运行,使用ctrl+c暂停程序运行。

Scripts vs. Functions

Scripts和Functions是不同的,Functions是已经写好的函数(代码),可以直接调用。

如何自定义Functions函数?
首先观察Matlab自带的Functions是怎么写的:

以mean为例:
mean—>求平均值

如何看到mean的底层代码?
输出指令:>> edit(which(‘mean.m’))

在这里插入图片描述
一个Function具备:
Keyword: function
Output Argument(s):输出
Function Name (same as file name .m):函数名(方法名),与文件名一致。
Input Argument(s):输入
Online Help:注解
MATLAB Code:源码

不一定需要输入或输出。

User Define Functions

自定义function:

例1:计算自由落体的位移。
给出初速度,初位移,下落的时间,计算下落的位移。

在这里插入图片描述
注意:使用的是“点乘”,这样如果给出的初速度,初位移,和时间都是一个数组的话,就能一次算出多个结果;如果是叉乘就算不出来。

在这里插入图片描述
例2:计算加速度和合外力

在这里插入图片描述
注意:这里要输出两个,用[ ],得到这两个值也要用[ ]接收。

题目:
将华氏摄氏度转换为摄氏度。
只要调用函数,就会一直显示输出,不输入任何东西直接回车则程序结束。
在这里插入图片描述
注意:
s = num2str(A) 将数值数组转换为表示数字的字符数组。

name = ‘Alice’;
age = 12;
X = [name,’ will be ‘,num2str(age),’ this year.’];
disp(X)

x = input(prompt) 显示 prompt 中的文本并等待用户输入值后按 Return 键。
str = input(prompt,‘s’) 返回输入的文本,而不会将输入作为表达式来计算。

Function Default Variables

函数默认变量

inputname函数输入的变量名称
mfilename当前正在运行的代码的文件名
nargin函数输入参数数目
nargout函数输出参数数目
varargin可变长度输入参数列表
varargout可变长度的输出参数列表

Function Handles

函数句柄 = @(输入变量) 输出变量
更接近数学上的定义函数,f(x)=exp(-2*x)

f = @(x) exp(-2*x);
x = 0:0.1:2;
plot(x, f(x));

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值