MATLAB数组

admin2024-05-15  1

文章目录

  • 数组
    • 创建
      • 通过冒号创建一维数组
      • 通过logspace函数创建一维数组
      • 通过linspace函数创建一维数组
    • 通过randperm生成随机整数排列
    • 运算
      • 算术运算
      • 关系运算
      • 逻辑运算
      • 优先顺序
  • 矩阵
    • 创建
    • 矩阵操作
    • 下标引用
    • 矩阵信息提取
    • 删除与扩展
    • 合并
    • 矩阵元素的运算
    • 矩阵运算

数组

在MATLAB中一般使用方括号"[]“、逗号”,“,空格号和分号”;"来创建数组,数组中同一行的元素使用逗号或空格进行分隔,不同行之间用分数进行分隔。

创建

通过冒号创建一维数组

x=A:step:B

A是创建一维数组的第一个变量,step是每次递增或递减的数值,直到最后一个元素和B的差的绝对值小于等于step的绝对值为止。

通过logspace函数创建一维数组

y=logspace(a,b)

该函数创建行向量,第一个元素为 1 0 a 10^a 10a,最后一个元素 1 0 b 10^b 10b,形成总数为50个元素的等比数列。

y=logspace(a,b,n)

该函数创建行向量,第一个元素为 1 0 a 10^a 10a,最后一个元素 1 0 b 10^b 10b,形成总数为n个元素的等比数列。

通过linspace函数创建一维数组

y=linspace(a,b)

该函数创建行向量,第一个元素为 a a a,最后一个元素 b b b,形成总数为100个元素的等差数列。

y=linspace(a,b,n)

该函数创建行向量,第一个元素为 a a a,最后一个元素 b b b,形成总数为n个元素的等差数列。

通过randperm生成随机整数排列

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. 逻辑运算

矩阵

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

创建

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

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之间的均匀分布随机整数

矩阵操作

Randoma = randn(1,4);%构建随机矩阵,均值为0,单位方差的正态分布随机数
Randoma = reshape(Randoma,2,2);%生成2*2的矩阵,元素按现行索引的顺序从Randoma中取
Randoma = fliplr(Rnadoma);%将矩阵的每一行逆序排列

下标引用

矩阵可以通过双下标引用和单下标引用两种方式获得元素,其中单下标引用列优先。

IND = sub2ind(size,i,j);%将双下标索引转换为单下标索引
[I J] = ind3sub(size,ind);%将单下标转换为双下标索引

矩阵信息提取

%获取矩阵结构
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);%获取矩阵元素个数

删除与扩展

A=[1 1;2 2];%初始化矩阵
A(3,:)=3;%整行扩展赋值
A(4,1)=4;A(4,2)=5;%单个元素赋值增加新元素
A(2,:)=[];%删除整行

合并

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);%构造对角化矩阵

矩阵元素的运算

基本运算和数组类似

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表示按行

矩阵运算

%范数
a=[1 2 3;4 5 6;7 8 9;];
b=norm(a);%默认二阶范数,可带参数

%秩
c=rank(a);

%行列式
d=det(a);

%迹,表示对角线元素的和
e=trace(a);
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!