一、命名规则

  • 变量名区分大小写
  • 变量名长度不超过63位 (MATLAB R2012a 32bit和64bit计算机上测试结果)
  • 变量名以字母开头,可以由字母、数字和下划线组成,但不能使用标点
  • 变量名应简洁明了,通过变量名可以直观看出变量所表示的物理意义
  • clear all:除Workspace中所有的变量
  • clc :清除Command Window中的所有命令
  • 注释:%%或%

二、数据类型

1. 数字

  • rand:生成均匀分布的伪随机数,分布在(0~1)之间
    • rand(m, n):生成m行n列的均匀分布的伪随机数
    • rand(m, n, ‘double’):生成指定精度的均匀分布的伪随机数,参数还可以是’single’
    • rand(RandStream, m, n)利用指定的RandStream(随机种子)生成为随机数
  • randn:生成标准正态分布的伪随机数(均值为0,方差为1,语法同上)
  • randi:生成均匀分布的伪随机数
    • randi(iMax):在开区间(0,iMax)生成均匀分布的为随机整数
    • randi(iMax):在开区间(0, iMax)生成m*n型随机矩阵
    • randi([iMin, iMax], m, n):在开区间(iMin, iMax)生成m*n型随机矩阵

2. 字符与字符串

3. 矩阵

1
2
3
4
5
6
7
8
9
A = [1 2 3; 4 5 6; 7 8 9]	% 定义矩阵
B = A' % 求矩阵的转置
C = A(:) % 矩阵向量化(竖直方向)
D = inv(A) % 求矩阵的逆矩阵

E = zeros(10, 5, 3) % 创建10行5列全是0的3维矩阵
E(:, :, 1) = rand(10, 5)
E(:, :, 2) = randi([3, 8], 10, 5)
E(:, :, 3) = randn(10, 5)

4. 元胞数组ceil

  • 元胞数组是MATLAB中特有的一种数据类型,是数组的一种,其内部元素可以是属于不同的数据类型,概念理解上,可以认为它和c语言里面的结构体、C++里面的对象很类似。元胞数组是matlab中的特色数据类型,它不同于其它数据类型(如字符型,字符数组或者叫字符串,以及一般的算术数据和数组)。它特有的存取数据方法决定了它的特点,它有给人一种查询信息的感觉,可以逐渐追踪一直到所有的变量全部翻译成基本的数据信息。它的class函数输出就是cell(细胞之意)。
1
2
3
4
5
A = ceil(1, 6)	% 生成一个1行5列的元胞数组
A[2] = eye(3) % 将一个3*3的单位矩阵赋值给元胞数组第2个盒子(注意:索引从1开始)
A[5] = magic(5) % 将一个5*5幻方矩阵赋值给元胞数组第5个盒子
B = A[2] % 将元胞数组第5个盒子取出

5. 结构体struct

1
2
3
4
books = struct('name', {{'Math', 'English'}}, 'price', [30, 40])
books.name % 属性
books.name(1) % 取出的是ceil
books.name{1} % 取出的是字符串

三、矩阵操作

1. 矩阵定义与构造

1
2
3
4
5
A = [1 2 3; 4 5 6; 7 8 9]
B = 1:2:9 % 生成从1到9步长为2的一行多列矩阵
C = repmat(B, 3, 2) % 将矩阵B按照3行2列复制生成矩阵
D = ones(2, 4) % 创建2行4列全是1的矩阵
E = zeros(10, 5, 3) % 创建10行5列全是0的3维矩阵

2. 矩阵的四则运算

1
2
3
4
5
6
C = A + B
D = A - B
E = A * B
F = A .* B % 对应项相乘
G = A / B % 等价于A*inv(B)
H = A ./ B % 对应项相除

3. 矩阵下标

1
2
3
4
5
B = A(2, 3)
C = A(2, :)
D = A(:, 3)

[m, n] = find(A > 20) % 找到A中值大于20的索引值,m表示行索引,n表示列索引

四、程序结构

1. for循环

1
2
3
4
5
for 循环变量 = 初值:步长:中值			% 步长默认值为1
执行语句1
、、、
执行语句n
end

2. while循环

1
2
3
4
5
while 条件表达式
执行语句1
、、、
执行语句2
end

3. if分支结构

1
2
3
4
5
6
7
8
9
if 条件表达式
语句体
end

if 条件表达式
语句体1
else
语句体2
end

五、基本绘图操作

1. 二维平面绘图

1
2
3
4
5
6
7
8
x = 0:0.01:2*pi;
y = sin(x);
figure % 建立一个幕布
plot(x,y) % 绘图
title('y=sin(x)') % 标题
xlabel('x') % x轴标签
ylabel('sin(x)') % y轴标签
xlim([0 2*pi]) % x轴取值范围

1650249994373

2. 绘制双Y曲线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
% 绘制双y曲线
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x); % *是矩阵相乘,.*是矩阵对应项相乘
y2 = 0.8*exp(-0.5*x).*sin(10*x);

figure
title('Mutiple Decay Rates')
xlabel('Time (\musec)')

yyaxis left
plot(x,y1)
ylabel('Slow Decay')

yyaxis right
plot(x,y2)
ylabel('Fast Decay')

1650250039875

3. 三维绘图

1
2
3
4
5
6
7
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on % 打开网格
axis square

1650250188559

4. 双峰函数

1
2
3
[x,y,z] = peaks(30);
mesh(x,y,z)
grid on

1650250259611