文章目录
数组
在MATLAB中一般使用方括号"[]"、逗号",",空格号和分号";"来创建数组,数组中同一行的元素使用逗号或空格进行分隔,不同行之间用分数进行分隔。
创建
通过冒号创建一维数组
matlab
x=A:step:B
A是创建一维数组的第一个变量,step是每次递增或递减的数值,直到最后一个元素和B的差的绝对值小于等于step的绝对值为止。
通过logspace函数创建一维数组
matlab
y=logspace(a,b)
该函数创建行向量,第一个元素为 1 0 a 10^a 10a,最后一个元素 1 0 b 10^b 10b,形成总数为50个元素的等比数列。
matlab
y=logspace(a,b,n)
该函数创建行向量,第一个元素为 1 0 a 10^a 10a,最后一个元素 1 0 b 10^b 10b,形成总数为n个元素的等比数列。
通过linspace函数创建一维数组
matlab
y=linspace(a,b)
该函数创建行向量,第一个元素为 a a a,最后一个元素 b b b,形成总数为100个元素的等差数列。
matlab
y=linspace(a,b,n)
该函数创建行向量,第一个元素为 a a a,最后一个元素 b b b,形成总数为n个元素的等差数列。
通过randperm生成随机整数排列
matlab
P=randperm(N);%生成一个[1,2,..,N]的一个随机排列
P=randperm(N,K);%生成一个长度为K的向量,其中元素取自1~N间的整数,无重复
perms(a);%返回向量a的全排列
运算
算术运算
- +,-:数组间加法、减法运算直接对对应元素进行操作,要求是数组A、B维数相同
- ./、.*、.\:数组间的乘除运算直接对对应元素进行操作,要求是数组A、B维数相同,其中A./B=B.\A
- .^:实现乘方,数组对数组表示数组各个元素对另一个数组各个元素进行乘方操作,要求维数相同,标量对数组乘方和数组对标量都是各个元素与标量之间的运算
- dot():点积操作,要求维数相同
关系运算
<、<=、>、>=、==、~=
逻辑运算
&、|、~
优先顺序
- 括号
- 转置和乘幂
- 乘除
- 加减
- 冒号
- 关系运算
- 逻辑运算
矩阵
矩阵是数学上的概念,而数组是计算机程序设计领域的概念。
创建
矩阵的创建有两种方法,一种是采用"[]",将矩阵元素置于方括号内,同行元素之间用空格或逗号隔开,行与行之间用分号隔开,另一种就是创建特殊矩阵。
matlab
OneMatrix = ones(2);%构建全1矩阵 ones(m,n,...,p)
zerosMatrx = zeros(2);%构建全0矩阵 zeros(m,n,...,p)
Identity = eye(2);%构建单位矩阵 eye(2,3) eye(3,2)
Random = rand(2,3);%构建随机矩阵,0到1之间均匀分布
R=randi(IMAX,N);%返回一个N*N随机矩阵,矩阵中的元素为1~MAX之间的均匀分布随机整数
R=randi(IMAX,M,N);%返回一个N*M随机矩阵,矩阵中的元素为1~MAX之间的均匀分布随机整数
矩阵操作
matlab
Randoma = randn(1,4);%构建随机矩阵,均值为0,单位方差的正态分布随机数
Randoma = reshape(Randoma,2,2);%生成2*2的矩阵,元素按现行索引的顺序从Randoma中取
Randoma = fliplr(Rnadoma);%将矩阵的每一行逆序排列
下标引用
矩阵可以通过双下标引用和单下标引用两种方式获得元素,其中单下标引用列优先。
matlab
IND = sub2ind(size,i,j);%将双下标索引转换为单下标索引
[I J] = ind3sub(size,ind);%将单下标转换为双下标索引
矩阵信息提取
matlab
%获取矩阵结构
A = zeres(4,4);%构造全0矩阵
isempty(A);%判断矩阵A是否为空
isscalar(A);%判断矩阵A是否是标量
isvector(A);%判断矩阵A是否是向量
issparse(A);%判断矩阵A是否为稀疏矩阵
%获取矩阵大小
ndims(A);%获取矩阵维数
[m,n]=size(A);%获取矩阵各维长度
length(A);%获取最长维的长度
numel(A);%获取矩阵元素个数
删除与扩展
matlab
A=[1 1;2 2];%初始化矩阵
A(3,:)=3;%整行扩展赋值
A(4,1)=4;A(4,2)=5;%单个元素赋值增加新元素
A(2,:)=[];%删除整行
合并
matlab
A=[2 0 -1;1 3 2];
B=[1 7 -1;4 2 3;2 0 1];
C=[1 0 1 0;-1 2 0 1];
MAB1=cat(1,A,B);%按行合并=horcat(A,B)=[A,B]
MAB2=cat(2,A,C);%按列合并==vercat(A,C)=[A;C]
Y=blkdiag(A,B,C);%构造对角化矩阵
矩阵元素的运算
基本运算和数组类似
matlab
A\B;%表示A的逆矩阵乘以B
A/B;%表示A乘以B的逆矩阵
B=sort(A);%表示对A按列进行升序排序
B=sort(A,dim);%若dim为1按列升序,若dim为2,按行升序
B=sort(A,dim,mode);%若mode为'ascend',则升序,若mode为'descend',则降序
B=sum(A);%计算各列元素之和,返回行向量
B=sum(A,dim);%若dim为1,则同上;若为2,则计算各行向量之和,返回列向量
B=cumsum(A);%返回一个矩阵,第n行表示每列第1到n个数的和
B=cumsum(A,dim);%若dim为1,则同上;若为2,则返回一个矩阵,第n列表示每行第1到n个数的和
%下列是求积运算,形式与求和一样
B=prod(A);
B=prod(A,dim);
B=cumprod(A);
B=cumprod(A,dim);
%差分运算:将矩阵元素某行(列)减去上一行(列)的结果保存在该行(列)
A=magic(3);
B=diff(A);%将矩阵元素某行减去上一行的结果保存在该行
C=diff(A,2);%2阶差分,即对一阶差分的矩阵再做一次差分
D=diff(A,1,dim);%dim取1表示按列,取2表示按行
矩阵运算
matlab
%范数
a=[1 2 3;4 5 6;7 8 9;];
b=norm(a);%默认二阶范数,可带参数
%秩
c=rank(a);
%行列式
d=det(a);
%迹,表示对角线元素的和
e=trace(a);