Matlab学习笔记(三)
二、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_14.m)
- 多维数组的创建
- 创建二维数组的几种方法:(e_two_17.m)
- 直接输入法:不同行之间的数据用分号进行分割,同一行的元素用都逗号或空格进行分隔
- 通过Array Editor来输入多维数组:工作空间出现矩阵编辑器表格,可以直接输入矩阵的数据
- 对于大规模的数据,可以通过数据表格方式来输入:单击选择工作空间的Import Data图标,选中已经编写好的矩阵数据文件后,导入到工作空间中
- 通过MATLAB所提供的其他函数来生成二维数组
- 要严格保证所生成矩阵的行和列的数目相同;在直接生成矩阵的过程中,可以通过按回车键来保证矩阵生成另一行元素(不用打分号)
- 多维数组(n维数组),三维数组(行、列、页)
- 三维数组的创建方法:(e_two_18.m)
- 直接创建方法:使用内置函数来创建三维数组,如zeros、ones、rand、randn等
- 直接索引的方法
- 使用内置函数reshape和repmat将二维数组转换为三维数组
- 使用cat函数将低维数组转化为高维数组
- 创建二维数组的几种方法:(e_two_17.m)
- 数组的运算
- 数组和标量之间的运算:标量和数组的元素之间直接进行数学运算
- 数组和数组之间的余运算:乘除和乘方运算,若采用点方式计算,表明是数组的元素之间的运算;若直接进行乘除乘方运算,则是向量或矩阵之间的运算。
- 二维数组的运算(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函数(二维数组,返回每一列的最大或最小值)
- sort函数进行排序:
- 低维数组的处理函数
- 表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学习笔记(三)相关推荐
- 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 ...
- matlab学习笔记三(11.2)
1.clear 的功能:清除工作间的变量. 通常的形式: 1.lear :清除工作间的所有的变量. 2.clear var:清除名为var的变量.可以 clear var*来清除所有以var开头的变量 ...
- Matlab学习笔记——数据文件定位
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...
- MATLAB学习笔记(二)
MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...
- MATLAB学习笔记(一)
MATLAB 一.安装的目录结构 二.常用的菜单及工具 布局 设置路径 设置工作路径 三.常用命令 四. 基础知识 数据类型 复数类型 `inf 和 NaN` 字符与字符串 函数句柄 结构体 结构体的 ...
- MATLAB学习笔记(十八)
MATLAB学习笔记(十八) 一.Simulink仿真基础 1.1 Simulink的启动 1.2 系统仿真模型的创建 1.3 仿真参数的设置 1.4 总结 二.子系统的创建与封装 2.1 子系统的创 ...
- MATLAB学习笔记(十七)
MATLAB学习笔记(十七) 一.符号对象 1.1 符号对象的建立 1.2 符号对象的运算 1.3 符号矩阵 二.符号微积分 2.1 符号函数的极限 2.2 符号函数的导数 2.3 符号函数的积分 三 ...
- MATLAB学习笔记(十二)
MATLAB学习笔记(十二) 一.数据插值 1.1 数据插值的计算机制 1.2 数据插值的matlab函数 二.曲线拟合 2.1 曲线拟合原理 2.2 曲线拟合的实现方法 三.数据插值与曲线拟合比较 ...
- MATLAB学习笔记(九)
MATLAB学习笔记(九) 一.三维曲线 1.1 plot3函数 1.2 fplot3函数 二.三维曲面 2.1 平面网格数据的生成 2.2 绘制三维曲面的函数 2.3 绘制标准三维曲面 三.图形修饰 ...
- MATLAB学习笔记(八)
MATLAB学习笔记(八) 一.二维曲线 1.1 plot函数 1.2 fplot函数 二.绘制图形的辅助操作 2.1 图形标注 2.2 坐标控制 2.3 图形保持 2.4 图形窗口分割 三.其他形式 ...
最新文章
- AngularJs的UI组件ui-Bootstrap分享(六)——Tabs
- 东莞与华为共建国家新型智慧城市建设示范区
- 3 个相见恨晚的 Google Colaboratory 奇技淫巧!
- 全面解析多种区块链隐私保护解决方案
- 基于Fragment的百度地图框架的使用
- HMM:隐马尔科夫模型 - 学习
- 布隆过滤器(Bloom Filter)详解
- 广东省谷歌卫星地图下载
- Java后台调用第三方支付接口(易宝支付)
- windows linux jdk8 jdk11下载
- 中南大学c语言课程设计报告,中南大学 C++课程设计报告.doc
- 台式计算机显卡驱动位置,惠普台式电脑怎么安装显卡驱动
- IBM Tivoli Omegamon
- Pocket PC 2003 SE 仿真机 与主机联网
- 8个优秀的预训练模型,帮助您开始使用自然语言处理(NLP)
- ASP.NET Core与ASP.NET区别
- HTML5的学习资料(开发设计原则)
- javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? HTTPS请求异常
- win10误删除efi引导文件
- 频数直方图的步骤_怎么用EXCEL制作频数分布表和直方图
热门文章
- python装饰器-装饰器
- 如何用python计算工资-手把手用Python教你分析运筹学薪资状况
- python工程师-Python工程师学习之旅
- 怎么自学python自动化测试-学习自动化测试,如何学习Python语言?
- python打开一个文件-在“Python”中如何“尝试/抓住”打开一个文件?
- 自学python方法-十二种学习Python的方法【Programming】
- python到底能用来做啥-Python那么火,到底能用来做什么?
- 免费学python的软件-此贴告诉你:为啥shell脚本人,不建议学python
- Dialog的使用(三):progressDialog
- 题目1090:路径打印