matlab简介
MATLAB(矩阵实验室)是由美国 MathWorks 公司开发的第四代高层次的编程语言和交互式环境数值计算,可视化和编程;
MATLAB 允许矩阵操作、绘制函数和数据、算法实现、创建用户界面;
MATLAB 能和在其他语言,包括 C、C++、Java 和 Fortran 语言编写的程序接口;
MATLAB 可以分析数据、开发算法、建立模型和应用程序;
MATLAB 拥有众多的内置命令和数学函数,可以帮助您在数学计算,绘图和执行数值计算方法。
matlab基本语法
常变量
每个MATLAB变量可以是数组或者矩阵。当表达式返回一个结果,不分配给任何变量,系统分配给一个变量命名ans。
>>sqrt(78)
ans =
8.8318
默认情况下,MATLAB 存储所有数值变量为双精度浮点值。其他数据类型存储文本,整数或单精度值或单个变量中相关数据的组合。
MATLAB提供15种基本数据类型,矩阵或数组的最小值是0到0,并且是可以到任何大小的矩阵或数组。
数据类型 /转换函数 | 8位有符号整数 |
---|---|
int8/int8() | 8位有符号整数 |
uint8/uint8() | 8位无符号整数 |
int16 | 16位有符号整数 |
uint16 | 16位无符号整数 |
int32 | 32位有符号整数 |
uint32 | 32位无符号整数 |
int64 | 64位有符号整数 |
uint64 | 64位无符号整数 |
single | 单精度数值数据 |
double | 双精度数值数据 |
logical | 逻辑值为1或0,分别代表true和false |
char | 字符数据(字符串作为字符向量存储) |
单元格阵列 | 索引单元阵列,每个都能够存储不同维数和数据类型的数组 |
结构体 | C型结构,每个结构具有能够存储不同维数和数据类型的数组的命名字 |
函数处理 | 指向一个函数的指针 |
用户类 | 用户定义的类构造的对象 |
Java类 | 从Java类构造的对象 |
复数
复数包括实部和虚部,用特殊变量 ‘i’ 或 ’j’ 表示,注意编程时不要将 i 和 j 变量另外赋值。
>> z=3+4j
z =3.0000 + 4.0000i
函数 | 说明 |
---|---|
real(z) | 返回实数z的实部 |
imag(z) | 返回实数z的虚部 |
conj(z) | 返回z的共轭复数 |
angle(z) | 返回复数z的幅角 |
abs(z) | 返回复数z的模 |
complex(a,b) | 以a和b作为实部和虚部,创建复数 |
特殊变量
Name | Meaning |
---|---|
ans | 默认的变量名,以应答最近依次操作运算结果 |
eps | 浮点数的相对误差 |
i,j | 虚数单位,定义为 i2 = j2 = -1 |
Inf/INF | 代表无穷大 |
NaN/nan | 代表不定值(不是数字) |
pi | 圆周率 |
nargin | 函数的输入变量数目 |
nargout | 函数的输出变量数目 |
realmin | 最小的可用正实数 |
realmax | 最大的可用正实数 |
矩阵和数组
包含空数组(empty array),标量(scalar),向量(vector),矩阵(matrix),数组(array)。
创建矩阵
行内元素空格或逗号隔开,行与行之间分号或回车隔开,元素可以是数值或表达式
>>a=[] %空矩阵
>>a = from:step:to %开始:步长:结束
>>a=linspace(a,b,n) %生成线性等分向量
>>a=logspace(a,b,n) %生成对数等分向量
>>a=[1:4;9,-1,6,3]
多维数组
cat(维,p1,p2) %将p1、p2等数组按照某维连接起来
reshape(p,[行 列 页]) %按照行列页重排多维数组p
permute(p,[列 行 页] %按照列页行重定义多维数组p
特殊矩阵
函数名 | 功能 |
---|---|
magic(N) | 产生N阶魔方矩阵(矩阵的行、列和对角线上元素的和相等) |
eye(m,n) | 产生m * n的单位矩阵,对角线全为1 |
zeros(d1,d2,d3,…) | 产生d1 * d2 * d3的全零数组 |
ones(d1,d2,d3,…) | 产生d1 * d2 * d3的全1数组 |
rand(d1,d2,d3,…) | 产生均匀分布的随机数组,元素取值范围0.0到1.0 |
randn(d1,d2,d3,…) | 产生正态分布的随机数组 |
操作数组 | |
数组赋值,元素赋值时,如果行或者列超出矩阵的大小,则自动扩充矩阵。 | |
全下标: a(i,j)=b | |
单下标: a(n)=b | |
全元素: a=b | |
矩阵的合并 |
>>c=[a b] %将矩阵a和b水平方向合并为c
>>c=[a;b] %将矩阵a和b垂直方向合并为c
数组元素的删除
>>x(:,3)=[] %删除一列元素
>>x=[] %删除所以元素为空矩阵
矩阵和数组功能函数
数组翻转函数
>>flipud(x) %使x沿水平轴上下翻转
>>fliplr(x) %使x沿垂直轴左右翻转
>>flipdim(x,dim) %使x沿特定的州旋转,dim=1,行旋转,dim=2,列旋转
>>rot90(x,k) %使x逆时针旋转k*90°
数组查找函数
[a,b,...] = find(x)
n=find(x)
a=[1 2 3;4 5 6]
[n,m]=find(a == 3)
z=find(a == 3)
数组统计函数
max(x) %数组中各列的最大值
min(x) %数组中各列的最小值
mean(x) %数组中各列的平均值
std(x) %数组中各列标准差
median(x) %数列中各列的中间元素
var(x) %数列中各列的方差
[s,k]=sort(x,n,mode)%k为s元素的原位置,mode是排序方式,'ascend'是升序
sum(x,dim) %计算向量元素的和,dim指对应的维
下表列出了MATLAB用于工作数组、矩阵和向量的各种命令:
命令 | 作用/目的 |
---|---|
cat | 连接数组 |
length | 计算元素数量 |
linspace | 创建间隔向量 |
logspace | 创建对数间隔向量 |
max | 返回最大元素 |
min | 返回最小元素 |
prod | 计算数组元素的连乘积 |
reshape | 重新调整矩阵的行数、列数、维数 |
size | 计算数组大小 |
sort | 排序每个列 |
sum | 每列相加 |
eye | 创建一个单位矩阵 |
ones | 生成全1矩阵 |
zeros | 生成零矩阵 |
cross | 计算矩阵交叉乘积 |
dot | 计算矩阵点积 |
det | 计算数组的行列式 |
inv | 计算矩阵的逆 |
pinv | 计算矩阵的伪逆 |
rank | 计算矩阵的秩 |
rref | 将矩阵化成行最简形 |
cell | 创建单元数组 |
celldisp | 显示单元数组 |
cellplot | 显示单元数组的图形表示 |
num2cell | 将数值阵列转化为异质阵列 |
deal | 匹配输入和输出列表 |
iscell | 判断是否为元胞类型 |
矩阵算术运算
矩阵 | 作用 |
---|---|
A+B/A-B | 加减运算 |
A * B | 乘法运算,A列等与B行 |
A \ B 或 A / B | 左除或右除 |
A ^ B | 矩阵乘方 |
A’ | 矩阵A的转置 |
数组 | 作用 |
---|---|
A. *B | 数组A和数组B对应元素相乘 |
A. /B | 数组A除以数组B的对应元素 |
A. ^B | 数组B除以数组A的对应元素 |
A. ’ | 数组A的转置 |
稀疏矩阵
创建稀疏矩阵
sparse(i,j,s,m,n) %直接创建稀疏矩阵
%i,j是非零元素行列下标,s是向量,m,n是行列维数
sparse(p) %由全元素矩阵p转换为稀疏矩阵
函数名 | 功能 |
---|---|
nnz | 返回稀疏矩阵非零元素个数 |
nonzeros | 返回一个包含所以非零元素的列向量 |
nzmax | 返回最大的非零元素个数 |
spy | 用图形观看稀疏矩阵的非零元素分布情况 |
数组信息的获取
数组尺寸获取
函数名 | 功能 |
---|---|
size | d=size(A) %以行向量d表示A数组各维尺寸 。[m1,m2,…]=size(A) %返回数组A的各维尺寸 |
length | 返回数组A各维中最大维的长度 |
ndims | 返回数组A的维数 |
numel | 返回数组A的元素总个数 |
字符串
创建字符串
s1='matlab 7.3'
s2='显示'''matlab''' %使用''来输出‘
str=[s1,' ',s2]
字符串函数
strcat(s1,s2,…) %将s1,s2合并成一个长字符串
char(s1,s2,…) %将s1,s2合并成一个字符数组
strvcat(s1,s2,…) %将s1,s2合并成一个字符数组
字符串与数值转换函数表
函数名 | 功能 |
---|---|
abs | 将字符串转换成ASCII码数值 |
double | 将字符串转换成ASCII码数值 的double数值 |
str2num | 将字符串转换为数值 |
str2double | 将元胞字符串数组转换为数值 |
hex2num | 将IEEE格式十六进制字符串转换为双精度型数值 |
hex2dec | 将十六进制字符串转换为整型 |
bin2dec | 将二进制转换为十六进制 |
base2dec | 将任意进制字符串转换为十进制数 |
num2str | 将数值转换为字符串 |
mat2str | 将矩阵转换为字符串 |
dec2hex | 将正整数转换为十六进制字符串 |
dec2bin | 将正整数转换为二进制字符串 |
dec2base | 将正整数转换为任意进制字符串 |
char | 将数值整数部分转换为ASCII码等值的字符 |
常用字符串函数表 | |
函数 | 功能 |
– | – |
strcmp(s1 ,s2) | 比较两个字符串是否相等,相等为1不等为0 |
strncmp(s1 ,s2 ,6) | 比较两个字符串的前n个字符是否相等,相等 |
strcmpi(s1,s2) | 与strnemp功能相同,只是忽略大小写 |
strncmpi(s1 ,s2 ,6) | 与strncmp功能相同,只是忽略大小写 |
strmatch(s1,strvcat(s1 ,s2)) | 在字符数组中,查找匹配字符所在的行数 |
findstr(s1 ,‘t’) | 在字符串中查找另一字符串的位置 |
strtok(s1, ’ ‘) | 查找字符串中第一个分隔符(包括空格、Enter和Tab键) |
lower(s1 ) | 将字符串转换为小写 |
upper(s1 ) | 将字符串转换为大写 |
strjust([s1,’ '],'right) | 对齐字符串(左对齐、右对齐、居中) |
strrep(s1 ,‘7.3’,‘6.5’) | 将字符串中的部分字符用新字符串替换 |
eval(‘2*3’) | 执行字符串 |
double(‘a’) | 将字符型转换为其ASCII码的数值 |
计时函数
函数 | 命令 |
---|---|
cputime | 程序执行时间等于代码执行结束cputime-代码执行前cputime |
tic/toc | tic启动计时器,toc终止计时器,并返回程序运行时间 |
etime | t0 =clock,t1=clock,etime(t1,t0)返回t0到t1时间 |
关系运算
< 、<= 、> 、>=、== 、(等于)~=(不等于)
逻辑运算
logical函数将数值型转换为逻辑型
元素的逻辑运算
&(与)、|(或)、~(非)、xor(异或)
先决逻辑运算
A && B: 当A为0(false)时,直接得出逻辑结果为0,否则继续执行&运算
A || B 当A为1时,直接得出逻辑运算结果为1
位逻辑运算
bitand(位与),bitor(位或),bitcmp(位非)、bitxor(位异或)
命令
MATLAB提供管理会话的各种命令。如下表所示:
命令 | 目的/作用 |
---|---|
clc | 清除命令窗口。 |
clear | 从内存中删除变量。 |
exist | 检查存在的文件或变量。 |
global | 声明变量为全局。 |
help | 搜索帮助主题。 |
lookfor | 搜索帮助关键字条目。 |
quit | 停止MATLAB。。 |
who | 列出当前变量。 |
whos | 列出当前变量(长显示) |
使用MATLAB的时候有一些系统命令可以方便我们的操作,如在当前的工作区中可以使用系统命令保存为一个文件、加载文件、显示日期、列出目录中的文件和显示当前目录等。 | |
命令 | 目的/作用 |
– | – |
cd | 改变当前目录。 |
date | 显示当前日期。 |
delete | 删除一个文件。 |
diary | 日记文件记录开/关切换。 |
dir | 列出当前目录中的所有文件。 |
load | 从工作区加载一个文件中的变量。 |
path | 显示搜索路径。 |
pwd | 显示当前目录。 |
save | 保存在一个文件中的工作区变量。 |
type | 显示一个文件的内容。 |
what | 列出所有MATLAB文件在当前目录中。 |
wklread | 读取.wk1电子表格文件。 |
MATLAB输入和输出命令 | |
命令 | 作用/目的 |
– | – |
disp | 显示一个数组或字符串的内容。 |
fscanf | 阅读从文件格式的数据。 |
format | 控制屏幕显示的格式。 |
fprintf | 执行格式化写入到屏幕或文件。 |
input | 显示提示并等待输入。 |
; | 表示语句结束,不输出结果 |
fscanf和fprintf命令的行为像C scanf和printf函数。他们支持格式如下代码: | |
格式代码 | 目的/作用 |
– | – |
%s | 输入/输出字符串 |
%d | 输入/输出整数 |
%f | 输入/输出整数 |
%e | 输出科学计数法形式 |
%g | %f 和%e 的结合,根据数据选择适当的显示方式 |
用于数字显示格式的函数有以下几种形式: | |
Format函数 | 最多可显示 |
– | – |
format short | 四位十进制数(默认) |
format long | 15位定点表示 |
format short e | 五位浮点表示 |
format long e | 15位浮点表示 |
format bank | 两个十进制数字 |
format + | 正,负或零 |
format rat | 有理数近似 |
format compact | 变量之间没有空行 |
format loose | 变量之间有空行 |
MATLAB绘图命令 | |
命令 | 作用/目的 |
– | – |
axis | 人工选择坐标轴尺寸 |
fplot | 智能绘图功能 |
grid | 显示网格线 |
plot | 生成XY图 |
打印或绘图到文件 | |
title | 把文字置于顶部 |
xlabel | 将文本标签添加到x轴 |
ylabel | 将文本标签添加到y轴 |
axes | 创建轴对象 |
close | 关闭当前的绘图 |
close all | 关闭所有绘图 |
figure | 打开一个新的图形窗口 |
gtext | 通过鼠标在指定位置放注文 |
hold | 保持当前图形 |
legend | 鼠标放置图例 |
refresh | 重新绘制当前图形窗口 |
set | 指定对象的属性,如轴 |
subplot | 在子窗口中创建图 |
text | 在图上做标记 |
bar | 创建条形图 |
loglog | 创建双对数图 |
loglog 创建双对数图 | |
polar | 创建极坐标图像 |
semilogx | 创建半对数图(对数横坐标) |
semilogy | 创建半对数图(对数纵坐标) |
stairs | 创建阶梯图 |
stem | 创建针状图 |
matlab小tips
MATLAB使用save命令保存工作区中的所有变量,然后作为一个扩展名为.mat的文件,在当前目录中,使用load进行加载。
save myfile
load myfile
长任务可以通过使用省略号(…)延伸到另一条线路,例如。
final_velocity = initial_velocity ...
+ acceleration * time