二、MATLAB基础知识

(四)数组

  • MATLAB总是把数组看作存储和运算的基本单位,标量数据也被看作是(1×1)的数组
  • 一维数组的创建
    • 创建一维数组的几种方法:(e_two_14.m)

      • 直接输入法:直接通过空格、逗号和分号来分隔数组元素。
      • 步长生成方法:x=a:inc:b,a和b为一维向量数组的起始数值和终止数值,inc为数组的间隔步长;如果a和b为整数时,省略inc可以生成间隔为1的数列。根据a和b的大小不同,inc可以采用正数、负数。
      • 等间距线形生成方法:x=linspace(a,b,n),采用函数在a和b之间的区间内得到n个线形采样数据点。
      • 等间距对数生成方法:x=logspace(a,b,n),在设定采样点总个数n的情况下,采用常用对数计算得到n个采样点数据值。
    • 数组内容的访问:(e_two_15.m)
      • 对单个元素:通过选择元素的索引(访问索引必须是正整数)
      • 对数组内的一块数据:通过冒号方式
      • 对部分数值:通过构造访问序列或通过构造向量列表来加以访问
    • (一维数组)如果元素之间通过“;”分隔元素,生成列向量。列向量和行向量之间可以通过转置操作 ’ 来进行相互之间的转化。(注意:如果一维数组的元素是复数,经转置操作后,得到的是复数的共轭转置结果,而采用点-共轭转置操作时得到的是转置数组,不进行共轭操作)
    • 一维数组的方向(e_two_16.m)
  • 多维数组的创建
    • 创建二维数组的几种方法:(e_two_17.m)

      • 直接输入法:不同行之间的数据用分号进行分割,同一行的元素用都逗号或空格进行分隔
      • 通过Array Editor来输入多维数组:工作空间出现矩阵编辑器表格,可以直接输入矩阵的数据
      • 对于大规模的数据,可以通过数据表格方式来输入:单击选择工作空间的Import Data图标,选中已经编写好的矩阵数据文件后,导入到工作空间中
      • 通过MATLAB所提供的其他函数来生成二维数组
    • 要严格保证所生成矩阵的行和列的数目相同;在直接生成矩阵的过程中,可以通过按回车键来保证矩阵生成另一行元素(不用打分号)
    • 多维数组(n维数组),三维数组(行、列、页)
    • 三维数组的创建方法:(e_two_18.m)
      • 直接创建方法:使用内置函数来创建三维数组,如zeros、ones、rand、randn等
      • 直接索引的方法
      • 使用内置函数reshape和repmat将二维数组转换为三维数组
      • 使用cat函数将低维数组转化为高维数组
  • 数组的运算
    • 数组和标量之间的运算:标量和数组的元素之间直接进行数学运算
    • 数组和数组之间的余运算:乘除和乘方运算,若采用点方式计算,表明是数组的元素之间的运算;若直接进行乘除乘方运算,则是向量或矩阵之间的运算。
    • 二维数组的运算(e_two_19.m)
    • 对于矩阵的加减运算及其他点运算,都是针对矩阵的元素进行的;对于乘、除、乘方运算则通过矩阵计算进行。
  • 常用的标准数组
    • 常用到的标准数组:全0数组、全1数组、单位矩阵、随机矩阵、对角矩阵及元素为指定常数的数组等。
    • 表2-16    标准数组生成函数(e_two_20.m)
函数 说明 用法 备注
eye 生成单位矩阵

y=eye(n)

y=eye(m,n)

y=eye(size(A))

eye(m,n,classname)

eye([m,n],classname)

适用于生成二维矩阵
ones 生成全1数组

y=ones(n)

y=ones(m,n)

y=ones([m,n])

y=ones(m,n,p...)

y=ones([m,n,p,...])

y=ones(size(A))

y=ones(m,n, ... ,classname)

y=ones([m,n,...],classname)

classname用于指定生成数组的

数据类型,可以选择MATLAB中

的任何数据类型

rand

生成随机数组,数组

元素均匀分布

y=rand

y=rand(n)

y=rand(m,n)

y=rand([m,n])

y=rand(m,n,p,...)

y=rand([m,n,p,...])

y=rand(size(A))

rand(method,s)

s=rand(method)

method用于指定函数所采用的

方法,可以选择state、seed、

twister

randn

生成随机数组,数组

元素服从正太分布

y=randn

y=randn(n)

y=randn(m,n)

y=randn([m,n])

y=randn(m,n,p,...)

y=randn([m,n,p,...])

y=randn(size(A))

randn(method,s)

s=randn(method)

 zeros 生成全0数组 

y=zeros(n)

y=zeros(m,n)

y=zeros([m,n])

y=zeros(m,n,p,...)

y=zeros([m,n,p,...])

y=zeros(size(A))

zeros(m,n,...,classname)

zeros([m,n,...],classname)

  • 低维数组的寻址和搜索

    • 数组中包含多个元素,在对数组的单个元素或多个元素进行访问时,需要对数组进行寻址操作。
    • 表2-17    数组寻址技术(e_two_21.m)
寻址方法 说明
A(r, c) 用定义的r和c索引向量来寻找A的子数组
A(r, :) 用r向量定义的行和对应于行的列得到的A的子数组
A(:, c) 用c向量定义的列和对应于列的行得到的A的子数组
A(:) 用列向量方式来一次寻址数组A的所有元素。如果A(:)出现在等号的左侧,表明用等号右侧的元素来填充数组,而A的形状不发生变化
A(k) 用单一索引向量k来寻找A的子数组
A(x) 用逻辑数组x来寻找A的子数组,x的维数和A的维数必须一致
    • sort函数进行排序:

      • 一维数组排序(e_two_22.m)
      • 二维数组的排序(e_two_23.m):sort函数只对数组的列进行排序;若对行进行排序,则需要为sort函数提供第二个参数2。
    • find函数可以返回符合条件的数组的索引数值:
      • 子数组搜索(e_two_24.m)
      • 搜索最大值最小值(e_two_25.m):使用max和min函数(二维数组,返回每一列的最大或最小值)
  • 低维数组的处理函数
    • 表2-18    低维数组的处理函数
函数 说明
fliplr 以数组的垂直中线为对称轴,交换左右对称位置上的数组元素
flipud 以数组的水平中线为对称轴,交换上下对称位置上的数组元素
rot90 按逆时针对数组进行旋转
circshift 循环移动数组的一行或一列
reshape 结构变换函数,交换前后函数的元素个数相等 
diag 对角线元素提取函数
triu 保留方阵的上三角,构成上对角方阵
tril 保留方阵的下三角,构成下对角方阵
kronecker 两个数组的kronecker乘法,构成新的数组
repmat 数组复制生成函数
    • 矩阵的形式变换(e_two_26.m)
    • 矩阵的kronecker乘法(e_two_27.m)
      • 对于kron函数执行的是kronecker的张量乘法运算:将第一个参数数组的每一个元素和第二个参数数组相乘,形成一个分块矩阵
  • 高维数组的处理和运算
    • 表2-19    高维数组的处理和运算函数
函数 说明
squeeze 用此函数来消除数组中的“孤维”,即大小等于1的维,从而起到降维作用
sub2ind 将下标转换为单一索引数值
ind2sub 将数组的单一索引数值转换为数组的下标
flipdim 沿着数组的某个维轮换顺序,第二个参数为变换的对称面
shiftdim 维序号循环轮换移动
permute 对多维数组进行广义共轭转置操作
ipermute 取消转置操作
size 获取数组的维数大小数值
  • 高维数组的处理和操作(e_two_28.m)

(五)单元数组和结构体

  • 单元数组的创建和操作

    • 单元数组中的每一个元素称为单元,单元可包含任何类型的MATLAB数据
    • 单元数组的创建方法分为两种:(e_two_29.m)
      • 通过赋值语句直接创建

        • 按单元索引法:采用标准数组的赋值方法,赋值时赋给单元的数值通过花括号({})将单元内容括起来
        • 按内容索引法:将花括号写在等号左边,即放在单元数组名称后
      • 通过cell函数首先为单元数组分配内存空间,再对每个单元进行赋值
    • 单元数组内容的显示(e_two_30.m)
    • 通过cell函数为单元数组赋值(e_two_31.m)
    • 单元数组的操作(e_two_32.m)
    • 改变单元数组的结构(e_two_33.m)
  • 单元数组函数
    • 表2-20    单元数组函数(e_two_34.m)
函数 说明
cell 生成一个空的单元数组,然后再向其中添加数据
celldisp 显示单元数组的所有单元的内容
iscell 判断是否为单元数组
isa 判断是否为单元数组的一个单元
deal 将多个单元的数据取出来后赋予一个独立的单元数组变量
cellfun 将一个指定的函数应用到一个单元数组的所有单元
num2cell 从一个数组中提取指定元素,填充到单元数组
  • 结构体创建

    • 结构体(structure)通过字段(fields)来对元素进行索引,在访问时只需通过点号来访问数据变量
    • 结构体可以通过两种方法创建(e_two_35.m)
      • 直接赋值
      • 通过struct函数创建
  • 结构体函数
    • 表2-21    结构体函数(e_two_36.m)
函数 说明
, 获取多个结构体数组元素的值
cat 提取结构体数据后依次排列
deal 提取多个元素的数值赋予不同的变量,或对结构体字段赋值
fieldnames 返回结构体的字段名
isfield 判断一个字段名是否为指定结构体中的字段名
class 判断一个变量是否为结构体变量,输出类型名
isstruct 和class一样,判断一个变量是否为结构体变量,输出逻辑值
rmfield 删除结构体的字段
orderfield 对结构体的字段进行排序

转载于:https://www.cnblogs.com/mayyzym/p/10409456.html

Matlab学习笔记(三)相关推荐

  1. matlab ezplot hod,Matlab学习笔记三:绘图

    54.二维柱状图 >> x=rand(1,5); bar(x) 55.三维曲面绘图 [t,s]=meshgrid(0:0.1*pi:2*pi); x=sin(t).*cos(s); y=c ...

  2. matlab学习笔记三(11.2)

    1.clear 的功能:清除工作间的变量. 通常的形式: 1.lear :清除工作间的所有的变量. 2.clear var:清除名为var的变量.可以 clear var*来清除所有以var开头的变量 ...

  3. Matlab学习笔记——数据文件定位

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...

  4. MATLAB学习笔记(二)

    MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...

  5. MATLAB学习笔记(一)

    MATLAB 一.安装的目录结构 二.常用的菜单及工具 布局 设置路径 设置工作路径 三.常用命令 四. 基础知识 数据类型 复数类型 `inf 和 NaN` 字符与字符串 函数句柄 结构体 结构体的 ...

  6. MATLAB学习笔记(十八)

    MATLAB学习笔记(十八) 一.Simulink仿真基础 1.1 Simulink的启动 1.2 系统仿真模型的创建 1.3 仿真参数的设置 1.4 总结 二.子系统的创建与封装 2.1 子系统的创 ...

  7. MATLAB学习笔记(十七)

    MATLAB学习笔记(十七) 一.符号对象 1.1 符号对象的建立 1.2 符号对象的运算 1.3 符号矩阵 二.符号微积分 2.1 符号函数的极限 2.2 符号函数的导数 2.3 符号函数的积分 三 ...

  8. MATLAB学习笔记(十二)

    MATLAB学习笔记(十二) 一.数据插值 1.1 数据插值的计算机制 1.2 数据插值的matlab函数 二.曲线拟合 2.1 曲线拟合原理 2.2 曲线拟合的实现方法 三.数据插值与曲线拟合比较 ...

  9. MATLAB学习笔记(九)

    MATLAB学习笔记(九) 一.三维曲线 1.1 plot3函数 1.2 fplot3函数 二.三维曲面 2.1 平面网格数据的生成 2.2 绘制三维曲面的函数 2.3 绘制标准三维曲面 三.图形修饰 ...

  10. MATLAB学习笔记(八)

    MATLAB学习笔记(八) 一.二维曲线 1.1 plot函数 1.2 fplot函数 二.绘制图形的辅助操作 2.1 图形标注 2.2 坐标控制 2.3 图形保持 2.4 图形窗口分割 三.其他形式 ...

最新文章

  1. AngularJs的UI组件ui-Bootstrap分享(六)——Tabs
  2. 东莞与华为共建国家新型智慧城市建设示范区
  3. 3 个相见恨晚的 Google Colaboratory 奇技淫巧!
  4. 全面解析多种区块链隐私保护解决方案
  5. 基于Fragment的百度地图框架的使用
  6. HMM:隐马尔科夫模型 - 学习
  7. 布隆过滤器(Bloom Filter)详解
  8. 广东省谷歌卫星地图下载
  9. Java后台调用第三方支付接口(易宝支付)
  10. windows linux jdk8 jdk11下载
  11. 中南大学c语言课程设计报告,中南大学 C++课程设计报告.doc
  12. 台式计算机显卡驱动位置,惠普台式电脑怎么安装显卡驱动
  13. IBM Tivoli Omegamon
  14. Pocket PC 2003 SE 仿真机 与主机联网
  15. 8个优秀的预训练模型,帮助您开始使用自然语言处理(NLP)
  16. ASP.NET Core与ASP.NET区别
  17. HTML5的学习资料(开发设计原则)
  18. javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? HTTPS请求异常
  19. win10误删除efi引导文件
  20. 频数直方图的步骤_怎么用EXCEL制作频数分布表和直方图

热门文章

  1. python装饰器-装饰器
  2. 如何用python计算工资-手把手用Python教你分析运筹学薪资状况
  3. python工程师-Python工程师学习之旅
  4. 怎么自学python自动化测试-学习自动化测试,如何学习Python语言?
  5. python打开一个文件-在“Python”中如何“尝试/抓住”打开一个文件?
  6. 自学python方法-十二种学习Python的方法【Programming】
  7. python到底能用来做啥-Python那么火,到底能用来做什么?
  8. 免费学python的软件-此贴告诉你:为啥shell脚本人,不建议学python
  9. Dialog的使用(三):progressDialog
  10. 题目1090:路径打印