第5章 matlab数组和数组运算(3)
matlab中的矩阵运算和数组运算方法
matlab中的矩阵运算和数组运算方法MATLAB 具有两种不同类型的算术运算:数组运算和矩阵运算。
您可以使用这些算术运算来执行数值计算,例如两数相加、计算数组元素的给定次幂或两个矩阵相乘。
矩阵运算遵循线性代数的法则。
数组运算则是执行逐元素运算并支持多维数组。
句点字符(.) 将数组运算与矩阵运算区别开来。
但是,由于矩阵运算和数组运算在加法和减法的运算上相同,因此没有必要使用字符组合 .+ 和 .-。
数值运算加法,例如A+B,+B减法,例如A-B,-B按元素乘法。
点乘,A.*B 表示 A 和 B 的逐元素乘积。
按元素求幂,A.^B 表示包含元素 A(i,j) 的 B(i,j) 次幂的矩阵。
数组右除,A./B 表示包含元素 A(i,j)/B(i,j) 的矩阵。
数组左除,A.\B 表示包含元素 B(i,j)/A(i,j) 的矩阵。
数组转置,A.' 表示 A 的数组转置。
对于复矩阵,这不涉及共轭。
矩阵运算矩阵乘法,C = A*B 表示矩阵 A 和 B 的线性代数乘积。
A 的列数必须与 B 的行数相等。
矩阵左除,x = A\B 是方程 Ax = B 的解。
矩阵 A 和 B 必须拥有相同的行数。
A\B = inv(A)*B矩阵右除,x = B/A 是方程 xA = B 的解。
矩阵 A 和 B 必须拥有相同的列数。
有B/A = (A'\B')'。
矩阵幂,A^B 表示 A 的 B 次幂(如果 B 为标量)。
对于 B 的其他值,计算包含特征值和特征向量。
转置,A' 表示 A 的线性代数转置。
对于复矩阵,这是复共轭转置。
逆矩阵,inv(A)或者A^(-1),A必须是方矩阵,也就是需要行列数相等。
行列式值,det(A)说明当方程形式是Ax=B时,则x=A\B=inv(A)*B;当方程形式是xA=B时,则x=B/A=B*inv(A);其中inv()是求逆矩阵。
第5章 matlab数组和数组运算(2)
1. 标准数组:全1数组,全0数组,单位矩阵,随机矩阵,对角矩阵以及元素为指定常数的数组。
2.全1数组用ones函数,全0数组用zeros函数。
对于ones和zeros函数,当只有一个输入参数时,即ones(n)或zeros(n),Matlab就分别生成一个n×n的全1或者全0数组。
当有两个输入参数时,即ones(r,c)或者zeros(r,c),Matlab就分别生成r 行c列的全1或者全0数组。
要想生成一个与其他数组相同维数的全1或者全0数组,用户只要在ones或者zeros的参数中调用size函数就可以了。
测试数组:ones(4),m = ones(4,8)zeros(4),zeros(3,5),size(m),zeros(size(m))。
3.单位矩阵用eye函数。
该函数用与ones和zeros函数相同的语法格式来生成单位矩阵。
单位矩阵或数组是具有如下取值的矩阵或数组:除A(i,i)之外,所有其他元素都为0,其中i=min(r,c),min(r,c)是矩阵A中的行数和列数的最小数。
4.随机矩阵用rand函数。
函数rand生成均匀分布的随机数组,其元素取值介于0-1之间。
直接调用rand产生一个随机数,随机数组用rand(n)。
另外randn函数将生成均值为0,方差为1的正态分布矩阵。
rand和randn用法和ones相同。
5.对角矩阵用diag函数。
在该数组中,一个向量可以被放在与数组的主对角线平行的任何位置。
验证:a = 1:5 diag(a) diag(a,1)diag(a,-2)6.几种生成所有元素都相同的数组的方法,先令d=pi(1)d*one(3,4) slowest method(2)d+zeros(3,4) slower method(3)d(ones(3,4)) fast method(4)repmat(d,3,4) fastest method数组的数据量较小时,4种方法都可以。
MATLAB R2020a从入门到精通(升级版)
第11章 M脚本文件
11.1 M脚本文件概述 11.2 MATLAB中的变量类型 11.3设置执行时间 11.4启动和终止 11.5本章小结
第12章 M函数文件
12.1 M函数 12.2函数工作区 12.3 M函数文件的使用 12.4本章小结
第13章 M文件的调试
13.1调试方法 13.2语法检查 13.3本章小结
第5章数组运算
5.1简单数组 5.2数组寻址 5.3数组排序 5.4数组检测 5.5数组结构 5.6数组元素运算 5.7数组的基本运算 5.8数组的创建实例 5.9本章小结
第6章高维数组
6.1高维数组的创建 6.2高维数组的处理 6.3高维数组的常用函数 6.4高维数组的创建实例 6.5本章小结
第33章 Simulink应用
33.1 Simulink概述 33.2模块操作 33.3 Simulink系统仿真 33.4 Stateflow建模与应用 33.5 Simulink工具箱的应用 33.6本章小结
作者介绍
同名作者介绍
这是《MATLAB R2020a从入门到精通(升级版)》的读书笔记模板,暂无该书作者的介绍。
第7章字符串
7.1字符串的创建 7.2字符串的比较 7.3字符串的查找函数和替换函数 7.4字符串与数值的转换 7.5字符串函数 7.6利用正则表达式进行搜索 7.7本章小结
第8章结构体数组
8.1结构体数组的创建 8.2访问结构体数组中的数据 8.3本章小结
第9章单元数组
9.1单元数组的创建 9.2单元数组的处理 9.3单元内容的获取 9.4单元数组的创建实例 9.5本章小结
目录分析
1
第1章 MATLAB 入门
2
第2章 MATLAB 主界面
Matlab原理与工程应用第二版第五章(函数)
14
非线性方程数值求解
函数fzero()求一元函数的零点,其具体使用方法如下:
x = fzero(@fun,x0,options,p1,p2,…) , 在 x0 点 附 x = fzero(@fun,[x0,x1]) ,在 [x0,x1] 区间内寻找函
近寻找函数的零点;
数的零点;
x = fzero(@fun,x0,options) ,用 options 指定寻找零
subplot(1,3,1); plot(x,y,'ro',xi,yi_nearest,'b-'); title(‘最邻近插值'); subplot(1,3,2); plot(x,y,'ro',xi,yi_linear,'b-'); title(‘线性插值'); subplot(1,3,3); plot(x,y,'ro',xi,yi_spline,'b-'); title(‘三次样条插值');
23
8.1.2 数值积分的实现方法 1.变步长辛普生法 基于变步长辛普生法,MATLAB给出了quad函数来求定积 分。该函数的调用格式为: [I,n]=quad('fname',a,b,tol,trace) 其中fname是被积函数名。a和b分别是定积分的下限和 上限。tol用来控制积分精度,缺省时取tol=0.001。 trace控制是否展现积分过程,若取非0则展现积分过程, 取0则不展现,缺省时取trace=0。返回参数I即定积分 值,n为被积函数的调用次数。
19
将求得的解代回原方程,可以检验结果是否正确, 命令如下: q=myfun(x) q = 1.0e-009 * 0.2375 0.2957 可见得到了较高精度的结果。
第五讲-MATLAB之数组运算
数组的算术运算运算运算符含义说明加 + 相应元素相加减 - 相应元素相减乘 * 矩阵乘法点乘 .* 相应元素相乘幂 ^ 矩阵幂运算点幂 .^ 相应元素进行幂运算左除或右除\或/ 矩阵左除或右除左点除或右点除 .\或./ A的元素被B的对应元素除【例】数组加减法 >>A = rand(3); >>B = rand(3); >>A+B, A-B, A*B >>A/B, A\B 【例】点幂“.^”>>a=1:6>>a=a.^2>>b=reshape(a,2,3) >>b=b.^2关系运算MATLAB提供了6种关系运算符:<、>、<=、>=、==、~ =(不等于)关系运算符的运算法则:1、当两个标量进行比较时,直接比较两数大小。
若关系成立,结果为1,否则为0。
2、当两个维数相等的矩阵进行比较时,其相应位置的元素按标量关系进行比较,并给出结果,形成一个维数与原来相同的0、1矩阵。
3、当一个标量与一个矩阵比较时,该标量与矩阵的各元素进行比较,结果形成一个与矩阵维数相等的0、1矩阵。
【例】建立5阶方阵A,判断其元素能否被3整除。
A = [24, 35, 13, 22, 63; 23, 39, 47, 80, 80; ...90, 41, 80, 29, 10; 45, 57, 85, 62, 21; 37, 19, 31, 88, 76] P = rem(A,3)==0 %被3除,求余逻辑运算Matlab提供了3种逻辑运算符:&(与)、|(或)、~(非)逻辑运算符的运算法则:1、在逻辑运算中,确认非零元素为真(1),零元素为假(0)。
2、当两个维数相等的矩阵进行比较时,其相应位置的元素按标量关系进行比较,并给出结果,形成一个维数与原来相同的0、1矩阵;3、当一个标量与一个矩阵比较时,该标量与矩阵的各元素进行比较,结果形成一个与矩阵维数相等的0、1矩阵;4、算术运算优先级最高,逻辑运算优先级最低。
第5章 matlab数组和数组运算(3)
1.A=reshape(1:12,3,4)’r=[3 2 1]假设我们希望将数组A的第i列元素减去r(i)(1)Ar=[A(:,1)-r(1) A(:,2)-r(2) A(:,3)-r(3)] 原始方法(2)R=r([1 1 1 1],: ) 利用索引将r扩展成与A相同大小,且每列数字相同。
Ar=A-R(3)获得矩阵R更快更常用的方法是利用ones函数和size函数,或者repmat 函数。
R=r(ones(size(A,1),1):)R=repmat(r,size(A,1),1)该例中,size(A,1)返回数组A的行数。
2.在Matlab中,当只使用一个索引时,该索引的计数方式为:从第一列开始,从上到下逐行计数,然后按此方式逐行进行。
3.D=reshape(1:12,3,4)sub2ind函数将一个单一索引值转换成行列下标,ind2sub函数则将行列下标转换成单一索引值。
如sub2ind(size(D),2,4),将返回11.即D数组的第2行第4列的元素是第11个元素。
[r c]=ind2sub(size(D),11),将返回r=2,c=4.注意:这两个函数都需要知道它所进行转换的数组的维数,也就是size(D),无需知道数组D本身。
4.除基于下标方式的寻址数组外,逻辑所得到的逻辑数组也能用来寻址数组。
逻辑数组的维数要和寻址数组的维数一致,与True(1)相对应的元素将被保留下来,而与False(0)相对应的元素将被删除。
例如:x=-3:3,abs(x)>1语句得到逻辑数组[1 1 0 0 0 1 1]y=x(abs(x)>1)语句生成一个数组y,其元素值就是x中绝对值大于1的值。
注意:尽管abs(x)>1生成的数组和[1 1 0 0 0 1 1]数组看上去是相同的数组,但一个是逻辑数组,一个是数字数组。
二者迥然不同。
可用class函数观察两者差异。
class(abs(x)>1)和class([1 1 0 0 0 1 1])将返回logical和double。
教学课件第3讲MATLAB数组与运算
1. 基本算术运算
MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、 /(右除)、\(左除)、^(乘方)。
注意:运算是在矩阵意义下进行的,单个数据的算术运 算只是一种特例。
2. 点运算
点运算符有.*、./、.\和.^。两矩阵进行点运算是指它
西 们的对应元素进行相关运算,要求两矩阵的维参数相
科 技
ind2sub函数求得。
大
学
网
络
教
育
2. 矩阵拆分
(1)利用冒号表达式获得子矩阵
①A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A 矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第 j列的元素。
②A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素; A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素, A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第 k~k+m列中的所有元素。
西 南 科 技 大 学 网 络 教 育
3.3 MATLAB矩阵
3.3.1 矩阵的建立
1. 直接输入法
将矩阵的元素用方括号括起来,按矩阵
行的顺序输入各元素,同一行的各元素 之间用空格或逗号分隔,不同行的元素 之间用分号分隔。例如
西 南
A=[1 2 3;4 5 6;7 8 9]
科
技
大
学
网
络
教
育
2. 利用M文件建立矩阵
西 南 科 技 大 学 网 络 教 育
字 符 串 是 以 ASCII 码 形 式 存 储 的 。 abs 和
double函数都可以用来获取字符串矩阵所对
MATLAB 数组和数组运算
MATLAB 数组的数值运算
数组的乘方
数组乘方用符号“.^”实现。数组乘方以三种方式进行。 底为数组,指数为标量的形式。这种形式的结果是将 数组的每个元素进行指数相同的乘方。返回的结果为 与底维数相同的数组,结果数组的每个元素为底中相 应元素的乘方。 底为标量,指数为数组的形式。该形式返回的结果为 数组,维数与指数数组相同。结果数组的每个元素为 底以指数数组相应元素为指数做乘方的结果。 底和指数都是数组的形式。此时两个数组需要有相同 的维数。返回结果为一个数组,维数与前面两个数组 相同,每个元素为底数数组和指数数组做乘方的结果。
在很多时候我们需要对一个给定的数据向量进行排序。 为完成这一操作,MATLAB 提供了 sort 函数,该函数将 任意给定的序列进行排序。 sort 函数的调用格式有: B = sort(A) B = sort(A,dim) B = sort(...,mode) [B,IX] = sort(...) 其中的 B 为保存结果的数组;A 为待排序的数组,当 A 为多维数组时,用 dim 指定需要排序的维数(默认为1); mode 为排序的方式,可以取值“ascend”和“descend”, 分别表示升序和降序,默认为升序;IX 用于存储排序后 的下标数组。
16
MATLAB 数组的关系运算
关系运算和前面讲过的一样,包含6种:小于(<)、 大于(>)、等于(==)、小于等于(<=)、大于等于 (>=)和不等于(~=)。MATLAB 比较两个元素大小时, 如果表达式为真,则返回结果1,否则返回0。
通过关系运算符实现数组的关系运算。返回结果为一个 数组,结果数组的元素为0或者1,由相互比较的两个数 组的相应元素的比较结果决定。
18
matlab数组和数组运算
2013年7月26日
9
数组的乘除法
• 数组乘除为元素的乘除,通过运算符“.*” 和“./”来实现。运算时需要两个数组有相同 的维数,或者数组与数值相乘除。 • 注意:在进行除法操作时,作为分母的数 组中不能包含 0 元素。
2013年7月26日
10
数组的乘方
• 数组乘方用符号“.^”实现。数组乘方运算以三种 方式进行。
– 底为数组,指数为标量的形式。这种形式的结果是将 数组的每个元素进行指数相同的乘方。返回的结果为 与底维数相同的数组,结果数组的每个元素为底中相 应元素的乘方。 – 底为标量,指数为数组的形式。该形式返回的结果为 数组,维数与指数数组相同。结果数组的每个元素为 底以指数数组相应元素为指数做乘方的结果。 – 底和指数都是数组的形式。此时两个数组需要有相同 的维数。返回结果为一个数组,维数与前面两个数组 相同,每个元素为底数数组和指数数组做乘方的结果。
2013年7月26日 6
数组排序
• 在很多时候我们需要对一个给定的数据向量进行排序。为 完成这一操作,MATLAB 提供了 sort 函数,该函数将任 意给定的序列进行排序。 • sort 函数的调用格式有:
– – – – B = sort(A) B = sort(A,dim) B = sort(...,mode) [B,IX] = sort(...)
– 数组的数值运算
• 数组的加减法 • 数组的乘除法 • 数组的乘方
– 数组的关系运算 – 数组
2013年7月26日
8
数组的加减法
• 数组加减法为数组元素的加减法,与矩阵 加减法相同。利用运算符“+”和“-”实现该 运算。需要注意的是相加或相减的两个数 组必须有相同的维数,或者是数组与数值 相加减。
MATLAB之(一)数组、矩阵和函数及运算
load madtl
5变量值的显示
作为运算结果的变量值,在表达式计算后在屏幕上显
示出来,但在表达式结尾加一个分号“;”,该结果不再显
示。
显示
在MATLAB中数据可以用多种格式显示,显
格式: 示格式用显示命令指定。显示命令主要有:
•format short(短格式,省缺显示);
•format long(长格式); •format bank; •format rat(分数格式);
• 如果表达式太长,可以用续行号“…”将其延续到下一 行。
• 一行中可以写几个语句,它们之间要用逗号或分号分 开。
2021/4/14
18
a=[1,2,3,4,5];b=[1,3,5,7,9];…
c=a.*b,d=a*b’,e=a’*b回车 e =
c=
13579
1 6 15 28 45
2 6 10 14 18
从一个矩阵中取出若干行(列)构成新的矩阵称为裁 剪,MATLAB中“:”的使用是非常重要的裁剪工具, 如: C=A(2:3,:)
C=
D=C(:,2:4)
7560
D=
7800 注:A(2:3,:)中“2:3”表示取 2至32行021/,4/14“:”表示取所有的
560
800
10
A(3,:) ans =
•符号运算;
•傅立叶变换和数据的统计分析;
•工程中的优化问题;
•稀疏矩阵运算;
2021/•4/复14 数的各种运算等等。
3
3.具有出色的图形处理功能
4.具有应用广泛的模块集和工具箱,一般来说是由特定领 域专家开发的,用户可以直接使用工具箱学习、应用和评 估不同的方法而不需要自己编写代码。
matlab 数组或运算
matlab 数组或运算Matlab是一种强大的数学软件,它提供了许多数组和运算功能,方便用户进行数据处理、分析和可视化。
本文将介绍一些常用的Matlab数组和运算,并探讨它们在不同领域的应用。
一、数组操作1. 创建数组在Matlab中,可以使用多种方式创建数组,如直接赋值、使用函数生成等。
例如,可以使用以下语句创建一个包含1到10的整数的数组:```matlabA = 1:10;```2. 访问数组元素可以使用索引访问数组中的元素。
Matlab中的索引从1开始,例如,可以使用以下语句访问数组A的第一个元素:```matlabA(1)```3. 修改数组元素可以通过赋值操作修改数组中的元素。
例如,可以使用以下语句将数组A的第一个元素修改为100:```matlabA(1) = 100;```4. 数组运算Matlab提供了一系列的数组运算,包括加法、减法、乘法、除法等。
例如,可以使用以下语句对数组A进行加法运算:```matlabB = A + 1;```二、常见的数组操作函数1. 数组求和可以使用sum函数对数组中的元素进行求和。
例如,可以使用以下语句计算数组A中所有元素的和:```matlabtotal = sum(A);```2. 数组平均值可以使用mean函数计算数组的平均值。
例如,可以使用以下语句计算数组A的平均值:```matlabavg = mean(A);```3. 数组最大值和最小值可以使用max和min函数分别计算数组的最大值和最小值。
例如,可以使用以下语句计算数组A的最大值和最小值:```matlabmaxValue = max(A);minValue = min(A);```4. 数组排序可以使用sort函数对数组进行排序。
例如,可以使用以下语句对数组A进行升序排序:```matlabsortedA = sort(A);```三、数组和运算的应用场景1. 数据分析在数据分析中,经常需要对大量数据进行处理和分析。
MATLAB数组运算基础
Matlab矩阵和数组运算日积月累-软件应2009-10-23 12:54:30 阅读1377 评论0 字号:大中小订阅一、目的1、熟练掌握矩阵的创建、运算;2、掌握如何使用矩阵运算函数和数组运算函数,注意区分矩阵和数组的差别,特别是运算符的差别;3、了解多项式的创建方法和基本运算。
二、内容任务1.矩阵的构造掌握矩阵的构造方法,包括:直接输入、利用内部函数或M文件产生,从外部数据文件调入;任务2.矩阵元素的修改掌握如何通过下标来访问矩阵元素;任务3.矩阵的运算掌握矩阵的运算法则;任务四:数组运算掌握数组的运算法则,明白数组运算是Matlab的一种运算形式,它从矩阵的单个元素出发,针对每个元素进行的运算。
三、步骤任务1. 矩阵的构造步骤1:直接输入直接输入需遵循以下基本规则:整个矩阵应以“ [ ]”为首尾,即整个输入矩阵必须包含在方括号中;矩阵中,行与行之间必须用分号“;”或 Enter 键(按 Enter 键)符分隔;每行中的元素用逗号“,”或空格分隔;矩阵中的元素可以是数字或表达式,但表达式中不可包含未知的变量,MATLAB用表达式的值为该位置的矩阵元素赋值。
当矩阵中没有任何元素时,该矩阵被称作“空阵”( Empty Matrix)。
>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]A =1 2 3 45 6 7 89 10 11 1213 14 15 16利用表达式输入>> B=[ 1,sqrt(25),9,132,6,10,7*23+sin(pi),7,11,154,abs(-8),12,16]B =1 5 9 132 6 10 143 7 11 154 8 12 16由向量构成矩阵向量是组成矩阵的基本元素之一。
向量元素需要用方括号括起来。
元素之间用空格和逗号分隔生成行向量,用分号隔开生成列向量。
可以把行向量看成1⨯n 阶矩阵,把列向量看成n⨯1 阶矩阵。
第5章matlab 数组和数组运算(1)
如下面的总结是以M文件“sin.m”为例。
1,.1表示0.1,.2表示0.22,要想在Matlab中创建一个数组,用户只需先输入一个左方括号,然后输入每个数值并用空格(或逗号)隔开,最后用一个右方括号结束数组创建。
3,Matlab中,可以通过下标来访问单个数组元素。
例如x(1)是x的第一个元素,x(2)是x的第二个元素。
为了同时访问一块数据,Matlab提供了冒号如:x(1:4)。
这样得到x数组中第1个到第4个元素,括号中的“1:4”的意思是从1开始,然后加1计数直到4。
4. x(7:end)这条命令返回x数组的第7个元素到最后一个元素。
关键字end 表示x数组的最后一个元素5.引用数组元素时,可以通过控制递增顺序和步进值。
y(3:-1:1)表示从3开始,向下减1计数,到1结束。
y(2,2,7)表示从2开始,以步长为2计数,到7结束。
6.可以随机抽取数组中一个或多个元素的值,y([8 2 9 1])。
在这里,用到了另外一个数组[8 2 9 1],并按照希望的顺序提取数组y中的元素。
提取的第1个元素是y中的第8个值,第2个元素是y中的2个值,第3个元素是y中的第9个值,第4个元素是y中的第1个值。
实际上,[8 2 9 1]本身就是一个数组,它的作用是指定抽取地址。
抽取的索引地址可以相同,同一个数允许多次调用,用户可以随意地重新排列和复制数组元素,该特性使Matlab编程更具高效性。
7.sin.m例子中x的值可以有另外两种输入方法:(1)x = (0:0.1:1)*pi(2)x = linspace(0,pi,11)。
冒号表示法使用户能够直接指定数据点之间的增量,而不用指定数据点的个数;linspace函数法则使用户能够直接指定数据点的个数,而不用指定数据点之间的增量。
这两种方式生成的数组时等间隔分布的。
8.创建对数间隔的数组,用logspace函数实现。
如logspace(0,2,11)创建从100开始到102结束,包含11个值的数组。
2.4 matlab数组及其运算
2.4 Matlab数组及其运算本节主要内容:1 基本数组的运算2 数组函数运算3 数组逻辑运算一基本数组运算数组的建立、存储完全同于矩阵,由于计算的不同,把相同型矩阵之间的运算成为数组运算。
□数组的四则运算普通运算同矩阵的运算,另有点运算“.*”“./”“.\”,即两数组对应元素之间的运算。
□数组与常数运算1 与常数之间的数加、数减元算在运算符上可以加“.”,也可以不加“.”,加时,要把常数写在前面。
2 与矩阵的运算一致。
□数组的幂运算“.^”表示每个数组元素的幂运算。
与矩阵的幂运算不同□数组的指数运算、对数运算和开放运算分别为exp、log和sqrt,其运算实质是针对数组内部的每个元素进行。
二数组函数运算□只要把所有运算的数组当数字一样带人函数中,不需要做什么变形;□通用格式为funname(A),funname为函数名。
三数组逻辑运算□基本逻辑运算== 等于eq~= 不等于ne<小于lt>大于gt<= 小于等于le>= 大于等于ge& 逻辑与and丨逻辑或or~ 逻辑非~□关系比较的结果由0和1组成,关系满足对应值为1,否则为1.□逻辑与运算双方的对应元素都非0时,为1,否则为0逻辑或运算双方的对应元素有一非0时,为1,否则为0逻辑非运算数组对应的值为0时结果为1,否则为0□运算双方有一方为常数时,结果与数组同维,是数组元素依次与常数比较的结果。
□优先级关系先后为:比较运算、算术运算、逻辑与或非。
□逻辑关系函数any 向量的任意元素不为0则返回真all 向量的所有元素不为0则返回真xor 逻辑或非isempty 判断空矩阵isequal 判断相等矩阵isnumeric 判断数值矩阵islogical 判断逻辑数组logical 转换数值为逻辑型isnan 判断不定数isinf 判断无穷大元素isfinite 判断有限大元素find 寻找非零元素坐标abs表绝对值运算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.A=reshape(1:12,3,4)’
r=[3 2 1]
假设我们希望将数组A的第i列元素减去r(i)
(1)Ar=[A(:,1)-r(1) A(:,2)-r(2) A(:,3)-r(3)] 原始方法
(2)R=r([1 1 1 1],: ) 利用索引将r扩展成与A相同大小,且每列数字相同。
Ar=A-R
(3)获得矩阵R更快更常用的方法是利用ones函数和size函数,或者repmat 函数。
R=r(ones(size(A,1),1):)
R=repmat(r,size(A,1),1)
该例中,size(A,1)返回数组A的行数。
2.在Matlab中,当只使用一个索引时,该索引的计数方式为:从第一列开始,从上到下逐行计数,然后按此方式逐行进行。
3.D=reshape(1:12,3,4)
sub2ind函数将一个单一索引值转换成行列下标,ind2sub函数则将行列下标转换成单一索引值。
如sub2ind(size(D),2,4),将返回11.即D数组的第2行第4列的元素是第11个元素。
[r c]=ind2sub(size(D),11),将返回r=2,c=4.
注意:这两个函数都需要知道它所进行转换的数组的维数,也就是size(D),无需知道数组D本身。
4.除基于下标方式的寻址数组外,逻辑所得到的逻辑数组也能用来寻址数组。
逻辑数组的维数要和寻址数组的维数一致,与True(1)相对应的元素将被保留下来,而与False(0)相对应的元素将被删除。
例如:
x=-3:3,abs(x)>1语句得到逻辑数组[1 1 0 0 0 1 1]
y=x(abs(x)>1)语句生成一个数组y,其元素值就是x中绝对值大于1的值。
注意:尽管abs(x)>1生成的数组和[1 1 0 0 0 1 1]数组看上去是相同的数组,但一个是逻辑数组,一个是数字数组。
二者迥然不同。
可用class函数观察两者差异。
class(abs(x)>1)和class([1 1 0 0 0 1 1])将返回logical和double。
输入y=x([1 1 0 0 0 1 1])将会出错,因为在位置0并没有一个元素存在。
5.利用islogical和isnumeric可以检测数组是否是逻辑数组或数字数组。
两个函数均返回逻辑值True(1)和False(0)。
验证:islogical(abs(x)>1) ,islogical([1 1 0 0 0 1 1])
isnumeric(abs(x)>1) isnumeric([1 1 0 0 0 1 1])
6.Matlab提供了一个函数logical来将数字数组转换成逻辑数组。
y=x(logical([1 1 0 0 0 1 1]))将得到正确的数字。
7.在实数域中,通常使用ones和zeros函数来创建数组,在逻辑域中,可以使用true和false函数来分别创建由true和false值组成的逻辑数组。
true
true(2,3)
false
false(3,5)
结果似乎与ones和zeros函数的返回值相同,实际上他们都是逻辑值,而非数值。
8.逻辑数组对于二维数组和向量同样有用。
例如:B=[5,-3;2,-4]
x=abs(B)>2
y=B(x)
结果是作为一个列向量返回的,这是因为没有办法定义一个只有3个元素的二维数组。
不论用户提取了多少个元素,Matlab都用单一索引顺序来提取所有为真的元素,然后将提取的结果形成一个列向量。