第二章Matlab基本运算

合集下载

第二讲 MATLAB基本运算

第二讲 MATLAB基本运算
2010-12-25 20
矩阵下标的用途
访问超出矩阵范围时,产生 Index exceeds matrix dimentions 存储超出矩阵范围时,矩阵自动调节 大小,将指定位置元素置入,其他没 指定数的位置默认为零。
2010-12-25
21
矩阵下标的用途
(2)矩阵连接 例:a=[1 2;3 4] b=[a a+5; a-5 zeros(size(a)] 将小矩阵嵌套入大矩阵,实现矩阵连接。
将矩阵按创建原则写入一个M文件, 在MATLAB的命令窗口或程序中直接执 行该M文件,即将矩阵调入工组空间。
2010-12-25
15
利用MATLAB函数创建矩阵 利用MATLAB函数创建矩阵 MATLAB
ones( m, n) - m行n列的1阵产生 zeros(m, n) -产生m行n列的全0阵 rand(m, n) -产生m行n列均匀分布全列的在 [0,1]区间的随机阵 randn(m, n) -产生m行n列的正态分布矩阵 eye(n) -产生n维单位阵
2010-12-25 18
2.2.3 矩阵的下标 .2.3
子矩阵提取A(v1, v2)
v1表示子矩阵包含的行标构成的向量 v2表示子矩阵包含的列标构成的向量 B1=A(:, [1, 3]) 为:时表示要提取所有行(列) B2=A(1:2:end, :) end表示最后一行(列) B3=A([3,2,1],[2,3,4]) 例: B4=A(:, end:-1:1) 提取A矩阵所有行、1,3列 提取A矩阵 3,2,1 行、2,3,4 列构成子矩阵 提取A矩阵全部奇数行,所有列 将A矩阵左右翻转
2010-12-25
13
直接输入法创建矩阵
例:创建矩阵

第二章 MATLAB基础

第二章 MATLAB基础
27
3 )向量是一个数学量,一般高级语言中也未引入, 它可视为矩阵的特例。从MATLAB的工作区可以查 看到:一个 n 维的行向量是一个 1 × n 阶的矩阵,而 一个n维的列向量则当成n×1阶的矩阵。 如A=[1 2 3 4]就是一个4维的行向量。也可看成是 一个一维数组,还要看成是一个1×4阶的矩阵。
3
数据类型转换函 数 uint8 uint16 uint32 uint64 int8 int16 int32 int64
说 明 无符号8位整数 无符号16位整数 无符号32位整数 无符号64位整数 有符号8位整数 有符号16位整数 有符号32位整数 有符号64位整数
字节数 1 2 4 8 1 2 4 8
22
【例 2.8】变量赋值 >> a=3.14 a= 3.1400 >> class(a) %函数class用来是判断变量数据类 型的 ans = double %变量a是双精度的浮点型数据
23
>> a='hello!' hello! >> class(a) ans = char
%变量a重新赋值
13
>> whos Name Size a 1x1 x 1x1 y 1x1 z 1x1
Bytes Class Attributes 16 double complex 4 int32 4 int32 8 int32 complex
14
2.2MATLAB的常量及变量
2.2.1常量 常量是程序语句中取不变值的那些量。如表达式 y=0.314*x,其中就包含一个0.314这样的数值常数,它 便是一个数值常量。而在另一表达式s='Hello'中,单引 号内的英文字符串“Hello”则是一个字符串常量。

第二讲 Matlab的基本计算

第二讲 Matlab的基本计算

>>a3=mat2str( a,2 ) %一行字符
字符串的应用:作出函数图形,并标注最大值点。 字符串的应用:作出函数图形,并标注最大值点。
y = e 2t sin(3t ) 0 ≤ t ≤ 10
clear %清除内存变量 t = 0 : 0.01 : 10; %时间 t 从 0 到 10 每隔 0.01 均匀采样 y = exp( -2*t ) .* sin( 3*t ); %对应每一个 t 求 y 值 %求最大值 y_max 及其下标 i_max [ y_max, i_max ] = max( y ); %横坐标字符串 t_text = [ 't = ', num2str( t(i_max) ) ]; %纵坐标字符串 y_text = [ 'y = ', num2str( y_max ) ]; %三行字符来标识最大值点 max_text = char( 'Maxium', t_text, y_text ); %图名称字符串 Title = [ 'y = exp( -2*t ) .* sin( 3*t )' ]; %新建一个图形窗 figure %画一条黑色的水平线 plot( t,zeros( size(t) ), 'k' ) %保持图形不被清除 hold on %蓝色实线画曲线 y(t) plot( t, y, 'b' ) %大小为 20 的红圆点标记最大值点 plot( t(i_max), y_max, 'r.', 'MarkerSize', 20 ) %在最大值点附近显示注释字符 text( t(i_max)+0.3, y_max+0.05, max_text ) %显示图名、横坐标名、纵坐标名 title( Title ); %取消图形保持 xlabel( 't' ) ylabel( 'y' ) hold off

MATLAB第二章

MATLAB第二章

2 特殊数据判断函数
常用的特殊数据判断函数:
• isinf(A) 返回一个与A同型的数组,该数组元素的 值根据A的相应位置元素的值为无穷大inf时设置为1, 否则为0。 • isnan(A) 返回一个与A同型的数组,该数组元素的 值根据A的相应位置元素的值为NaN 时设置为1,否 则为0。 • isfinite(A) 返回一个与A同型的数组,该数组元素 的值根据A的相应位置元素的值为有限值时设置为1, 否则为0。
关系运算规则
关系运算符的运算法则为: • 1 当两个比较量是标量时,直接比较两数的大 小。若关系成立,关系表达式结果为1,否则 为0。 • 2 当参与比较的量是两个同型的矩阵时,比较 是对两矩阵相同位置的元素按标量关系运算规 则逐个进行,并给出元素比较结果。最终的关 系运算的结果是一个与原矩阵同型的矩阵,它 的元素由0或1组成。
当a=[pi NaN Inf -Inf]时,分析下列 语句的执行结果
• isinf (a) • isnan (a) • isfinite (a)
例 当A=[-6,NaN,Inf,5;-Inf,-pi, eps,0] 时,分析下列语句的执行结果。 • • • • • • • all(A) all(all(A)) any(A) any(any(A)) isnan(A) isinf(A) isfinite(A)

建立任意的3×3的矩阵,并求 出能被3整除的元素。
9 -1;-3 -9 0];
A=[1 0 3 ;2
%生成3×3的矩阵A P=rem(A,3)==0
%判断A的元素是否可以被3整除 A(P) %求出被3整除的元素 如果求上述矩阵中能被5整除的元素呢? P=rem(A,5)==0
例 求三阶魔方矩阵中绝对值大于7的元素。 a=magic(3);

MATLAB基础教程第2章

MATLAB基础教程第2章

第二章 数组、矩阵及其运算
2.1 数组的创建和寻访
例2-2 一维数组的生成与访问
命令:X=rand(1,5) 命令:X(3) 命令:X([1 2 5]) 命令:X(1:3) 命令:X(3:end) 命令:X(3:-1:1) 命令:X(find(X>0.5)) 命令:X([1 2 3 4 4 3 2 1])
第二章 数组、矩阵及其运算
2.2 矩阵的运算
例2-6 矩阵的乘法(接着上面的例子) A*B 3*A
注意:矩阵相乘时要求A的列数等于B的行数
第二章 数组、矩阵及其运算
2.2 矩阵的运算
A/B(矩阵右除)表示的是方程X*B=A的解 A\B(矩阵左除)表示的是方程A*X=B的解
例2-7 矩阵的除法( 见教材P.23)
第二章 数组、矩阵及其运算
2.3 数组的运算
1、数组的基本运算
例2-8 ( 见教材P.25)
第二章 数组、矩阵及其运算
2.3 数组的运算
数组运算和矩阵运算指令对照表
数组运算 指令 A.’ A=s A+s,A-s s.*A s./A,A.\s A.^n A+B,A-B A.*B A./B B.\A 含义 非共轭转置,相当于conj(A’) 把标量s赋给A中每个元素 标量s分别于A的元素之和(差) 标量s分别于A的元素之积 S分别被A的元素除 A的每个元素自乘n次 对应元素相加(减) 对应元素相加(乘) A的元素被B的对应元素相除 (与上相同) A^n A+B,A-B A*B A /B B\A 方阵A自乘n次 矩阵和(差) 同内维矩阵相乘 A右除B A左除B S*A 标量s分别于A的元素之积 A’ 指令 共轭转置 矩阵运算 含义
第二章 数组、矩阵及其运算

第2章 MATLAB数据及其运算.

第2章 MATLAB数据及其运算.

8 1 d 3 5
(2)利用空矩阵删除矩阵的元素 a=[ ] a的维数为0。 例:a( 2 , : )= [ ]; 8 1 6 得: 3 5 7 a a= 4 9 2 8 1 6 4 9 2
2.3.5

复数(Com part)和虚部(imaginary part)组 成。 虚数单位用i或j来表示。 6+5i = 6+5j
format bank format rat
2.3 MATLAB矩阵的表示
2.3.1 矩阵 MATLAB中最基本的数据结构是矩阵(matrix)。 1*1的矩阵----标量(scalar): [5] 只有一行或一列的矩阵-----向量(vector): [1 3 5 7]
2 4 6 8
2.4 Matlab数据的运算(Operators ) 运算符(Operators )
+ Addition
*
Subtraction
Multiplication
/
\
Division
Left division
^
Power
2.4.1 算术运算 (1)矩阵加减运算: 两个同维矩阵,才能进行加减运算,对应无素相加减。 一个标量与矩阵相加减时,结果为这个标量与矩阵的 每一个元素相加减。 x=[2,-1,0;3 2 -4]; y=ones(2,3); x-y=? [1,-2,-1;2,1,-5] x+1=? [3,0,1;4,3,-3]
在线性代数中,本没有矩阵除法,它是由逆 矩阵引申来的。 MATLAB中,矩阵求逆(Matrix inverse)的函 数为: Y = inv(X) 方程A*X=B的解为:X=inv(A)*B=A\B, A\B称为A左除B,左除时要求两矩阵行数相等。 方程X*A=B的解为:X=B*inv(A)=B/A, A/B称为A右除B,右除时要求两矩阵列数相等。

第二章Matlab 基本功能

第二章Matlab 基本功能

>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16] A=
1234 5678 9 10 11 12 13 14 15 16
>> B=[1,sqrt(25),9,13 2,6,10,7*2 3+sin(pi),7,11,15 4,abs(-8),12,16]
B= 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
3.利用M文件建立矩阵
对于比较大且比较复杂的矩阵,可以为它专门建立一个M
文件。下面通过一个简单例子来说明如何利用M文件创建
矩阵。
A=[1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 16,17,18,19,20 21,22,23,24,25]
(1)启动有关编辑程序或MATLAB文本 编辑器,并输入待建矩阵:
3.访问多个元素
操作符“:”可以用来表示矩阵的多个元素。 若A是二维矩阵,其主要用法如下: Ø A(:,:) 返回矩阵A的所有元素。 Ø A(i,:) 返回矩阵A第i行的所有元素。
Ø A(i,k1:k2) 返回矩阵A第i行的自k1到k2 列的所有元素。
Ø A(:,j) 返回矩阵A第j列的所有元素。 Ø A(k1:k2,j) 返回矩阵A第j列的自k1到k2
>> a= linspace(-6,6,4) a=
-6 -2 2 6
>> b=logspace(0,2,4) b=
1.0000 4.6416 21.5443 100.0000
2.2.2 矩阵下标引用
本小节将介绍通过矩阵 下标 来存取元素值 的方法,包括访问单个元素、线性引用元 素和访问多个元素等。

第2章 MATLAB基本操作

第2章   MATLAB基本操作

6. 逻辑操作符 功能: 功能:逻辑操作运算。 格式: 格式:A&B A|B ~A 注意逻辑操作有相应的M文件 文件: 注意逻辑操作有相应的 文件:A&B等效 等效 ),A|B等效于 等效于or(A,B), 于and(A,B), ( , ), 等效于 , , ~A等效为 等效为not(A)。 等效为 。
2.关系操作符 关系操作符 关系运算符包括: 关系运算符包括:< 、< = 、〉、> = 、= = 、 ~= 3.测试用的逻辑函数 测试用的逻辑函数 1)all函数测定矩阵中是否全为非零元素 2)any函数测试出矩阵中是否有非零值 3) find函数可找出矩阵中的非零元素及其下 标 4) exist函数在装入数据之前对数据文件作 检测
利用取整和求余函数,可得到整数或精确到小数点后的第 几位。例如: x1=10-round(20*rand(2,5)) %产生[-10 10]之间的随机数(取整) x1 = -4 4 -1 -4 7 -7 -2 0
2 −7
x2=10-round(2000*rand(2,5))/100 %产生[−10 10]之间的随机 数(精确到0.01) x2 = -8.0000 -2.9000 -3.2000 -6.4300 -6.3600 3.1600 4.2100 -0.6800 3.1800 -4.5400
5.函数 函数 内部函数、工具箱函数、自定义函数。 1)函数的嵌套 x=sqrt(log(z)) 函数的嵌套 2)多输入函数 theta=atan2(y,x) 多输入函数 3)多输出函数 [v,d] = eig(a) 多输出函数 [y,I] = max(x) 6.表达式 表达式 a=(1+sqrt(10))/2 b=abs(3+5i) c=sin(exp(-2.3))
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:Matlab应用教材:Matlab应用于实验教程教程讲授人:专业技术职务:讲师学历:研究生学位:硕士讲授题目:Matlab基本运算所属章节:第二章计划学时:2学时教学目的和要求:MATLAB 7的优点不仅在于强大的功能,还在于其简单易学。

本章主要是介绍MATLAB 7的基本使用方法。

在学习完本章的内容后,可以进行基本的数值运算,从而能够容易地解决许多在学习和科研中遇到的计算问题。

教学重点:•标点符号的使用•常用的操作命令和键盘技巧•MATLAB 7的数据类型•常量和变量的使用方法•浮点数和复数的使用方法教学难点:•简单的数学运算•常用的操作命令和键盘技巧•MATLAB 7的数据类型教学方法:讲授、演示使用教具: 多媒体课件 思 考 题:1. MATLAB 的命令窗口的作用是什么?编辑/调试窗口?图象窗口?2. 列出几种不同的得到MATLAB 帮助的方法。

3. 什么是工作区?在同一工作区内,你如何决定它里面存储了什么?4.一小球从空中下落的位移公式为20021++=at t v x x 用MATLAB 计算小球在t =5s 时的位置,已知x 0 =10m ,v 0 =15m/s , a=-9.84m/s 2.参考资料:【1】 Matlab Programming for Engineers.(Second Edition).StephenJ.Champan【2】 精通Matlab 7王正林.刘明编著.电子工业出版社第2章Matlab 基本运算在本章我们将学习MATLAB 的基本元素。

在本章的章末,你将会编写简单的函数化的工具。

2.1 变量和数组MATLAB 程序的基本数据单元是数组。

一个数组是以行和列组织起来的数据集合,并且拥有一个数组名。

数组中的单个数据是可以被访问的,访问的方法是数组名后带一个括号,括号内是这个数据所对应行标和列标。

标量在MATLAB 中也被当作数组来处理——它被看作只有一行一列的数组。

数组可以定义为向量或矩阵。

向量一般来描述一维数组,而矩阵往往来描述二维或多维数组。

当我们讨论一维数组时用向量表示,当我们讨论二维或多维向量时用矩阵。

如果在特殊情况下,同时遇到这两种数组,我们就把他们通称为“数组”。

数组的大小(size )由数组的行数和列数共同决定,注意行数在前。

一个数组所包含的数据多少可由行数乘列数得到。

例如,下列数组的大小为图2.1 一个数组是以行和列组织起来的数据集合,此数组arr 含有20 个元素,共4 行,5列。

阴影元素是arr(3,2)数组中的单个数据是可以被访问的,访问的方法是数组名后带一个括号,括号内是这个数据所对应的行标和列标。

如果这个数组是一个行向量或列向量,则只需要一个下标。

例如上面的数组A(2 1)为3,C(2)为2。

一个MATLAB 变量是一段包含一个数组的内存区,并且拥有一个用户指定的变量名。

通过适当的命令和它的变量名随时可以就调用它和修改它。

MATLAB 的变量名必须以字母开头,后面可以跟字母,数字和下划线(_).只有前63个字符是有效的;如果超过了63个字符,基余的字符将被忽略。

如果声明两个变量,两变量名只有第64个字符不同,那么MATLAB 将它们当作同一变量对待。

2.2 MATLAB 变量的初始化当变量初始化时,MATLAB 将会自动建立变量。

有三种方式初始化MATLAB 中的变量:1.用赋值语句初始化变量2.用input 函数从键盘输入初始化变量3.从文件读取一个数据2.2.1 用赋值语句初始化变量最简单的创建和初始化一个变量的方法是用赋值语句赋予变量一个或多个值。

赋值语句的一般形式如下var = expressionvar 是变量名,expression 可以是一个标量、一个数组或常量、其他变量和数学运算符号(+、-)的联合。

这个表达式(expression )的值是通过一般的数学运算法则计算出来的,然后将产生的结果存储到变量var 中。

下面是一些用赋值语句初始化的变量:var=40*i;var2=var/5;array=[1 2 3 4];x=1;y=2;第一个例子创建了一个double 类型的标量变量,存储了一个虚数40i 。

第二个例子创建了一个表达式var2,把var/5 的值存储于内。

第三个例子创建了一个数组array,并存储了一个4 元素的行向量于内。

最后一个例子显示了多个赋值语句可写在同一行,中间用逗号或分号隔开。

注意如果在赋值语句执行时变量已经存在,那么这个变量原有的值将被覆盖。

正如第三个例子显示的,数据数组也可以初始化变量。

我们可以用是括号()和分号建立数组。

所有元素按行阶排序,换句话说,每一行的值从左向右,顶部的行置于最前,底部的行置于最后。

在一行内单个数值可用空格或逗号隔开,而行与行之间要与则用分号隔开,或另起一行书写。

下面的表达式都是合法的,能用于建立一个变量:[5] 这个表达式创建了1×1 数组(一个标量),包含数值3.4. 这时括号可以省略.[1.0 2.0 3.0] 这个表达式创建了1×3 数组,一维行向量[1 2 3][1.0;2.0;3.0] 表达式创建了一个3×1 数组,一维列向量⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡321 [1,2,3;4,5,6] 这个表达式创建了一个2×3 数组,矩阵⎥⎦⎤⎢⎣⎡416 5 3 2[1,2,3 这个表达式创建了一个2×3 数组,矩阵 ⎥⎦⎤⎢⎣⎡416 5 3 2 4,5,6][] 是个空数组,没有行,没有列(注意他与元素全为零的数组的区别)注意一个数组每一行元素的个数必须完全相同,每一列元素的个数也必须完全相同.像[1 2 3;4 5]; 这样的表达式是非法的,因为第一行有3个元素,第二行有只有2个元素 用于初始化数组的表达式可以包括代数符号或事先已经定义好的数组.例如赋值语句:a=[0 1+7] b=[a(2) 7 a]定义了数组a=[0 8] 和数组b=[8 7 0 8].当我们创建一个数组时,不是每一个元素都必须定义.如果要定义一个特殊的数组,或只有一个或几个元素没有定义,那么之前的那些元素将会自动创建,并初始化为0.例如,如果数组c 事先没有定义,语句c(2,3)=5 将会创建一矩阵⎥⎦⎤⎢⎣⎡0=5 0 00 0 c 在每个赋值语句末的分号有特殊的目的:无论在何时一个表达式在赋值语句中被赋值,分号将会中止变量值的重复。

如果句末没有分号,变量值将会自动显示在命令窗口(The Command Windows) 中。

>> A=[1,2,3;4,5,6] A =1 2 3 4 5 6如果在赋值语句末有分号,这种重复将会消失。

重复是一个用于检查你的工作极好的方法,但是它降低了运行速度。

因此,我们在一般情况下总是禁止重复。

尽管如此,重复计算的结果提供了一个强大的应急调试器。

如果你不能确定一个特定的赋值语句结果是多少,这时你可以去掉这个语句后的分号,当这个语句编译时,结果会显示在命令窗口(The Command Windows) 。

2.2.2 用捷径表达式赋值创建一个小数组用一一列举出元素的方法是比较容易的,但是当我们创建包括成千上万个元素的数组怎么办?把每一个元素列举出来则不太现实。

MATLAB 提供一种专门的捷径标记法,这种方法用克隆运算符(colonoperator )适用于上述情况。

克隆运算符指定一系列的数值,它指定了这个系列数的第一值,步增和最后一个值。

它的一般顺序始下first:incr:lastfirst 代表数组的每一个值,incr 代表步增量,last 代表这个数组的最后一个值。

如果步增量为1,那么步增量可省略,而变成了first:last 格式。

例如,表达式1:2:10 是创建一个1×5 行向量[1 3 5 7 9] 的简便方法。

>> x=1:2:10 x =1 3 5 7 9用克隆标记法初始化一个含有一百个元素的数组⎥⎦⎤⎢⎣⎡π,,100π2,100π ,语句如下: Angles = (.01:.01:1)*pi2.2.3 用内置函数来初始化数组也可以用MATLAB 内置函数创始化。

例如,函数zeros 可以初始化任何大小的全为零的数组。

用许多形式的zeros 函数。

如果这个函数的参数只是一个标量,那么MATLAB 将会创建一个方阵,行数和列数均为这个参数。

如果这个函数有两个标量参数,那么第一个参数代表行数,第二个参数代表列数。

因为size 函数所返回的一个数组的行数和列数,所以它可以联合zeros 函数来创建一个相同大小零矩阵。

下面是一些用到zeros 函数的例子。

>>a = zeros(2); >>b = zeros(2,3); >>c = [1 2;3 4]; >>d = zeros(size(c))这些语句产生下列的数组⎥⎦⎤⎢⎣⎡000=0 a ⎥⎦⎤⎢⎣⎡=0 0 00 0 0b ⎥⎦⎤⎢⎣⎡0=⎥⎦⎤⎢⎣⎡=0 00 d 4 32 1c相似地,ones 函数产生的数组包含的元素全为1,eye 函数通常用来产生单位矩阵,只有对角线的元素为1.其他元素为0.表2.1 列出一些用于初始化变量的函数函数 作用zeros(n) 创建一个n ×n 零矩阵 zeros(n,m) 创建一个n ×m 零矩阵zeros(size(arr)) 创建一个与数组arr 的零矩阵 ones(n) 创建一个n ×n 元素全为1 矩阵 ones(n,m) 创建一个n ×m 元素全为1 矩阵 eye(n) 创建一个n ×n 的单位矩阵 eye(n,m) 创建一个n ×m 的单位矩阵length(arr) 返回一个向量的长度或二维数组中最长的那一维的长度 size(arr)返回指定数组的行数和列2.2.4 用关键字input 初始化变量关键字input 用来提示使用者和直接从键盘输入初始化变量.当脚本文件(Script files) 时, 它可以用来提示使用者输入.input 函数在命令窗口(The Command Windows) 显示提示语句,并等待用户输入一个值.例如,下面的赋值语句: my_val = input('Enter an input value:')当这个语句被编译时,MATLAB 打印出字符串enter an input value:, 然后等待用户回复. 如果要只输入一个数,那么只需要直接键入,如果要输入一个数组,则必须带上中括号([]). 不管怎样,当按下回车键时.在窗口输入的任何值都会被储入变量my_val. 如果只按下回车键,那么这个变量就存储了一个空矩阵.如果input 函数中有字符's'做为它的第二个参数,输入的数据就被当字符串.因此,语句>> in1 = input('enter data:');Enter data:1.23把数值1.23 存储到in1 中.而语句>> in2 = input('enter data:','s')Enter data:123把字符串1.23 存储到in2 中.2.3 多维数组2.3.1 多维数组在内存中的存储一个有m 行和n 列的二维数组包括m×n 个元素,这些元素在计算机的内存中将会占有m×n 个连续的内存空间。

相关文档
最新文档