matlab-note-summary

matlab-note-summary

Charles Lv7

matlab-note-summary

MATLAB 编程基础

数据类型

MATLAB 基础数据类型主要包括:

  • 数值类型
  • 字符串
  • 结构
  • 单元数组
  • 函数句柄

1. 数值类型

包含:

  • 整数
1
2
3
y = int8(10);
y = uint8(10);
% 类似的还有int16, uint16, int32, uint32, int64, uint64
  • 单精度浮点型
1
2
% 单精度浮点型
y = single(0.1);
  • 双精度浮点型(默认)
1
y = double(5.324);

注:MATLAB 会对变量自动进行内存分配和回收,因此专注于算法本身即可。

  • 取整函数
1
2
3
4
5
6
7
8
% 向下取整
floor(1.4) = 1
% 向上取整
ceil(1.4) = 2
% 最接近的整数
round(1.5) = 2
% 向0取整
fix(1.4) = 1
  • 复数
1
2
3
4
5
y = complex(3,5);
% 返回实部
y = real(z);
% 返回虚部
y = imag(z);
  • 无穷量和非数值量

Inf:正无穷量

-Inf:负无穷量

NaN:非数值量(一般由0/0或Inf/Inf 运算产生)

2. 字符与字符串

1
2
3
4
5
6
% 字符
a = 'A';
% 字符串
a = 'Hello';
% 通过下标索引,从1开始
a(1);

3. 结构

与 C 语言类似,存储不同类型数据。

1
2
3
4
5
6
7
8
9
% 通过赋值创建结构
patient.name = 'John';
patient.bill = 127.00;

% 通过 struct 函数创建结构
patient = struct('name','John','billing', 127.00);

% 连接结构对象(patient1 和 patient2 都是结构对象)
patient = [patient1, patient2];

4. 单元数组

1
2
3
4
5
6
% 创建单元数组
A = {'x',[2;3;6];10,2*pi};
B =cell(2,2);

% 访问单元数组,第1行第2列数据
b = A(1,2)

5. 函数句柄

创建函数句柄需要用到操作符:@

1
2
3
% Function_Handle保存了函数句柄
% Function_Filename为 M 文件名称
Function_Handle = @Function_Filename;

6. 数据类型识别与转换

1
2
3
4
5
6
7
8
9
10
11
12
% 类型识别
isa(obj,ClassName)
iscell();
iscellstr();
ischar();
...
% 转换函数
char();
int2str();
dec2bin();
hex2dec();
...

运算符与运算

像其他语言一样,共有(优先级由高到低):

  • 算术运算符
  • 关系运算符
  • 逻辑运算符

加括号可以明确优先级!

1. 算术运算符

基础的: + - * /

高阶的: A./B A.*B(A,B为相同维度的矩阵)

强大之处: matlab支持大部分数学运算符,直接输入表达式即可,无需调用特定的数学函数。 举例来说:

1
2
3
% 以下两种方式等价:
2^3
power(2,3)

2. 关系运算符

比较后,返回逻辑结果0或1.

基础的: > >= < <= ==

特殊的: 不等于号:~=

3. 逻辑运算符

运算后,返回逻辑结果0或1.

基础的:

  • 与:&
  • 或:|
  • 非:~

编程基础

1. 变量

变量代表了一段可操作的内存,用来存储数据。

语句代表了对变量执行的操作。

命名规则:

  • 区分大小写
  • 必须以字母开头
  • 不能使用关键字
  • 最多包含63个字符
  • 避免与函数名重合

变量类型:

  • 局部变量
  • 全局变量
1
global X_Val;
  • 永久变量
1
persistent a;

2. 语句

  • 逗号 , 输出暂缓
  • 分号 ; 输出被抑制
  • 回车 输出结果
  • 注释 %

3. 程序控制

  • 顺序结构
  • 分支结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
% if 类型
if expression
commands
end

if expression
commands1
else
commands2
end

if expression1
commands1
elseif expression2
commands2
...
else
commandsn
end
% switch case 类型
switch value
case test1
command1
case test2
command2
...

otherwise
commands
end
% try catch 类型
try
command1 % 首先尝试执行,若正确,可执行
catch
command2 % try 语句失败后执行
end
  • 循环结构
1
2
3
4
5
6
7
8
% for 类型(循环次数可知)
for x = array
commands
end
% while 类型(循环条件可知)
while expression
commands
end
  • 其他常用控制指令

    • return 命令:结束该函数并将控制权转回主函数或者命令行窗口
    • input 命令:将控制权交给用户后,等待用户键盘输入内容
    • keyboard 命令:将控制权交给键盘
    • pause 命令:暂停执行文件,按任意键再继续
    • pause(n) 命令:暂停 n 秒后再继续
    • continue 命令:执行 for 或者 while 的下一个循环
    • break 命令:跳出 for 或者 while 循环
    • error(‘message’) 命令:显示出错信息,终止程序
    • warning(‘message’) 命令:显示警告信息,继续执行

4. M 文件与脚本

脚本的特点:

  • 脚本属于 M 文件的一种,是一系列命令的集合
  • 运算过程中产生的变量自动保存在工作区中
  • 脚本产生的变量都是全局变量,不随脚本关闭而清除

函数

M 文件名称和函数名称必须一致

M 文件函数:定义了输入参数或返回输出变量

1. M 文件函数

  • 调用时,允许比声明变量数目少
1
2
3
4
5
6
function y = mean(x,dim,flag,flag2)
...
% 实际调用
X = [1 2 3]
y1 = mean(X)
y2 = mean(X,2)
  • 函数运行时,MATLAB 会打开一段临时工作区供函数使用,执行完成后回收

2. 匿名函数

没有函数名,只有表达式、输入输出参数。

1
2
3
4
% f 为函数句柄
f = @(input1, input2, ...) expression
% 调用
f(input)

3. 子函数

也称局部函数。

M 函数文件出现的第一个函数称为主函数,其他称为子函数。

1
2
3
4
5
6
7
8
9
10
function [outputArg1,outputArg2] = myfun(inputArg1,inputArg2)
% 此处显示详细说明
outputArg1 = inputArg1;
outputArg2 = myadd(inputArg2);
end

% 以下为子函数
function y = myadd(inputArg3)
y = inputArg3 + 1;
end

4. 程序调试

程序错误分为:语法错误(编译器会提醒)和逻辑错误(程序员负责解决)。

调试手段小结

  • 删除分号可以显示结果

  • 在适当位置添加输出变量值,可以用 disp 或者 fprintf 函数

  • 在适当位置添加 keyboard 命令

  • % 可用于屏蔽代码

  • 使用 MATLAB 自带的调试工具

    • 设置断点
    • 单步执行
    • 检查变量值

matlab笔记

01 | 基本的数学运算与矩阵运算

学习笔记链接:

MATLAB01:基本的数学运算与矩阵运算

02 |结构化编程和函数定义

学习笔记链接:

MATLAB02:结构化编程和函数定义

03 | 数据类型与文件读写

学习笔记链接:

MATLAB03:数据类型与文件读写

04 | 基础绘图

学习笔记链接:

MATLAB04:基础绘图

05 | 绘制高级图表

学习笔记链接:

MATLAB05:绘制高级图表

06 | 数字图像处理

学习笔记链接:

MATLAB06:数字图像处理

07 | 数值计算

学习笔记链接:

MATLAB07:数值计算

08 | 符号运算

学习笔记链接:

MATLAB08:符号运算

09 | 统计与数据分析和曲线拟合

学习笔记链接:

MATLAB09:统计与拟合

  • Title: matlab-note-summary
  • Author: Charles
  • Created at : 2023-01-13 11:50:45
  • Updated at : 2023-08-17 09:48:41
  • Link: https://charles2530.github.io/2023/01/13/matlab-note-summary/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments