MatLab 03_MatLab基础编程语法

一、MATLAB运算

1.1 算数运算

运算符 名称 示例 法则或使用说明
+ C=A+B 矩阵加法法则,即 C(i,j)=A(i,j)+B(i,j)
C=A-B 矩阵减法法则,即 C(i,j)=A(i,j)-B(i,j)
C=A*B 矩阵乘法法则
/ 右除 C=A/B 定义为线性方程组 XB=A 的解,即 C=A/B= AB-1
\ 左除 C=A\B 定义为线性方程组 AX=B 的解,即 C=A\B= A-1B
^ 乘幂 C=A^B A、B 其中一个为标量时有定义
共轭转置 B=A’ B 是 A 的共轭转置矩阵
.* 数组乘 C=A.*B C(i,j)=A(i,j)*B(i,j)
./ 数组右除 C=A./B C(i,j)=A(i,j)/B(i,j)
.\ 数组左除 C=A.\B C(i,j)=B(i,j)/A(i,j)
.^ 数组乘幂 C=A.^B C(i,j)=A(i,j)^B(i,j)
.’ 转置 A.’ 将数组的行摆放成列,复数元素不做共轭

1.2 关系运算

运算符 名称 示 例
< 小于 A<B
<= 小于等于 A<=B
> 大于 A>B
>= 大于等于 A>=B
== 恒等于 A==B
~= 不等于 A~=B

1.3 逻辑运算

运算符 名 称 示 例
& A&B
| A|B
~A
&& 先决与 A&&B
|| 先决或 A||B

二、MATLAB程序设计

2.1 MATLAB程序存储的 M文件

M文件就是以 .m 为扩展名的文本文件,它有两种类型:脚本(Script)和 函数文件(Function),主要区别如下:

  • 脚本文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可返回输出参数。
  • 脚本文件对 MATLAB 工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。
  • 脚本文件可以直接运行,在 MATLAB 命令行窗口输入脚本文件的名字,就会顺序执行脚本文件中的命令,而函数文件不能直接运行,要以函数调用的方式来调用它。

1)脚本(Script)

M文件的创建

  • 方式一:点击主页->新建
  • 方式二:命令行输入edit 文件名

M文件的调用  以脚本文件为例,输入以下内容并保存为exch.m文件

1
2
3
4
5
6
clear;
a=1:10;
b=[11,12,13,14;15,16,17,18];
c=a;a=b;b=c;
a
b

然后在命令行输入exch,MATLAB就会自动运行脚本。注意搜索路径的配置

2)函数文件(Function) 函数文件由function语句引导,结构如下:

1
2
3
function [输出形参表]=函数名(输入形参表)
%注释说明
函数体语句

函数示例:

1
2
3
function sum=myadd(x,y)
% 求和计算
sum=x+y;

调用格式如下:

1
[输出参数列表]=函数名(输入参数列表)

调用示例:

1
2
3
>> edit myadd.m
>> % 在打开的编辑器窗口中输入上述 函数并保存
>> s = myadd(3+5)  % 调用myadd

3)全局变量与局部变量

局部变量:存在于函数空间内部的中间变量,产生于函数的运行过程中,影响范围也仅限于函数本身。 全局变量:可定义为不同函数空间和基本空间共享的同一变量,是函数间传递信息的一种手段。习惯上将全局变量定义为大写字母。全局变量用global定义,格式如下:

1
global 变量名

全局变量应用示例: 先建立函数文件wadd.m,该函数将输入的参数加权相加

1
2
3
function f=wadd(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;

在命令行窗口中输入命令并得到输出结果

1
2
3
4
>> global ALPHA BETA
>> ALPHA=1;
>> BETA=2;
>> s=wadd(1,2)

2.2 程序控制结构

程序的控制结构有3种:顺序结构选择结构循环结构 。其中 顺序结构 就是指程序里的语句从上往下按顺序执行。

  1. 选择结构

MATLAB实现条件结构语句有:if语句、switch语句和try语句

if语句:

1
2
3
4
5
6
7
8
if 条件1
	语句组
elseif 条件2
	语句组
	...
else
	语句组
end

switch语句:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
switch (表达式)
	case 表达式1
		语句1
	case 表达式2
		语句2
		...
	case 表达式n
		语句n
	otherwise
		语句n+1
end

try语句: try语句为开发人员提供了一种捕获错误的机制

1
2
3
4
5
try
	语句1
catch
	语句2
end

2)循环结构

MATLAB提供两种循环结构语句:for语句 与 while语句

for语句

如果可以确认循环次数用for循环,格式如下:

1
2
3
for 循环遍历=表达式1:表达式2:表达式3
	循环体语句
end
  • 表达式1 的值为循环控制变量的初值;
  • 表达式2 的值为步长,省略时,步长为1;
  • 表达式3 为循环控制变量的终值。

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
% 用法一  不指定循环步长(使用默认循环步长 1)
for a = 1:10 
  fprintf('值a: %d \n', a);
end

% 用法二  指定循环步长
for a = 1:2:10 
  fprintf('值a: %d \n', a);
end

% 用法二  指定循环步长(可以为负数)
for a = 1.0: -0.1: 0.0
   disp(a)
end


% 用法三 使用向量指定循环变量
for a = [2 3 4 5 6]
   disp(a)
end

while语句

while语句通过判断循环条件是否满足来决定是否继续的循环结构,格式如下:

1
2
3
while 条件
	循环体语句
end

示例:

1
2
3
4
5
6
7
i=0;
sum=0;
while(i<10)
    sum=sum+i;
    i=i+1;
end
fprintf('累加和为: %d \n', sum);

2.3 流程控制语句

  • break语句:终止本层for或while循环,跳转到本层循环结束语句end的下一条语句
  • continue语句:跳过其后的循环体语句,进行下一次循环
  • return语句:终止被调用函数的运行,返回到调用函数
  • pause语句:
    • pause:暂停程序运行,按任意键继续
    • pause(n):程序暂停运行n秒后继续
    • pause on/off:允许/禁止其后的程序暂停

2.4 IO 与 文件操作

常用的数据输入输出函数如下:

函 数 功 能
input 键盘输入语句
disp 屏幕输出语句
save / load M数据文件的存储/加载
fprintf / fscanf 格式化文本文件的存储/读取
fwrite / fread 二进制数据文件的存储/读取
fgetl / fgets 数据文件行存储/读取
format 数据输出格式

文件操作函数

函数 说明
fopen 打开文件,成功则返回非负数值
fclose 关闭文件,可用参数 all 关闭所有文件
fread 读取二进制文件,可控制读取类型和长度
fwrite 写二进制文件
fscanf 读取格式化文本文件,与C语言的 fscanf相似
fprintf 写入格式化文本文件,与C语言的 fprintf相似
fgetl 读取下一行,忽略回车符
fgets 读取下一行,保留回车符
ferror 查询文件的错误状态
feof 检测是否到文件结尾处
fseek 移动文件位置指针
ftell 返回文件当前位置指针
frewind 把文件位置指针指向文件头
tempdir 返回系统存放临时文件的目录
tempname 返回一个临时文件名
Licensed under CC BY-NC-SA 4.0