MATLAB数组

文章目录

数组

在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():点积操作,要求维数相同

关系运算

<、<=、>、>=、==、~=

逻辑运算

&、|、~

优先顺序

  1. 括号
  2. 转置和乘幂
  3. 乘除
  4. 加减
  5. 冒号
  6. 关系运算
  7. 逻辑运算

矩阵

矩阵是数学上的概念,而数组是计算机程序设计领域的概念。

创建

矩阵的创建有两种方法,一种是采用"\[\]",将矩阵元素置于方括号内,同行元素之间用空格或逗号隔开,行与行之间用分号隔开,另一种就是创建特殊矩阵。

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);
相关推荐
Dillon Dong2 分钟前
【风电控制】双馈风机网侧高低穿控制策略——从VrtCal信号处理到状态机逻辑的完整解析
算法·变流器·风电控制·dfig
fox_lht2 分钟前
14.2.读文件
开发语言·后端·rust
codeejun2 分钟前
每日一Go-74、Go 云原生可观测性实战之OpenTelemetry 全链路采集:Trace + Metrics + Logs
开发语言·云原生·golang
下午写HelloWorld2 分钟前
同态加密(Homomorphic Encryption, HE)
人工智能·算法·密码学·同态加密
CC数学建模3 分钟前
2026第八届中青杯全国大学生数学建模竞赛B题:AI生成内容的质量评估与参数优化完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
神仙别闹4 分钟前
基于 Python 实现 ANN 与 KNN 的图像分类
开发语言·python·分类
yugi9878384 分钟前
基于Qt的实用二维码生成解决方案
开发语言·qt
sheeta19984 分钟前
LeetCode 每日一题笔记 日期:2026.06.04 题目:3751. 范围内总波动值 I
笔记·算法·leetcode
_小许_4 分钟前
Go语言导入与导出excel文件
开发语言·golang·excel
SilentSamsara7 分钟前
高并发 API 压测与调优:locust + 火焰图 + 瓶颈定位
开发语言·python·青少年编程·docker·中间件