matlab总结

简介

  • MATLAB是MathWorks开发的一种编程语言。
  • MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
  • MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)
  • MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。
  • MATLAB的基本数据单位是矩阵
  • 它为线性代数,统计,傅立叶分析,滤波,优化,数值积分和求解常微分方程提供了庞大的数学函数库。
  • 它提供了用于使数据可视化的内置图形以及用于创建自定义图的工具。
  • 它提供了将基于MATLAB的算法与外部应用程序和语言(例如C,Java,.NET和Microsoft Excel)集成在一起的功能。
  • MATLAB被广泛用作科学和工程领域的计算工具,涵盖了物理,化学,数学和所有工程流领域。它可用于多种应用中,包括-信号处理与通讯、图像和视频处理、控制系统、测试与量测、计算金融、计算生物学

教程

https://www.cainiaojc.com/matlab

https://ww2.mathworks.cn/help/matlab/getting-started-with-matlab.html

问答社区

https://ww2.mathworks.cn/support/search.html?fq%5B%5D=asset_type_name:answer&fq%5B%5D=category:matlab/getting-started-with-matlab&page=1&s_tid=CRUX_topnav

计算数学能力

  • 处理矩阵和数组
  • 2-D和3-D绘图和图形
  • 线性代数
  • 代数方程
  • 非线性函数
  • 统计数据
  • 数据分析
  • 微积分和微分方程
  • 数值计算
  • 集成(Integration)
  • 变换(Transforms)
  • 曲线拟合
  • 各种其他特殊功能

下载

https://www.mathworks.com/downloads/web_downloads/

使用:

可以在命令窗口中使用>>命令提示符下输入命令

image

基本语法

分号

分号(;)表示语句结束。但是,如果要隐藏和隐藏表达式的MATLAB输出,请在表达式后添加分号。

x = 3;
y = x + 5

可以在同一行上进行多个分配:

a = 2; b = 7; c = a * b

百分号

百分号(%)用于指示注释行。例如

x = 9	     % 将值9赋给x

还可以使用块注释运算符%{和%}编写注释块

运算符和特殊字符

运算符 作用
+

加; 加法运算符。

-

减; 减法运算符。

*

标量和矩阵乘法运算符。

.*

数组乘法运算符。

^

标量和矩阵求幂运算符。

.^

数组求幂运算符。

\

左除法运算符。

/

右除法运算符。

.\

数组左除法运算符。

./

数组右除法运算符。

:

冒号;生成规则间距的元素并表示整行或整列。

( )

圆括号;封闭函数参数和数组索引;重写优先级。

[ ]

括号;附件数组元素。

.

小数点。

省略号;行连续运算符

,

逗号;分隔一行中的语句和元素

;

分号; 分隔列并抑制显示。

%

百分号;指定注释并指定格式。

_

引用符号和转置运算符。

._

Nonconjugated转置运算符。

=

赋值运算符。

特殊变量和常量

名称 意义
ans

最近计算的答案。

eps

浮点精度。

i,j

虚数单位√-1。

Inf

无穷。

NaN

未定义的数值结果(不是数字)。

pi  π

命名变量

变量名称由字母组成,后跟任意数量的字母,数字或下划线。

大小写敏感

变量

在MATLAB环境中,每个变量都是一个数组或矩阵。

如定义

x = 3

它创建一个名为x的1乘1矩阵,并将值3存储在其元素中。

当表达式返回未分配给任何变量的结果时,系统会将其分配给名为ans的变量,该变量可在以后使用。

sqrt(78)

执行,输出为以下相当于把结果赋值给了ans变量

ans =  8.8318

可以使用ans变量参与其他计算

sqrt(78);
9876/ans

输出

ans =  1118.2

命令

MATLAB是一个用于数值计算和数据可视化的交互式程序。您可以通过在命令窗口的MATLAB提示符 '>>' 处键入命令来输入命令。

管理会话的命令:

命令 目的
clc 清除命令窗口。
clear 从内存中删除变量。
exist 检查文件或变量的存在。
global 声明变量为全局变量。
help 搜索帮助主题。
lookfor 在帮助条目中搜索关键字。
quit 停止MATLAB。
who 列出当前变量。
whos 列出当前变量(长显示)。

用于系统的命令

命令 目的
cd 更改当前目录。
date 显示当前日期。
delete 删除文件。
diary 开启/关闭日记文件录制。
dir 列出当前目录中的所有文件。
load 从文件加载工作区变量。
path 显示搜索路径。
pwd 显示当前目录。
save 将工作空间变量保存在文件中。
type 显示文件的内容。
what 列出当前目录中的所有MATLAB文件。
wklread 读取.wk1电子表格文件。

输入和输出命令

命令 目的
disp 显示数组或字符串的内容。
fscanf 从文件中读取格式化的数据。
format 控制屏幕显示格式。
fprintf 执行对屏幕或文件的格式化写入。
input 显示提示并等待输入。
; 禁止丝网印刷。

fscanf和fprintf命令的行为像C的scanf和printf函数。它们支持以下格式代码

格式代码 目的
%s 格式化为字符串。
%d 格式化为整数。
%f 格式化为浮点值。
%e 以科学计数形式格式化为浮点值。
%g 以最紧凑的格式进行格式化:%f或%e。
\n 在输出字符串中插入新行。
\t 在输出字符串中插入一个选项卡。

向量,矩阵和数组命令

命令 目的
cat 连接数组。
find 查找非零元素的索引。
length 计算元素数。
linspace 创建规则间隔的矢量。
logspace 创建对数间隔的向量。
max 返回最大元素。
min 返回最小的元素。
prod 每列的乘积。
reshape 更改大小。
size 计算数组大小。
sort 对每一列进行排序。
sum 对每列求和。
eye 创建一个单位矩阵。
ones 创建一个数组。
zeros 创建一个零数组。
cross 计算矩阵叉积。
dot 计算矩阵点积。
det 计算数组的行列式。
inv 计算矩阵的逆。
pinv 计算矩阵的伪逆。
rank 计算矩阵的秩。
rref 计算精简行梯形表格。
cell 创建单元格数组。
celldisp 显示单元格数组。
cellplot

显示单元格数组的图形表示形式。

num2cell 将数字数组转换为单元格数组。
deal 匹配输入和输出列表。
iscell

标识单元格数组。

绘图命令

命令 目的
axis 设置轴限制。
fplot

函数的智能绘图。

grid 显示网格线。
plot 生成xy图。
print 打印图或将图保存到文件中。
title 将文本放在图的顶部。
xlabel 在x轴上添加文本标签。
ylabel 将文本标签添加到y轴。
axes 创建轴对象。
close 关闭当前图。
close all 关闭所有地块。
figure 打开一个新的图形窗口。
gtext 通过鼠标启用标签放置。
hold 冻结当前图。
legend 用鼠标放置图例。
refresh 重新绘制当前图形窗口。
set 指定对象(例如轴)的属性。
subplot 在子窗口中创建图。
text 在图中放置字符串。
bar 创建条形图。
loglog 创建对数-对数图。
polar 创建极坐标图。
semilogx 创建半对数图。(对数横坐标)。
semilogy 创建半对数图。(对数纵坐标)。
stairs 创建楼梯图。
stem 创建茎图。

 

 

save 命令

save 命令:用于将工作空间中的所有变量保存为当前目录中扩展名为.mat的文件。

save myfile

load命令:加载文件

load myfile

who命令whos命令

who命令显示您已使用的所有变量名。

who

输出

Your variables are:
a    ans  b    c

whos命令显示了有关变量的更多信息-

  • 当前内存中的变量
  • 每个变量的类型
  • 分配给每个变量的内存
  • 它们是否为复杂变量
whos

输出:

Attr Name        Size        Bytes      Class
==== ====        ====        ====       ===== 
   a             1x1           8        double
   ans           1x70         757        cell
   b             1x1           8        double
   c             1x1           8        double

Total is 73 elements using 781 bytes

clear命令

clear x     % it will delete x, won't display anything
clear       % it will delete all variables in the workspace
            %  peacefully and unobtrusively

format命令

格式功能 最多显示
format short

四个小数位(默认值)。

format long

16位小数。

format short e 五位数加指数。
format long e 16位数字加指数。
format bank 两个小数位数。定点货币形式
format + 正数,负数或零。
format rat 有理近似。小数分数表示
format compact 禁止某些换行符。
format loose 重置为不太紧凑的显示模式。

 

默认情况下,MATLAB显示带有四个小数位值的数字。这就是所谓的short format。

但是,如果要提高精度,则需要使用format命令。

format long命令在小数点后显示16位数字。

format long
x = 7 + 10/3 + 5 ^ 1.2

输出:

x = 17.2319816406394

short format保留4位小数

format short
x = 7 + 10/3 + 5 ^ 1.2
x = 17.232

format bank命令将数字四舍五入到小数点后两位。

format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6
weekly_wage = 1064.70

format short e命令允许以指数形式显示,小数点后四个位加上指数。

format short e
4.678 * 4.9
ans = 2.2922e+01

format long e命令允许以指数形式显示,小数点后四个位加上指数。

format long e
x = pi
x = 3.141592653589793e+00

format rat命令给出了由计算得出的最接近的有理表达式。

format rat
4.678 * 4.9
ans = 34177/1491

向量

向量是一维数字数组。MATLAB允许创建两种类型的向量:

  • 行向量
  • 列向量

Row vectors(行向量) 通过将元素集括在方括号中并使用空格或逗号定界元素来创建。

r = [7 8 9 10 11]

MATLAB将执行上述语句并返回以下结果

r =

   7    8    9   10   11

执行:

r = [7 8 9 10 11];
t = [2, 3, 4, 5, 6];
res = r + t

输出:

res =

         9         11         13         15         17

Column vectors(列向量) 通过将元素集括在方括号中并使用分号(;)分隔元素来创建。

c = [7;  8;  9;  10; 11]

MATLAB将执行上述语句并返回以下结果:

c =
       7       
       8       
       9       
      10       
      11

矩阵

矩阵是数字的二维数组。在MATLAB中,通过以空格或逗号分隔的元素的顺序输入每一行来创建矩阵,并用分号分隔行的结尾。

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

输出:

m =
       1              2              3       
       4              5              6       
       7              8              9

 

m文件

说明

MATLAB允许编写两种程序文件-

  • 脚本−脚本文件是扩展名为.m的程序文件。在这些文件中,您编写了一系列要一起执行的命令。脚本不接受输入,也不返回任何输出。它们对工作区中的数据进行操作。
  • 函数−函数文件也是扩展名为.m的程序文件。函数可以接受输入并返回输出。内部变量是函数的局部变量。

创建文件

可以使用MATLAB编辑器或任何其他文本编辑器来创建.m文件。

可以通过两种方式打开MATLAB编辑器:

  • 使用命令提示符
  • 使用IDE

使用命令提示符,请键入edit命令提示符。这将打开编辑器。您可以直接输入edit,然后输入文件名(扩展名为.m)

edit

或者:

edit myfile.m

上面的命令将在默认的MATLAB目录中创建文件。如果要将所有程序文件存储在特定文件夹中,则必须提供完整路径。

可以建一个文件夹,之后在文件夹中创建文件:

mkdir progs    % create directory progs under default directory
chdir progs    % changing the current directory to progs
edit  prog1.m  % creating an m file named prog1.m

如果是第一次创建文件,MATLAB会提示您进行确认。单击是。

或者,如果您使用的是IDE,请选择“新建”->“脚本”。这还将打开编辑器并创建一个名为“无标题”的文件。您可以在键入代码后命名并保存文件。

运行文件

例如创建的文件内容为:

NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;

Total = NoOfStudents + TeachingStaff ...
   + NonTeachingStaff;
disp(Total);

创建并保存文件后,可以通过两种方式运行它

  • 单击Run编辑器窗口上的按钮或
  • 只需在命令提示符下键入文件名(不带扩展名):>> myfile

命令窗口提示符显示结果:

6170

示例:

a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)

输出:

c =  12
d =  12.657
e =  63.285
f =    3.1852e-06

数据类型

MATLAB 不需要任何类型声明或维度语句。每当 MATLAB 遇到一个新的变量名,它就创建变量并分配适当的内存空间。

如果变量已经存在,那么MATLAB将用新内容替换原始内容,并在必要时分配新的存储空间。

MATLAB提供了15种基本数据类型。每种数据类型都存储矩阵或数组形式的数据。此矩阵或数组的大小最小为0×0,并且可以增长到任意大小的矩阵或数组。

  • int8:8位有符号整数
  • uint8:8位无符号整数
  • int16:16位有符号整数
  • uint16:16位无符号整数
  • int32:32位有符号整数
  • uint32:32位无符号整数
  • int64:64位有符号整数
  • uint64:64位无符号整数
  • single:单精度数值数据
  • double:双精度数值数据
  • logical:逻辑值1或0,分别表示true和false
  • char:字符数据(字符串存储为字符向量)
  • cell array:索引单元格数组,每个单元格能够存储不同维度和数据类型的数组
  • structure:类似于C的结构,每个结构都具有能够存储不同维度和数据类型的数组的命名字段
  • function handle:指向函数的指针
  • user classes:从用户定义的类构造的对象
  • java classes:从Java类构造的对象
str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)

输出

str = Hello World!
n =  2345
d =  2345
un = 790
rn = 5678.9
c =  5679

数据类型转换:

MATLAB提供了用于将值从一种数据类型转换为另一种数据的各种函数

函数 作用
char

转换为字符数组(字符串)

int2str 将整数数据转换为字符串
mat2str

将矩阵转换为字符串

num2str 将数字转换为字符串
str2double

将字符串转换为双精度值

str2num 将字符串转换为数字
native2unicode

将数字字节转换为 Unicode 字符

unicode2native 将Unicode字符转换为数字字节
base2dec

将N进制数字符串转换为十进制数

bin2dec 将二进制数字符串转换为十进制数
dec2base

将十进制数转换为字符串中的N进制数

dec2bin 将十进制转换为字符串中的二进制数
dec2hex

将字符串中的十进制数转换为十六进制数

hex2dec 将十六进制数字字符串转换为十进制数字
hex2num 将十六进制数字字符串转换为双精度数字
num2hex

将单精度和双精度转换为IEEE十六进制字符串

cell2mat 将单元格数组转换为数值数组
cell2struct

将单元数组转换为结构数组

cellstr 从字符数组创建字符串的单元格数组
mat2cell 将数组转换为单元格大小可能不同的单元格
num2cell

将数组转换为大小一致的单元格数组

struct2cell 将结构转换为单元格数组

数据类型的确定:

MATLAB提供了各种功能来识别变量的数据类型。

is 检测状态
isa 确定输入是否为指定类的对象
iscell 确定输入是否为单元格数组
iscellstr 确定输入是否为字符串的单元格数组
ischar 确定项目是否为字符数组
isfield 确定输入是否为结构数组字段
isfloat 确定输入是否为浮点数组
ishghandle

适用于处理图形对象句柄

isinteger 确定输入是否为整数数组
isjava 确定输入是否为Java对象
islogical 确定输入是否为逻辑数组
isnumeric 确定输入是否为数值数组
isobject 确定输入是否为MATLAB对象
isreal 检查输入是否为实数数组
isscalar 确定输入是否为标量
isstr 确定输入是否为字符数组
isstruct 确定输入是否为结构数组
isvector 确定输入是否为向量
class 确定对象的类别
validateattributes 检查数组的有效性
whos 列出工作空间中的变量,包括大小和类型
x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
 
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
 
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
 
x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)

输出:

x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =

          1          2          3

ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0

 

posted @ 2025-08-22 13:46  星光闪闪  阅读(125)  评论(0)    收藏  举报