Matlab基础

目录

MATLAB计算基础

1、字符认知

常用命令功能
命令 说明 命令 说明
cd 显示或改变当前工作文件夹 load 加载指定文件的变量
dir 显示当前文件夹或指定目录下的文件 diary 日志文件命令
clc 清除工作窗口中所有显示的内容 ! 调用DOS命令
home 将光标移至命令行窗口的左上角 exit 退出matlab
clf 清楚图形窗口 quit 退出matlab
type 显示文件内容 pack 收敛内存碎片
clear 清理内存信息 hold 图形保持开关
echo 工作窗信息显示开关 path 显示搜索目录
disp 显示变量或文字内容 save 保存内存变量到指定位置



MATLAB默认常量
变量名 默认值
i & j 虚数单位
pi 圆周率(Π)
ans 存放最近一次无赋值变量语句的预算结果
Inf 无穷大
eps 机器浮点运算误差限(如果某变量的绝对值小于eps,则视为0)
NaN 不定式(0/0,或inf/inf,或超出存储大小的值)
lasterr 存放最后一次的错误消息
lastwarn 存放最后一次警告消息
  • 1、变量名区分大小写,因此A和a表示的是不同的变量;

  • 2、变量名以英文字母开头,每一个字母后可使用字母、数字、下划线,但不可以使用空格和标点符号;

  • 3、变量民不得超过31位,超过的部分将会被忽略;

  • 4、某些常量也可以作为变量使用;



MATLAB数据显示格式
格式 含义 * 格式 含义
format(short) 短格式(5位定点数) * format lone e 长格式e方式
format long 长格式(15点定位数) * format bank 2位十进制格式
format short e 短格式e方程 * format hex 十六进制格式


format string 结果
%d 把值作为整数值来处理
%e 用科学计数法来显示数据
%f 用于格式化浮点数并显示这个数值
%g 用科学计数格式,或浮点数这个格式,根据哪个短,并显示
\n 转到新的一行



2、创建函数

数组的创建与操作
对数组进行访问
通过logspace和linspace创建数组

1-3



3、数组运算


  在matlab中,常见的运算关系有算术运算、关系运算、逻辑运算:

算术运算:
  数组的运算是从单个的元素出发,针对每个元素进行运算。在MATLAB中,一维数组的算术运算包括加、减、乘、左除、右除和乘方。

1-4
1-5



  通过dot函数可以实现点积运算,其等价于.*,但是运算规则要求数组A和数组B的维数相同。函数的调用格式为:

  C=dot(A,B)或C=dot(A,B,dim),其中参数dim用于指定内积计算的维数。


4、矩阵的生成


直接输入
*输入表达式将自动计算出结果
常用特殊矩阵生成函数
函数 说明
one(n) 创建一个n x n的1矩阵
zeros(n) 创建一个n x n的0矩阵
eye(n) 创建一个n x n的单位矩阵
magic(n) 创建一个n x n的魔方矩阵,使其每一行、每一列元素之和相等
rand(n) 创建一个n x n的随机矩阵,其元素都在0-1之间随机分布
randn(n) 创建一个 n x n的矩阵,使元素为0-1零均值、单位方差的正态分布随机数
hilb(n) 创建一个n x n的hilbert矩阵
vander([1;2;3;x;y;z;]) 矩阵最后一列全为1,倒数第二列是指定向量,其他各列是其后列与倒数第二列的点乘积

*希尔伯特矩阵会因原始数据的微小扰动而产生不可靠的计算结果。故在matlab中有一个专门用于求希尔伯特矩阵逆函数invhlib(n),其功能是求n阶希尔伯特函数的逆函数

托普利兹矩阵:

矩阵的部分删除:
  在MATLAB中,可以将矩阵的某行或某列赋值为空值而直接删除此行或此列。要是删除行或列的部分元素则矩阵将会出错。(孔赋值只能有一个非冒号引索)


5、矩阵函数:

1
v=diag(A,k)

获取矩阵的对角线元素,默认k为0,当k=1时,为主对角线右上的对角线。

1
L=tril(X,k)

只返回矩阵的下三角部分,其余部分用0补齐;当不为0时,则返回其对应的三角区域。

1
L=triu(X,k)

只返回矩阵的上三角部分,其余部分用0补齐;当不为0时,则返回其对应的三角区域。

1
L=rot90(A,k)

将矩阵A逆时针旋转90k°

1
L=fliplr(A)

将矩阵A实现左右翻转



1
L=flipud(A)

将矩阵A实现上下翻转

1
L=flipdim(A,dim)

· 当 dim=1 时,数组上下翻转,相当于函数flipud(A)
· 当 dim=2 时,数组左右翻转,相当于函数fliplr(A)

1
B=inv(A)

求方阵A的逆矩阵,赋值给B

1
L=det(A)

求方阵A所对应行列式的函数值

1
L=rank(A)

求矩阵的秩

1
L=trace(A)

求矩阵的迹

1
2
3
norm(V)             计算向量V的2范数
norm(V,1) 计算向量V的1范数
norm(V,inf) 计算向量V的无穷范数

求矩阵的范数

1
2
3
cond(A,1)           计算A的1范数下的条件数
cond(A,2) 计算A的2范数下的条件数
cond(A,inf) 计算A无穷范数下的条件数

计算范数的条件数

1
2
3
E=eig(A)            求矩阵A的全部特征值,构成向量E
[V,D]=eig(A) 求矩阵A的全部特征值,构成对叫矩阵D,并求A的所有特征向量
[V,D]=eigs(A,k) 求矩阵A的前k个特征值构成对角矩阵D,并求A的前k个特征向量


1
2
sqrtm(A)            计算矩阵A的平方根
logm(A) 计算矩阵A的自然对数

矩阵的超越函数

1
expm(A)             以矩阵A为对数的指数,e^A

矩阵指数

1
2
3
4
B=spares(A)         将矩阵A转换为稀疏存储的矩阵B
nnz(B) 返回矩阵B中非0元素的个数
full(B) 返回稀疏矩阵B的原矩阵,即A
spy(B) 显示矩阵A中非零元素分布图
  • matlab中存在两种存储方式,完全存储方式和稀疏存储方式。


随机数

1、在[0,1]之间的随机数

rand(m,n)—产生m*n阶[0,1]之间的随机矩阵;

2.按概率产生随机数

h=randsrc(m) %mxm阶矩阵
h=randsrc(m,n) %mxn阶矩阵
h=randsrc(m,n[alphabet,prob]) %将’alphabet’中的值以’prob’的概率出现

1
2
3
4
5
6
7
8
9
alphabet=[52 53 54 55 56];
prob=[0.05 0.25 0.4 0.25 0.05];
l=randsrc(100000,1,[alphabet;prob]);
a=sum(l(:)==52);
b=sum(l(:)==53);
c=sum(l(:)==54);
d=sum(l(:)==55);
e=sum(l(:)==56);
A=[a,b,c,d,e]

1-10

3、均匀分布随机数

nuifrnd(a,b,m,n)—产生m*n阶在[a,b]之间的随机数;

4、二项式矩阵

binornd(n,p[M,N,N,…])—生成的随机数服从参数为(N,p)的二项分布,这些随机数排列成MNP… 阶矩阵。如果只写M,则生成M*M矩阵;



数组的运算

1、数组间交集

1
C = intersect(A,B)


2、数组间并集

1
C = union(A,B)


3、数组间补集

1
C = setdiff(A,B)
  • 子集写后边



八、数据读取

8.1 从Excel中读取数据

1
a = xlsread('D:\CO2.xlsx',Sheet1,'A1:B5')
  • 其中,‘D:\CO2.xlsx’表示读入的EXCEL数据所在的路径以及EXCEL的文件名称;2表示位于sheet2;’A1:B5’表示需要读入的数据范围

8.2 时间格式在matlab可识别与可视时间切换

1
2
3
4
5
6
7
8
9
10
a=StockSampleA1{:,2};%注意:由于这是表数据,不能用小括号
B=[];
for I=1:n
y=floor(a(I)/10000);
S=a(I)-y*10000;
m=floor(S/100);
d=S-m*100;
b=datenum(y,m,d);
B=[B;b]
end
  • b=datenum(y,m,d)—函数可以将可视时间格式转换为Matlab可识别格式;
  • D=datetime(b)—该函数可以将Matlab可识别时间格式转化为可视时间格式;