MATLAB

实时编辑器

使用实时编辑器便于展示运行流程

一些技巧

Alt + Enter :代码框文本框切换

Ctrl + Enter :运行当前节

Ctrl + Alt + Enter :插入分节符,新建节

断点:观察如何运行

MATLAB语法

  • 矩阵
  • 函数
  • if
  • for
  • while
  • 绘图

矩阵

1
a=[1 2 3 4];

同等维度的矩阵才能相运算

逐元运算

构造矩阵函数



矩阵下标

函数

if

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
m=randi(100,1)
if mod(m,2)==0
disp('偶数')
else
disp('奇数')
end
```

#### for
for用于以知次数的循环
```MATLAB
s = 1;
for k=1:10
s = s*k;
end
prod(1:10)

while

while用于未知次数的循环

1
2
3
while cond
commands
end
1
2
3
4
5
6
7
n = 0;
s = 0;
while s<=1.6
n = n+1;
s = s+1/n^2;
end
disp(n) %dips输出

switch

绘图

简单图像
1
2
3
x = 0:0.01:2*pi;
y = sin(x);
plot(x,y) //以x,y绘制二维线图

1
2
linspace(0,10,11)
plot(x,sin(x))


linspace:生成线性间距向量

y = linspace(x1,x2)
y = linspace(x1,x2,n)

1
2
3
4
5
6
7
8
y = linspace(x1,x2) 返回包含 x1 和 x2 之间的 100 个等间距点的行向量。

示例
y = linspace(x1,x2,n) 生成 n 个点。这些点的间距为 (x2-x1)/(n-1)。

eg.linspace(0,10,11)生成0到10的11个点。

linspace 类似于冒号运算符“:”,但可以直接控制点数并始终包括端点。“linspace”名称中的“lin”指示生成线性间距值而不是同级函数 logspace,后者会生成对数间距值。
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
plot:二维线图
plot(X,Y) 创建 Y 中数据对 X 中对应值的二维线图。

要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。

要在同一组坐标轴上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。

plot(X,Y,LineSpec) 使用指定的线型、标记和颜色创建绘图。

示例
plot(X1,Y1,...,Xn,Yn) 在同一组坐标轴上绘制多对 x 和 y 坐标。此语法可替代将坐标指定为矩阵的形式。

示例
plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn) 可为每个 x-y 对组指定特定的线型、标记和颜色。您可以对某些 x-y 对组指定 LineSpec,而对其他对组省略它。例如,plot(X1,Y1,'o',X2,Y2) 对第一个 x-y 对组指定标记,但没有对第二个对组指定标记。

示例
plot(Y) 绘制 Y 对一组隐式 x 坐标的图。

如果 Y 是向量,则 x 坐标范围从 1 到 length(Y)。

如果 Y 是矩阵,则对于 Y 中的每个列,图中包含一个对应的行。x 坐标的范围是从 1 到 Y 的行数。

如果 Y 包含复数,MATLAB® 绘制 Y 的虚部对 Y 的实部的图。 如果同时指定了 X 和 Y,虚部将被忽略。

plot(Y,LineSpec) 指定线型、标记和颜色。

示例
plot(___,Name,Value) 使用一个或多个名称-值参数指定 Line 属性。这些属性应用于绘制的所有线条。需要在上述任一语法中的所有参数之后指定名称-值参数。有关属性列表,请参阅 Line 属性。

示例
plot(ax,___) 在目标坐标区上显示绘图。将坐标区指定为上述任一语法中的第一个参数。

示例
p = plot(___) 返回一个 Line 对象或 Line 对象数组。创建绘图后,使用 p 修改该绘图的属性。有关属性列表,请参阅 Line 属性。
1
2
x=linspace(0,1*pi,10);
plot(x,cos(x),'r*')

其他用法见文档---->>doc plot

绘制表达式或函数
1
fplot:绘制表达式或函数

隐函数

还不会

hold on

其他

一些命令

clc清除命令行所以命令和输出
clear all清除工作区变量

% 注释
%% 分节注释
abs('a')绝对值:输出字符对应的ASCII编码
char(97)输出ASCII编码对应的字符

1
2
3
a='abcd'
length(a)
% 计算字符串长度
1
2
C = A.^B
C = power(A,B)

exp()
Y = exp(X) 为数组 X 中的每个元素返回指数 e的x次方。

矩阵

a = [1 2 3;4 5 6;7 8 9]

a =
1 2 3
4 5 6
7 8 9

b=a' % 矩阵的转置

b =
1 4 7
2 5 8
3 6 9

c=b(:) % 列拉伸

c =
1
2
3
4
5
6
7
8
9

d = inv(a) % 求逆矩阵

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
% zeros(行,列,维度)
>> zeros(1,2,3)

ans(:,:,1) =

0 0


ans(:,:,2) =

0 0


ans(:,:,3) =

0 0

元胞数组

cell元胞数组就类似于创建几个空的盒子即数组,用于放置各种数据

A = cell(2,6)

A{2}=eye(3)

A{2}

eye函数
1
2
3
4
5
6
7
I = eye 返回标量 1。

示例
I = eye(n) 返回一个主对角线元素为 1 且其他位置元素为 0 的 n×n 单位矩阵。

示例
I = eye(n,m) 返回一个主对角线元素为 1 且其他位置元素为 0 的 n×m 矩阵。

eye(3)

eye(4,2)

magic函数

生成幻方矩阵

语法
M = magic(n)
说明

1
M = magic(n) 返回由 1 到 n2 的整数构成并且总行数和总列数相等的 n×n 矩阵。n 的阶数必须是大于或等于 3 的标量才能创建有效的幻方矩阵。

struct结构体数组

books = struct

a = struct('name',{{'name1','name2'}},'old',[20,30])

取出数据

b=a.name

创建对象

a.name = {'name1','name2','name3'}

取出数据

1
2
b=a.name(1) % cell类型
b=a.name{1} % 字符类型

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
s = struct 创建不包含任何字段的标量 (1×1) 结构体。

示例
s = struct(field,value) 创建具有指定字段和值的结构体数组。value 输入参数可以是任何数据类型,例如数值、逻辑值、字符或元胞数组。

如果 value 不是元胞数组,或者 value 是标量元胞数组,则 s 是标量结构体。例如,s = struct('a',[1 2 3]) 创建一个 1×1 结构体,其中 s.a = [1 2 3]。

如果 value 是非标量元胞数组,则 s 是维度与 value 相同的结构体数组。s 的每个元素包含 value 的对应元素。例如,s = struct('x',{'a','b'}) 返回 s(1).x = 'a' 和 s(2).x = 'b'。

如果 value 是空元胞数组 {},则 s 是空 (0×0) 结构体。

示例
s = struct(field1,value1,...,fieldN,valueN) 创建一个包含多个字段的结构体数组。

如果 value 的所有输入都不是元胞数组,或者 value 中作为元胞数组的所有输入都是标量,则 s 是标量结构体。

如果任一 value 输入是非标量元胞数组,则 s 具有与该元胞数组相同的维度。此外,如果两个或多个 value 输入是非标量元胞数组,则它们必须都具有相同的维度。

对于类型为标量元胞数组或任何其他数据类型的数组的任何 value,struct 将 value 的内容插入 s 的所有元素的相关字段中。例如,s = struct('x',{'a','b'},'y','c') 返回 s(1).x = 'a'、s(2).x = 'b'、s(1).y = 'c' 和 s(2).y = 'c'。

如果任何 value 输入是空元胞数组 {},则输出 s 是空 (0×0) 结构体。要指定一个空字段并保留其他字段的值,请改用 [] 作为 value 输入。

s = struct([]) 创建不包含任何字段的空 (0×0) 结构体。

s = struct(obj) 创建包含与 obj 的属性对应的字段名称和值的标量结构体。struct 函数不会转换 obj,而是将 s 创建为一个新的结构体。此结构体不保留类信息,因此专用、受保护和隐藏的属性在 s 中变为公共字段。struct 函数在您使用此语法时会发出警告。

矩阵的操作

直接定义

1
a=[1 1 2 2 3 3]

1
2
% a= 起始值:步长:最终值
a= 1:2:10

重复数组----分块矩阵

1
2
# a=repmat(a,2,1)
repmat(a,2,1)

生成全为一的矩阵

ones(1,2)

矩阵的下标

a(2,3) 表示a矩阵第二行第三列对应的数

a(2,:) 表示a矩阵第二行所有的数

a(:,3) 表示a矩阵第三列所有的数

[x,y] = find(a > 8) 查找符合条件的数