1.1.3多维数组及其操作

[矩阵的基本操作] (https://blog.csdn.net/baidu_34604003/article/details/52491161)

1.一个三维数组由行、列和页三维组成,其中每一页包含一个由行和列构成的二维数组。

2.利用标准数组函数创建多维数组

A=zeros(4,3,2) 生成一个4行3列2页的三维全0数组,ones,rand和randn等函数有相似的用法。

3.利用直接索引方式生成多维数组

A=zeros(2,3)

A(:,:,2)=ones(2,3)

A(:,:,3)=4

上面的代码先生成一个二维数组作为三维数组的第一页,然后通过数组直接索引,添加第二页、第三页。

4.利用函数reshape和repmat生成多维数组

B=reshape(A,2,9)

B=[A(:,:,1) A(:,:,2) A(:,:,3)] %结果与上面一样。

reshape(B,2,3,3)

reshape(B,[2 3 3]) %结果与上面一样。

提示:reshape函数可以将任何维数的数组转变成其他维数的数组。

5.利用repmat函数生成多维数组

C=ones(2,3)

repmat(C,[1 1 3]) % repmat写出类似reshape的repmat(C,1,1,3)将显示出错

提示:repmat是通过数组复制创建多维数组的,上面的代码即是将数组C在行维和列维分别复制一次,然后再页维复制三次得到2×3×3的三维数组。

6.利用cat函数创建多维数组

a=zeros(2);

b=ones(2);

c=repmat(2,2,2);

D=cat(3,a,b,c)%创建三维数组

D=cat(4,a,b,c) %创建4维数组。

D(:,1,:,:) %查看第一列的数据。

size(D) %可以知道数组D的具体维数。

7.数组运算与处理

数组之间的运算要求两个数组在任何一维都必须具有相同的大小。

1)squeeze函数用于删除多维数组中的单一维(即大小为1的那些维)

E=squeeze(D)

size(D) E的数据和D一样,但比D少了一维,只有2行、2列和3页。

2)reshape函数可以将一个三维向量变成一维向量。

v(1,1,:)=1:6

squeeze(v)

v(:)

3)reshape函数用于改变多维数组的行、列、页以及更高阶的维数,但不改变数组元素的总个数。

F=cat(3,2+zeros(2,4),ones(2,4),zeros(2,4))

G=reshape(F,[3,2,4])

H=reshape(F,[4 3 2]) 或K=reshape(F,2,12)

多维数组的重组按这样的顺序:第一页的第一列、第二列……,第二页的第一列、第二列……。

7.sub2ind函数和ind2sub函数用于多维数组的直接引用,索引顺序与重组顺序一致。

sub2ind(size(F),1,1,1) %求第1行、第1列、第1页的数值的单一索引

sub2ind(size(F),1,2,1) %求第1行、第2列、第1页的数值的单一索引

sub2ind(size(F),1,2,3) %求第1行、第2列、第3页的数值的单一索引

[r c p]=ind2sub(size(F),19) %由单一索引求其对应的行列页数值。

8.函数flipdim用于多维数组的翻转,相当于二维数组中的flipud和fliplr函数。例如下面的代码进行按行、列和按页翻转。

M=reshape(1:18,2,3,3)

flipdim(M,1) %每一页中的行翻转

flipdim(M,2) %每一页中的列翻转

flipdim(M,3) %将第一和第三页翻转调换

9.函数shiftdim用于循环轮换一个数组的维数。如果一个数组r行、c列和p页,则循环轮换一次,就生成一个c行、p列和r页的数组。

M %重新调用

shiftdim(M,1) %轮换一次

shiftdim(M,2) %轮换两次

数组轮换后规律很难直观理解,我们可以将三维数组看成一个类似魔方的方形盒子

函数shiftdim也支持负的循环轮换次数。执行该轮换时,数组的维数增加,并且多出的维数均为单一维。

M %重新调用

size(M)

shiftdim(M,-1)

size(ans)

10.函数permute和ipermute用于实现多维条件下的转置操作。从本质上讲permute函数是shiftdimhas函数的扩展。

M %重新调用

permute(M,[2 3 1])

shiftdim(M,1) %两者结果一样

permute函数中的参数[2 3 1]表示使函数第二维成为第一维,第三维成为第二维,第一维成为第三维。

11. permute(M,[2 1 3]) %[2 1 3]表示将数组的行列相互转置,页保持不变(只在第一和第二维转置)。

permute函数的第一个参数为待转置的数组,第二个参数为转置顺序,它必须是待转置的多维数组的维数的某种排列,否则所进行的转置无法进行。 permute函数也可以用来将一个数组变成更高维的数组,例如shiftdim(M,-1)也可以用permute函数来实现。

permute(M,[4 1 2 3])

这是因为任何一个数组都具有大于其本身尺寸的更高维数并且这些维数均为单一维数。例如二维数组具有页这一维,只是只有一页。总之超过数组本身大小的维数都是单一维。M是一个三维数组,其第四维必为单一维,因此将M的第四维与第一维转置,第一维变成了单一维。

12.二维数组两次转置变换回原来的形式,对于多维数组,用函数ipermute来取消permute所执行的转置操作。

M %重新调用

permute(M,[3 2 1])

ipermute(M,[3 2 1]) %在我的Matlab上运行没有达到预期效果

13.size函数返回数组每一维的大小

numel函数返回数组的总元素个数

当不指定size的返回值时,将返回一个由数组的各维数组成的向量。当我们知道数组的维数时,可以将维数返回到指定变量中。

[r c p]=size(M)

r=size(M,1)

c=size(M,2)

p=size(M,3)

v=size(M,4)

当一个数组的维数或者某数组维数不确定时,可以利用函数ndims获得数组的维数值。例如:ndims(M),与length(size(M))等效。

1.1.4变量的命名

变量及其命名规则

1.变量名的大小写是敏感。

2.变量的第一个字符必须为英文字母,而且不能超过31个字符。

3. 变量名可以包含下连字符、数字,但不能为空格符、标点。

4. 关键词不可以作为变量名,最后不要用特殊常量做变量名。

预定义的变量

ans预设的计算结果的变量名

epsMATLAB定义的正的极小值=2.2204e-16

pi内建的π值

inf∞值,无限大 ()

NaN无法定义一个数目 ()

i 或 j虚数单位i=j=√-1

nargin函数输入参数个数

nargout函数输出参数个数

realmax最大的正实数,

realmin最小的正实数

flops浮点运算次数

按第一维翻转 matlab,MATLAB自学笔记——矩阵相关推荐

  1. matlab的自学笔记

    一些符号的意思以及表示方法 sqrt-- 平方根 eg: 黄金分割比的比列公式为 (√5-1)/2           输出代码(sqrt(5)-1)/2 在编写指令和程序时,尽可能的不对表1.3-1 ...

  2. 程序阅读_全面详解LTE:MATLAB建模仿真与实现_自学笔记(1)调制与编码_程序阅读

    程序阅读_全面详解LTE:MATLAB建模仿真与实现_自学笔记(1)调制与编码_程序阅读 在粗浅地掌握了LTE知识后,从今天开始对<全面详解LTE:MATLAB建模仿真与实现>一书的学习. ...

  3. 自学笔记十四:Matlab浮点型:创建和转换、取值范围、运算和精度问题

    1.浮点型的概念 浮点型分为单精度(single)浮点型和双精度(double)浮点型: IEEE浮点数算术标准(IEEE 754)是IEEE二进位浮点数算术标准(IEEE Standard for ...

  4. matlab自学笔记一(台大郭彦甫)

    这是本人第一次写总结博客,其实之前已经学过郭老师的课程了,但是一段时间没使用matlab又忘记了,这次重新开始回顾一下,就从这次开始写我的个人学习总结博客吧! 第一堂课: 主要是介绍matlab的基本 ...

  5. matlab 平均梯度,OpenCV 自学笔记33. 计算图像的均值、标准差和平均梯度

    OpenCV 自学笔记33. 计算图像的均值.标准差和平均梯度 均值.标准差和平均梯度是验证图像质量的常用指标.其中: 均值反映了图像的亮度,均值越大说明图像亮度越大,反之越小: 标准差反映了图像像素 ...

  6. 啃 matlab一本通读书笔记

    摘要 本篇为自学matlab笔记,主要参考书为<matlab r2016a完全自学一本通> 如有侵权烦请告知删除 第一章 2016a概述 命令 命令说明 cd 显示或改变当前工作文件夹 d ...

  7. matlab 多维数组 滤波,matlab多维数组的处理......

    1.一个三维数组由行.列和页三维组成,其中每一页包含一个由行和列构成的二维数组. 2.利用标准数组函数创建多维数组 A=zeros(4,3,2) 生成一个4行3列2页的三维全0数组,ones,rand ...

  8. Matlab编程学习笔记【待续】

    最近想用Matlab进行数据分析,算法性能测试,平时由于用的是C.C++,因此很多习惯都一时改不了,这里自己列出来一些Matlab中明显不同的地方. 矩阵单元元素访问方式:A(1,2)---A[1][ ...

  9. matlab二维怎么定义,matlab中如何定义一个10*2的二维数组,用来储存后面算出的数值...

    答:可以先定义,这样可以预先分配空间,B = zeros(20, 2); 也可以运算出一个结果往数组里增添1列,动态来增加. matlab二维数组的创建: 二维数组实际上也是一个矩阵.应此直接创建一个 ...

最新文章

  1. View - RemoteViews
  2. Java jdbc中的date,大文本等类型转换
  3. rhel 8.2不识别unicode_Unicode的文本处理二三事
  4. 安卓使用 HTTP 协议访问网络
  5. 在嵌入式Jetty(Embedded Jetty)中部署FastCGI Servlet载入PHP程序
  6. LeetCode Search Insert Position (二分查找)
  7. android提交项目到svn,Android Studio 配置SVN,通过Share project提交项目和实现忽略文件...
  8. matlab guide对话框+滑动条+弹出式菜单+列表框的使用
  9. LeetCode 26. Remove Duplicates from Sorted Array
  10. 04、HI3518 sample_venc Makefile和源码分析
  11. Google 镜像站
  12. zookeeper详解
  13. [Android]通讯录字段
  14. 实时视频通信技术调研
  15. Linux删除文件,df查看磁盘空间未减少
  16. 读王蒙的《庄子的快活》
  17. 经纬度---(所有、江苏)
  18. SQL进行数据的删除
  19. 计算机表格a列除b列,win10系统下EXCEL表格A列B列C列消失了怎么办
  20. #ifdef __cplusplus 倒底是什么意思?

热门文章

  1. C语言-break与continue语句
  2. 【01背包求方案数模板】洛谷 P1164 小A点菜
  3. 《程序员成长的烦恼》 读书笔记
  4. Web服务连接器:Servlet
  5. 想知道电脑硬盘格式化后如何保证数据不能被恢复么,速来围观!!!
  6. 【ZZ】梅森素数列表
  7. libx264+libx265 ffmpeg arm交叉编译error修复总结
  8. css修改导航条样式
  9. 性能测试必备知识(7)- 深入理解“CPU 使用率”
  10. 【自然语言处理】条件随机场【Ⅲ】条件随机场估计问题