美文网首页MATLAB
2-matlab使用笔记之数组与矩阵

2-matlab使用笔记之数组与矩阵

作者: aasdfghjkll | 来源:发表于2019-06-18 23:17 被阅读1次

       本文笔记来自《MATLAB-R2014a完全自学一本通》,记录了一些常用的操作,更复杂的操作请看书本~


【目录】

1.矩阵

  • 1.矩阵运算

    a. 求矩阵中元素的平均值

  • 2.矩阵结构

    a. 矩阵的构造
    b. 矩阵大小及结构的改变
    c. 矩阵的数据类型
    d. 矩阵占用的内存

  • 3.矩阵的保存和加载

    a. 矩阵在MATLAB中的存储方法
    b. 矩阵元素的寻址


【正文】

1.矩阵

矩阵与数组的联系主要体现在:在MATLAB中,矩阵是以数组的形式存在的,因此一维数组相当于向量,二维数组相当于矩阵,所以矩阵是数组的子集

1.矩阵运算

矩阵运算包括矩阵求和、求平均、求最大最小值等

例如:求矩阵中元素的平均值

分为按列平均、按行平均和全部平均

A=rand(3)
a=mean(A,1)       %按列平均
b=mean(A,2)       %按行平均
c=mean(A(:))       %全部平均

结果如下:

2.矩阵结构

矩阵的基本操作主要有矩阵的构建、维度、矩阵大小的改变、矩阵的索引、矩阵属性信息的获取、矩阵结构的改变等。

在MATLAB中,单个实数或者复数都是以矩阵的形式存储的,单个数据或由单个数据构造的矩阵都是标量。

a. 矩阵的构造

  • 空矩阵[]默认为二维

  • 创建一个三维零矩阵X:
    X=zeros(8,10,50)
    可以理解为有50个8行10列的矩阵

  • 矩阵中符号的意义:
    逗号和空格意义相同,用于分隔同行元素;
    “;”用于分隔不同的行;

  • 矩阵下标的引用:
    分为双下标索引和单下标索引
    双下标索引A(2,3)表示矩阵第二行第3列
    单下标索引A(7)在4x4的矩阵中表示第3行第2列的数(列元素优先,按列排序进行重组,成为一维数组)
    下标为:时,表示下标为所有的行或列,是行还是列要视情况而定
    下标为i:j时,表示下标为对应i到j的行或列
    下标为[i1,i2,...]时,表示下标为对应i1,i2,...的行或列
    双下标索引和单下标索引的转换
    双变单:IND=sub2ind(siz,i,j);siz可直接用size(A)表示,表示转换矩阵的列数,IND表示转换后的单下标索引值;
    单变双:[I,J]=ind2sub(siz,ind),I和J分别表示单值二维索引的行号和列号
    end可以表示一串数字中的最后一个,例如:A(2:end)表示矩阵A的单下标索引从第2行或第二列到最后一行或一列

  • 矩阵结构的判断
    是否为空:isempty(A)
    是否是单元素的标量矩阵:isscalar(A)
    是否是只有一行或一列元素的一维向量:isvector(A)
    数组是否是稀疏矩阵:issparse(A)

b. 矩阵大小及结构的改变

  • 矩阵的大小
    \diamond 矩阵的维度的获取:n=ndims(X)

    \diamond 矩阵各维度长度的获取:[m,n]=size(X),其中````size(X,dim)```可以获得指定维度的长度,1表示行,2表示列

    \diamond n=length(X)表示获取矩阵最长维的长度
    \diamond 获取矩阵元素的个数:n=numel(X)

  • 矩阵的旋转与维度的改变
    \diamond 行和列的逆序排列:分别用fliplr(X)flipud(X)
    \diamond 逆时针旋转,90°和kx90°rot90(X)rot90(X,k)
    \diamond 将矩阵A和B组合成一个dim维的多维矩阵:cat(dim,A,B),举个栗子:A=[1 2 3],B=[4 5 6],dim=3,那么最后的矩阵C中矩阵的排列方式为:
    C=\left( \begin{matrix} 1 & 4\\ 2 & 5 \\ 3 & 6 \end{matrix} \right)
            这里也可以看出向量的默认排列方式是按列排列(在内存中是按列存储)矩阵A和B需要具有相同的维度,cat函数,还有一些其它函数形成的多维矩阵都是后两维表示行数和列数,而第一维可以理解成是一行C。
    \diamond将一维或二维矩阵进行升序或降序排序sort(A),二维矩阵时,对每一列分别进行排序;sort(A,dim)按dim指定的方向进行排序,dim=1按列排序,dim=2按行排序;sort(A,dim,mode)mode='ascend'为升序,mode='descend'为降序;得到排序后元素在原矩阵中的行位置或列位置的索引IX:[B,IX]=sort(A,...)

  • 删除矩阵元素
    3中 3)矩阵元素的赋值

c. 矩阵的数据类型
下表是矩阵数据类型的测试函数,从中也可以看出矩阵的数据类型的种类

矩阵数据类型的测试函数

下面是cell单元的相关内容:

cell单元(也叫矩阵的元胞类型结构)

cell每个单元的数据之间用逗号,隔开,最外层用{}大括号括起来,单元内可以用不同格式的数据

Matlab中的向量是按列存储的(按列存储是指在多维数组内存中是一列一列逐个放元素的),关于为什么按列存储,比较合理的说法是在设计Matlab语言时,最流行的语言是Fortran,而Fortran恰好是按列存储。
看这个讨论可以更加了解:matlab和Fortran二维数组为什么按列优先存储?

\diamond 创建单行cell

\diamond 创建多行cell

cell(m,n)表示创建一个m行n列的cell:

向其中填数据:

获取元胞中的数据:
输入:
A{1,2}(1)
返回2

A{1,2}(方括号)返回的是cell变成的矩阵,所以可以通过A{1,2}(1)得到其中的第1个元素,而通过A(1,2)(圆括号)返回的是一个矩阵,矩阵中的元素是cell类型的,所以需要写成以下方式:

x=A(1,2);
x{1};   %得到cell变成的矩阵
x(1) ;  %到此得到第一个元素

d. 矩阵占用的内存
whos命令:

3.矩阵的保存和加载

a. 矩阵在MATLAB中的存储方法
列优先的原则依次放置,例如矩阵:
C=\left( \begin{matrix} 1 & 4\\ 2 & 5 \\ 3 & 6 \end{matrix} \right)
(就是上面出现过的矩阵~),它的存储方式在空间中是这样的:

1 2 3 4 5 6

而不是这样的:

1 4 2 5 3 6

b. 矩阵元素的寻址
1)下标寻址方法:
1矩阵的构造矩阵下标索引部分已经记录了具体的使用方法
2)线性寻址
单一下标,该下标是通过矩阵的双下标通过换算得到的,A(i,j)的单一下标为:A((j-1)·m+i),j是所在列,m是总行数
3)矩阵元素的赋值
为单个元素赋值的例子:A(i,j)=value
删除矩阵中的所有元素:
A=[];
4)矩阵元素的扩展与删除
用例子来理解,对矩阵:

A=[1,2;3,4]

%结果:
% A =
% 
%      1     2
%      3     4

整行赋值:

A(3,:)=3

%结果
% A =
% 
%      1     2
%      3     4
%      3     3

A(4,2)=5;

%结果
% A =
% 
%      1     2
%      3     4
%      3     3
%      0     5

默认补一行,没有指定数值的地方会补0

A(2,:)=[]

%结果
% A =
% 
%      1     2
%      3     3
%      0     5

此外,还有矩阵合并的函数可以进行更多矩阵的操作:

矩阵合并函数

用到时继续更新🏃

相关文章

  • 2-matlab使用笔记之数组与矩阵

    本文笔记来自《MATLAB-R2014a完全自学一本通》,记录了一些常用的操作,更复杂的操作请看书本~ 【目录】 ...

  • Python:numpy数据总体概要

    个人使用:numpy上就使用两种类型的数据:数组、矩阵由于科学计算比较多,所有更偏向于使用矩阵。 使用体会: 数组...

  • Numpy 学习笔记

    numpy 笔记 入门基础 转化为矩阵 输出矩阵维度 输出形状 共有多少元素 创建numpy数组 创建0矩阵 创建...

  • 2018-05-25

    python 1.python中数组和矩阵乘法及使用总结 对数组的运算 矩阵求逆,转置,求迹

  • 学习R记录 <- 基础3

    向量、矩阵、数组 向量、矩阵、数组,都是在使用R中常用到的 1.1向量 使用c函数可以拼接数值和向量 除此之外用v...

  • R语言编程艺术 第2章 向量(上)

    2.1标量、向量、数组与矩阵 向量长度:length()矩阵、数组本质上是向量。 2.2声明 变量可以直接赋值,无...

  • MATLAB的矩阵运算与重构

    数组运算与矩阵运算 在MATLAB中,术语矩阵和数组在一般情况下是没有区别的。严格地说,一个矩阵就是一个二维的数组...

  • Numpy教程(4)

    Numpy基本操作 数组与标量、数组之间的运算 数组的矩阵积(matrix product) 数组的索引和切片 数...

  • R语言入门笔记(2) - R语言科学计算

    R语言科学计算 分类统计 mean(),求平均值 min(),求最小值 sd(),求标准差 数组和矩阵 数组与矩阵...

  • 三 ndarray 数据基本操作

    ndarray 数据基本操作 (1)数组与标量、数组之间的运算 (2)数组的矩阵积(matrix produ...

网友评论

    本文标题:2-matlab使用笔记之数组与矩阵

    本文链接:https://www.haomeiwen.com/subject/ahqlgqtx.html