Matlab常用函数

1、算数运算符

符号角色更多信息
+

加法

plus
+

一元加法

uplus
-

减法

minus
-

一元减法

uminus
.*

按元素乘法

times
*

矩阵乘法

mtimes
./

按元素右除

rdivide
/

矩阵右除

mrdivide
.\

按元素左除

ldivide
\

矩阵左除

(也称为反斜杠

mldivide
.^

按元素求幂

power
^

矩阵幂

mpower
.'

转置

transpose
'

复共轭转置

ctranspose

2、关系运算符

符号角色更多信息
==

等于

eq
~=

不等于

ne
>

大于

gt
>=

大于或等于

ge
<

小于

lt
<=

小于或等于

le

3、逻辑运算符

符号角色更多信息
&

计算逻辑 AND

and
|

计算逻辑 OR

or
&&

计算逻辑 AND(具有短路功能)

Short-Circuit AND
||

计算逻辑 OR(具有短路功能)

Short-Circuit OR
~

计算逻辑 NOT

not

4、特殊字符

@

名称:at 符号

用法:

  • 函数句柄构造和引用

  • 调用超类方法

 

描述:@ 符号可为跟在 @ 符号后面的命名函数或跟在 @ 符号后面的匿名函数构造函数句柄。您也可以使用 @ 从子类中调用超类方法。

示例

创建命名函数的函数句柄:

fhandle = @myfun

创建匿名函数的函数句柄:

fhandle = @(x,y) x.^2 + y.^2;

从子类中调用 MySuper 的 disp 方法:

disp@MySuper(obj)

使用正在构造的对象从子类中调用超类构造函数:

obj = obj@MySuper(arg1,arg2,...)

更多信息:

  • 创建函数句柄

  • 对子类对象调用超类方法

 

.

名称:句点或点

用法:

  • 小数点

  • 按元素运算

  • 结构体字段访问

  • 对象属性或方法设定符

 

描述:句点字符可分隔一个数(例如 3.1415)的整数部分和小数部分。包含句点的 MATLAB 运算符会始终按元素执行运算。通过句点字符,还可以访问结构体中的字段以及对象的属性和方法。

示例

小数点:

102.5543

按元素运算:

A.*B
A.^2

结构体字段访问:

myStruct.f1

对象属性设定符:

myObj.PropertyName

更多信息

  • 数组与矩阵运算

  • 结构体

  • 访问属性值

 

...

名称:三个点或省略号

用法:续行

描述:行末尾的三个或更多个句点表示当前命令延续到下一行。如果行末尾之前存在三个或更多个句点,则 MATLAB 会忽略该行的其余部分而直接延续到下一行。这实际上相当于将当前行上三个句点之后的任何内容作为注释。

注意

MATLAB 将省略号解释为空格字符。因此,多行命令与将省略号替换为空格字符的单行命令等效。

示例

将函数调用延续到下一行:

sprintf(['The current value '...
'of %s is %d'],vname,value)

在多行上分解字符向量并将这些行串联在一起:

S = ['If three or more periods occur before the '...
    'end of a line, then the rest of that line is ' ...
    'ignored and MATLAB continues to the next line']

要将多行命令中的一行注释掉,请在该行的开头使用 ... 以确保命令保持完整。如果您使用 % 将某一行注释掉,则会产生错误:

y = 1 +...
    2 +...
  % 3 +...
    4;

但是,以下代码可正常运行,因为第三行不会在命令中产生间断。

y = 1 +...
    2 +...
... 3 +...
    4;

更多信息

  • 在多行上延续长语句

 

,

名称:逗号

用法:分隔符

描述:使用逗号可分隔数组中的行元素、数组下标、函数输入和输出参数以及同一行中输入的命令。

示例

分隔行元素以创建数组:

A = [12,13; 14,15]

分隔下标:

A(1,2)

分隔函数调用中的输入和输出参数:

[Y,I] = max(A,[],2)

分隔同一行中的多个命令(显示输出):

figure, plot(sin(-pi:0.1:pi)), grid on

更多信息

  • horzcat

 

:

名称:冒号

用法:

  • 创建向量

  • 索引

  • For 循环迭代

 

描述:使用冒号运算符可创建等间距向量、对数组进行索引以及定义 for 循环的边界。

示例

创建向量:

x = 1:10

创建以 3 为单位递增的向量:

x = 1:3:19

将矩阵重构为列向量:

A(:)

分配新元素而不更改数组的形状:

A = rand(3,4);
A(:) = 1:12;

对特定维度中某个范围的元素进行索引:

A(2:5,3)

对特定维度中的所有元素进行索引:

A(:,3)

for 循环边界:

x = 1;
for k = 1:25
    x = x + x^2;
end

更多信息

  • colon

  • 创建、串联和扩展矩阵

 

;

名称:分号

用法:

  • 表示行尾

  • 禁止代码行输出

 

描述:使用分号可分隔数组创建命令中的各行,也可禁止代码行的输出显示。

示例

分隔各行以创建数组:

A = [12,13; 14,15]

禁止代码输出:

Y = max(A);

在单行中分隔多个命令(隐藏输出):

A = 12.5;  B = 42.7,  C = 1.25;
B =
   42.7000

更多信息

  • vertcat

 

( )

名称:圆括号

用法:

  • 运算符优先级

  • 括起函数参数

  • 索引

 

描述:使用圆括号可指定运算优先级、括住函数输入参数以及对数组进行索引。

示例

运算优先级:

(A.*(B./C)) - D

括起函数参数:

plot(X,Y,'r*')
C = union(A,B)

索引:

A(3,:)
A(1,2)
A(1:5,1)

更多信息

  • 运算符优先级

  • 数组索引

 

[ ]

名称:方括号

用法:

  • 数组构造

  • 数组串联

  • 空矩阵和数组元素删除

  • 多输出参数赋值

 

描述:方括号可以构造和串联数组、创建空矩阵、删除数组元素以及捕获函数返回的值。

示例

构造三元素向量:

X = [10 12 -3]

在矩阵底部添加新的一行:

A = rand(3);
A = [A; 10 20 30]

创建空矩阵:

A = []

删除矩阵列:

A(:,1) = []

从函数捕获三个输出参数:

[C,iA,iB] = union(A,B)

更多信息

  • 创建、串联和扩展矩阵

  • horzcat

  • vertcat

 

{ }

名称:花括号

用法:元胞数组赋值和内容

描述:使用花括号可构造元胞数组,也可访问元胞数组中特定元胞的内容。

示例

要构造元胞数组,请将数组的所有元素括在花括号中:

C = {[2.6 4.7 3.9], rand(8)*6, 'C. Coolidge'}

通过将所有索引括在花括号中来对特定元胞数组元素进行索引:

A = C{4,7,2}

更多信息

  • 元胞数组

 

%

名称:百分号

用法:

  • 注释

  • 转换设定符

 

描述:百分号最常用于指示程序主体中不可执行的文本。此文本通常的作用是在代码中加入注释。

某些函数还将百分号解释为转换设定符。

根据创建和运行代码节中的描述,两个百分号 %% 用作元胞分隔符。

示例

在代码块中添加注释:

% The purpose of this loop is to compute
% the value of ...

将转换设定符与 sprintf 结合使用:

sprintf('%s = %d', name, value)

更多信息

  • 向代码添加注释

 

%{ %}

名称:百分号加花括号

用法:块注释

描述:%{ 和 %} 符号将超出一行的注释块括起来。

注意

除空白字符之外,%{ 和 %} 运算符必须在帮助文本块之前和之后另起一行,单独显示。不要在这些行中包括任何其他文本。

示例

用百分号后跟左花括号或右花括号将多行注释括起来:

%{
The purpose of this routine is to compute
the value of ... 
%}

更多信息

  • 向代码添加注释

 

!

名称:感叹号

用法:操作系统命令

描述:感叹号位于要从 MATLAB 内部执行的操作系统命令的前面。

在 MATLAB Online™ 中不可用。

示例

感叹号启动 shell 转义函数。此类函数将直接由操作系统执行:

!rmdir oldtests

更多信息

  • Shell Escape Function Example

 

?

名称:问号

用法:MATLAB 类的元类

描述:问号可检索特定类名的 meta.class 对象。? 运算符仅适用于类名而不是对象。

示例

检索类 inputParser 的 meta.class 对象:

?inputParser

更多信息

  • metaclass

 

''

名称:单引号

用法:字符数组构造符号

描述:使用单引号可创建 char 类的字符向量。

示例

创建字符向量:

chr = 'Hello, world'

更多信息

  • 字符串数组和字符数组中的文本

 

""

名称:双引号

用法:字符串构造符号

描述:使用双引号可创建 string 类的字符串标量。

示例

创建字符串标量:

S = "Hello, world"

更多信息

  • 字符串数组和字符数组中的文本

 

N/A

名称:空格字符

用法:分隔符

描述:使用空格字符可分隔数组构造符号内的行元素,也可分隔函数返回的值。在这些上下文中,空格字符和逗号是等效的。

示例

分隔行元素以创建数组:

% These statements are equivalent
A = [12 13; 14 15]
A = [12,13; 14,15]

分隔函数调用中的输出参数:

% These statements are equivalent
[Y I] = max(A)
[Y,I] = max(A)
N/A

名称:换行符

用法:分隔符

描述:使用换行符分隔数组构造语句中的多个行。在这种情况下,换行符和分号是等效的。

示例

在数组创建命令中分隔行:

% These statements are equivalent
A = [12 13
     14 15]
A = [12 13; 14 15]
~

名称:波浪号

用法:

  • 逻辑非

  • 参数占位符

 

描述:使用波浪号可表示逻辑非,也可禁止特定输入或输出参数。

示例

计算矩阵的逻辑 NOT:

A = eye(3);
~A

确定 A 的元素在哪些位置不等于 B 的元素:

A = [1 -1; 0 1]
B = [1 -2; 3 2]
A~=B

仅返回 union 的第三个输出值:

[~,~,iB] = union(A,B)

更多信息

  • not

  • 忽略函数定义中的输入

  • 忽略函数输出

 

=

名称:等号

用法:赋值

描述:使用等号可为变量赋值。语法 B = A 用于将 A 的元素存储在变量 B 中。

注意

= 字符用于赋值,而 == 字符用于比较两个数组中的元素。有关详细信息,请参阅 eq

示例

创建矩阵 A。将 A 中的值赋给新变量 B。最后,将一个新值赋给 B 中的第一个元素。

A = [1 0; -1 0];
B = A;
B(1) = 200;
< &

名称:左尖括号和 & 符号

用法:指定超类

描述:在类定义中指定一个或多个超类

示例

定义从一个超类派生的类:

classdef MyClass < MySuperclass
   …
end

定义从多个超类派生的类:

classdef MyClass < Superclass1 & Superclass2 & …
   …
end

更多信息:

  • 子类语法

 

.?

名称:点问号

用法:指定名称-值结构体的字段

描述:

使用函数参数验证时,可以将名称-值结构体的字段定义为类的所有可写属性的名称。

示例

将 propArgs 结构体的字段名称指定为 matlab.graphics.primitive.Line 类的可写属性。

function f(propArgs)
    arguments
        propArgs.?matlab.graphics.primitive.Line
    end
    % Function code
    ...
end

更多信息:

  • 基于类属性的名称-值参数

 

5、字符串与字符串格式化

/

\

名称:斜杠和反斜杠

用法:文件或文件夹路径分隔

描述:除了用作数学运算符以外,斜杠和反斜杠字符还可分隔路径或文件夹的元素。在基于 Microsoft® Windows® 的系统上,斜杠和反斜杠具有相同的效果。在基于 The Open Group UNIX® 的系统上,只能使用斜杠。

示例

在 Windows 系统上,您可以使用反斜杠或斜杠:

dir([matlabroot '\toolbox\matlab\elmat\shiftdim.m'])
dir([matlabroot '/toolbox/matlab/elmat/shiftdim.m'])

 

在 UNIX 系统上,只能使用正斜杠:

dir([matlabroot '/toolbox/matlab/elmat/shiftdim.m'])

 

..

名称:二连点

用法:父文件夹

描述:连续的两个点表示当前文件夹的父文件夹。使用此字符可指定相对于当前文件夹的文件夹路径。

示例

要在文件夹树中上移两层进入 test 文件夹,请使用:

cd ..\..\test

更多信息

  • cd

 

*

名称:星号

用法:通配符

描述:除了用作矩阵乘法的符号以外,星号 * 还可用作通配符。

通配符一般用于对多个文件或文件夹执行的文件操作。MATLAB 会精确匹配名称中的所有字符,但通配符 * 除外,该字符可以与任何一个或多个字符匹配。

示例

查找名称以 january_ 开头并且文件扩展名为 .mat 的所有文件:

dir('january_*.mat')

 

@

名称:at 符号

用法:类文件夹指示符

描述:@ 符号指示类文件夹的名称。

示例

表示类文件夹:

\@myClass\get.m

更多信息

  • 类和路径文件夹

 

+

名称:加

用法:包目录指示符

描述:+ 符号指示包文件夹的名称。

示例

包文件夹始终以 + 字符开头:

+mypack
+mypack/pkfcn.m  % a package function
+mypack/@myClass % class folder in a package

更多信息

  • 包命名空间

6、基本函数

函数作用举栗子
clear 清除工作区中的所有变量  
clc 清除命令行中的所有代码  
help 函数名 或 doc 函数名 查找函数帮助  
syms 定义符号变量 syms x y ;
sym('f') 定义符号表达式 sym('x*y^2')
pi 圆周率(matlab区分大小写) π
vpa(x,k) x的数值,保留k位有效数字 x=vpa(sin(1/3), 2) ⇨x=0.33
real(x) 求复数x的实部 x = real(1+2i) ⇨ x = 1
eval() 字符串转数值 x = eval('5') ⇨ x = 5
sqrt() 开根号 x = sqrt(4) ⇨ x = 2
exp() 以自然常数e为底的指数函数 x = exp(2) ⇨ y = e²
log() 以e为底的对数函数 x = log(exp(1)) ⇨ x = 1
log10() 以10为底的对数函数 x = log(10) ⇨ x = 1
abs() 取绝对值 x = abs(-1) ⇨ x = 1
mod(m,n) m对n取余,返回m/n的余数 x = mod(3,2) ⇨ x = 1

 

7、三角函数

函数作用备注
sin()、cos()、tan()、cot() 三角函数 x=sin(deg2rad(30)) ⇨x=0.5
rad2deg()、deg2rad() 弧度转角度、角度转弧度 x=deg2rad(30) ⇨ x=0.5236
asin()、acos()、
atan()、acot()
反三角函数,结果为弧度值 x = asin(0.5) ⇨ x = 0.5236
asind()、acosd()、atand()、acotd() 反三角函数,结果为角度值 x = asind(0.5) ⇨ x = 30.0°

8、向量矩阵操作

函数作用备注
size(A) 返回矩阵的行数和列数  
size(C,1) / size(C,2) 返回矩阵的行数 / 列数  
length(A) 或 max(size(A)) 返回长度最大的维度的长度  
numel(A) 返回矩阵元素的总个数  
sum(A) 返回矩阵所有元素的和 x = sum([1,2]) ⇨ x = 3
inv(A) 返回矩阵A的逆  
ndims(A) 返回矩阵A的维度 单个数值、向量和二维矩阵返回值均为2
iscolumn(x) / isrow(x) 判断是否为列向量 / 行向量  
isvector() / ismatrix() 判断是否为向量 / 矩阵  
isempty(x) / isscalar() 判断是否为空向量 /单个数值  
dot(a, b) 向量a点乘b,点积  
cross(a, b) 向量a叉乘b,叉乘  
repmat(A,m,n) 通过将A复制m行n列,返回m*n的矩阵

9、解方程

函数作用备注
simplify(f) 化简公式f  
collect(f) 合并同类项  
expand(f) 展开公式  
horner(f) 将乘法嵌套 数值计算性能较好
factor(f) 因式分解  
pretty(f) 相对直观地显示公式 复杂的公式不行
[n,d] = numden(f) 通分,返回分母n,分子d 通分前会先自动化简表达式

 

 10、画图相关

figure() 创建画布
clf() 清空画布的内容
set() 设置图形对象属性,如画布名字、在屏幕上的位置等
plot(X,Y) 创建 Y 中数据对 X 中对应值的二维线图
plot3() 绘制三维图像
xlabel()、ylabel() 横轴、纵轴标签
xlim()、ylim() 横轴、纵轴范围
text() 标注图线名称
title() 添加图题
hold on / hold off 不刷新画布(在一张画布画多张图) / 刷新画布
legend() 添加图例
grid on / grid off 打开 / 关闭网格线
grid minor 打开最小网格线
box on / box off 打开 / 关闭 右、上边框线
save() 保存工作区变量
saveas() / imwrite() 保存图片

 11、其他

who:打印当前变量
whos:打印当前变量详细信息
clear:清除当前变量
clc:清除打印区
eye:创建单位矩阵
zeros:创建0矩阵
ones:创建1矩阵
rand:生成0-1的均匀随机分布
randn:生成均值为0方差为1的正态分布
sqrt:开根
sqrt(10)*randn(1,8):噪声功率为10的高斯白噪声
A=B.':求矩阵转置
A=B':求共轭矩阵转置
exp:求每个元素求以e为底的指数函数 
conv:求两个向量的卷积

 

posted @ 2022-12-21 18:06  朱小勇  阅读(464)  评论(0编辑  收藏  举报