MATLAB
实时编辑器
使用实时编辑器便于展示运行流程
一些技巧
Alt
+ Enter
:代码框文本框切换
Ctrl
+ Enter
:运行当前节
Ctrl
+ Alt
+ Enter
:插入分节符,新建节
断点:观察如何运行
MATLAB语法
矩阵
同等维度的矩阵才能相运算
逐元运算
构造矩阵函数
矩阵下标
函数
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)
|
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
绘制表达式或函数
隐函数
还不会
hold on
其他
一些命令
clc
清除命令行所以命令和输出
clear all
清除工作区变量
%
注释
%%
分节注释
abs('a')
绝对值:输出字符对应的ASCII编码
char(97)
输出ASCII编码对应的字符
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 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)
查找符合条件的数