2第二章 Matlab基本语法
第2讲 MATLAB基本语法
>> s=a([1 2],[2 3]) 取出特定的行、列 s= 2 5
>> a([2,4,5],:)= [ ] 空矩阵的运用
a=
1 7 2 8 3 9 0 0
4.特殊矩阵与数组
单位矩阵
>> A=eye(3) A= 1 0 0 0 1 0 0 0 1 >> a =[1 2 3 0; 7 8 9 0]; 产生3×3×2的“1”矩阵 >> A=ones(3,3) A= 1 1 1 1 1 1 1 1 1
>> A=[3 1;2 4],B=[4 5],C=[3;4] A= 3 1 2 4 B= 4 5 C= 3 4 >> B/A ans = 0.6000
>> inv(A) ans =
0.4000 -0.1000 -0.2000 0.3000 >> B*inv(A) ans = 0.6000 1.1000 >> A\C ans = 0.8000 0.6000
7.冒号“:”运算符
格 式 j:k j:k j:i:k j:i:k 功 能 等同于[j,j+1,„,k] 当 j>k 时为空 等同于[j,j+i,j+2i,„,k] 当 i>0 且 j>k,或者 i<0 且 j<k 时为空
>> k=1:10 k= 1 2 3 4 5 6 7 8 9 10 >> x=1:0.2:2 x= 1.0000 1.2000 1.4000 1.6000 1.8000 >> x=3:-0.5:2 x= 3.0000 2.5000 2.0000
|(or)
~(not) xor
第2章 MATLAB的基本语法
a([2,4,5],: )=[ ]
得到 a=1 2 3
789
第2章 MATLAB的基本语法
注意,“空矩阵”是指没有元素的矩阵。对任何一个矩 阵赋值为[ ],就是使它的元素都消失掉。这完全不同于 “零矩阵”,后者是元素存在,只是其数值为零而已。可以 看出,空矩阵在使矩阵减缩时是不可缺少的概念。
除“变量=表达式(或数)”的标准形式外,可以不要等式 左端而只剩下“表达式”。这有两种可能: ① 该表达式并不 产生数字解,例如产生图形或改变系统状态; ② 该表达式产 生数字解,但不需要保存它。此时MATLAB自动给出一个临 时变量ans,把右端的结果暂存在ans中。若再做下一次运算 又用到ans,则前一次的结果就被冲销了。例如键入
第2章 MATLAB的基本语法
第2章 MATLAB的基本语法
第2章 MATLAB的基本语法
2.1.5 基本赋值矩阵 为了方便给大量元素赋值,MATLAB提供了一些基本矩阵。
表2-1给出了最常用的一些,其用法可从下面的例子中看到。其 中魔方矩阵magic(n) 的特点是: 其元素由1到n×n的自然数组成; 每行、 每列及两对角线上的元素之和均等于(n3+n)/2。单位矩阵 eye(n)是n×n元的方阵,其对角线上的元素为1,其余元素均为0。 下例列出了上表中的四种矩阵: 键入
结果,就以分号结尾,此时运算仍然执行,只是不作显示。
变量的元素用圆括号中的数字(也称为下标)来注明,一维 矩阵(也称数组或向量) 中的元素用一个下标表示; 两维的矩阵 可有两个下标数,以逗号分开; 三维或更高维的矩阵,可有三 个或更多下标。用户可以单独给元素赋值,如x(2)=1.7321,a(2, 3)=6等。如果赋值元素的下标超出了原来矩阵的大小,矩阵的 行列会自动扩展。例如输入
第2章 MATLAB的基本语法
第2章
MATLAB的基本语法
• 检查矩阵阶数的MATLAB语句是size(x),例如 [m,n]=size(fb2) %m行,n列 • 求一维矩阵(数组)的长度: l=length(X) length只有一个输出量 size有两个输出量
• length不区分行或列,所以矩阵作加减法阶数检验时只能 用size。
第2章
MATLAB的基本语法
• 复数矩阵z的转置、 共轭运算: – 运算符“′”表示把矩阵作共轭转置,即把它的行列互换,同时 把各元素的虚部反号。 – 函数conj只取共轭,即只把各元素的虚部反号,即只取共轭。 – 若想求转置而不要共轭,就要用conj和“′”结合起来完成。 例如 w=z′, u=conj(z), v=conj(z) ′ %共轭转置,共轭,转置
第2章
MATLAB的基本语法
(二)矩阵和变量的赋值 1.单元素变量赋值语句 (1) 变量=表达式(或数) 例子: a=5 a1 = sqrt(3) b = a + a1 语句的结尾为“回车”或逗号,此时会立即显示运算结果。 语句的结尾为分号,此时运算仍然执行,但不显示。
第2章
MATLAB的基本语法
第2章
MATLAB的基本语法
• 矩阵的乘法: – 规则:m×p阶矩阵A与p×n阶矩阵B的乘积C是一个m×n阶矩 阵,它的任何一个元素C(i,j)的值为A阵的第i行和B阵的第j列 对应元素乘积的和,即 C(i,j)=A(i,1)*B(1,j)+A(i,2)*B(2,j)+…+A(i,p)*B(p,j) =∑pA(i,k)*B(k,j) 式中的乘号是普通数(标量)的乘号。 – p是A阵的列数,也是B阵的行数(内阶数),两矩阵相乘的 必要条件是它们的内阶数相等。 – 矩阵的乘法不满足交换律。 – 对于标量A、B,其n、p、m均为1,矩阵乘法退化为普通数乘。 – 矩阵与数相乘,各元素分别与数乘。单位矩阵乘以任何矩阵 其积仍等于该矩阵。
数学建模02第二章Matlab语言基础-Matlab教程
8)关系与逻辑运算
1、关系操作符 关系操作符 < <= > >= == ~= 2、逻辑运算符 说明 小于 小于或等于 大于 大于或等于 等于 不等于
逻辑操作符
& ︱ ~
说明
Байду номын сангаас与 或 非
9)程序设计
Matlab有两种工作方式: 1)人机交互的命令行指令操作方式,即在命令窗口每输入一条命令,则立即运行 该命令得到结果。 2)进行控制流的程序设计,即编制一种可存储的以M为扩展名的文件(简称M文 件)。 在Matlab下执行该程序M文件分两种: (1)命令式M文件:也称脚本文件, 就是将Matlab的一系列命令按顺序编制成一 个文本文件,文件名后缀为M,然后在command window 下运行文件名,则 按顺序执行文件中的命令。 文件建立方法:1. 在Matlab中,点:File->New->M-file 2. 在编辑窗口中输入程序内容 3. 点:File->Save,输入文件名,后缀为M,存盘 例:建立命令式脚本文件qwe.m 在编辑窗口输入如下命令: a=1 b=2; %行尾加分号,注意运行结果。 c=a+b 然后存盘。在command window 下输入qwe.m并回车。
4、 switch-case结构 witch-case语句的一般表达式: Switch<选择判断量> case 选择判断值1 选择判断语句1 case 选择判断值2 选择判断语句2 … …. Otherwise 判断执行语句 End 例子: Switch code case -1 disp(‘error’) case 0 disp(‘write in English’) case 1 disp(‘write in Chinese’) Otherwise disp(‘write in French’) End
Matlab-2 MATLAB基本操作与语法
若先转置再排列,即实现所有元素按行排列。
4、间隔赋值(适合批量数据)
(1) 变量=(first:increment:last) 形式如: t=(0:0.1:1) 则 t=[0,0.1,0.2,…,1]
(2) 线性间隔函数 linspace(first,last,num) 从first开始到last结束共num个元素,
3.141592653589793
Matlab命令 format long format short e format long e format hex format bank format + format rat format short (默认)
说 明
16位十进制
5位十进制数加指数 16位十进制数加指数
2、乘法
(1)矩阵相乘:m×p阶矩阵A与p×n阶矩阵 B的乘积是一个m*n阶矩阵。 例如: a=[1 2 3];b=[4 5 6] 则: a*b’=[20]. (2)矩阵与常数相乘等于每个元素乘以该常
数,例:2*a。
2、乘法
( 3 )矩阵元素相乘(数组相乘):使用“ .* ” 相乘的两个矩阵阶数应相同 。 例如:a=[1 2 3];b=[4 5 6] 则:a.*b=[4 10 18]
注意:行数或列数必须与原矩阵相同。
3、矩阵的变换
(1)抽取:由原矩阵中的部分元素构成新矩阵。
如:b=a([2,4],[1,3]) 即 a 中第 2 行第 1 、 3 列,第 4 行第 1 、 3
列抽出作为b的第1和第2行元素。
% 表示第 2 , 4 行与第 1 、 3 列交叉元素组成新矩阵。
3、矩阵的变换
◆比较是在元素间进行的。
◆矩阵必须同阶 ◆比较结果仍为矩阵,且元素值为0(假) 或1(真) 例如:a=[1 2],b=[2 1], 则a>b 结果为[0 1], a==b 结果为[0 0]
第二章 MATLAB的基本语法
矩阵的下标 ()加数值表示 加数值表示, 用()加数值表示,如a(4,5)表示矩 表示矩 的第4行第 列元素。 阵a的第 行第 列元素。‘:’表示全 的第 行第5列元素 表示全 行或全列。 行或全列。 空矩阵概念[ 空矩阵概念 ] 没有元素,可以应用它减缩矩阵。 没有元素,可以应用它减缩矩阵。 复数 每一个元素都可以是复数。虚部i,j。 每一个元素都可以是复数。虚部 。
矩阵的乘方和幂次函数 运算符‘ ,矩阵A,乘方A^3,幂 运算符‘^’,矩阵 ,乘方 , 3^A。 。 矩阵函数sqrtm(),expm(),logm()。 矩阵函数 , , 。 矩阵结构形式的提取与变换 矩阵左右翻转fliplr(),上下翻转 矩阵左右翻转 ,上下翻转flipud() 共轭转置‘ 共轭conj()。 共轭转置‘,共轭 。 阶数重组reshape(),旋转 度rot90() 阶数重组 ,旋转90度
人机交互命令 在主程序文件中,方便人机交互的命令。 在主程序文件中,方便人机交互的命令。 echo on(off)、pause(n)、keyboard、 、 、 、 return、input(‘提示符’)、menu、 、 提示符’ 、 、 提示符 ^c等。 等
函数文件
格式: 语句开头, 格式:由function语句开头,输出变元,函 语句开头 输出变元, 数名,输入变元,注释,全局变量声明, 数名,输入变元,注释,全局变量声明,语 句等。 句等。 特点:仅处理局部变量,与工作空间无关, 特点:仅处理局部变量,与工作空间无关, 所处理变量为临时的,返回后消失。 所处理变量为临时的,返回后消失。 注意: 文件的放置路径在 文件的放置路径在MATLAB的查找 注意:M文件的放置路径在 的查找 范围内。 范围内。
2第二章 Matlab基本语法
第二章 Matlab 基本语法(一般性操作)§1矩阵和数组的操作Ⅰ——创建 保存 调用概述:矩阵是线性代数的基本运算单元,通常矩阵是含有M 行和N 列数值的矩形结构。
其元素可以是实数或复数,因而可将矩阵分为实数矩阵和复数矩阵。
MATLAB 支持线性代数所定义的全部矩阵运算。
软件的优势在于快捷和轻松的处理整个矩阵。
通过一定的转化方法,可以将一般的数学运算转化成相应矩阵运算来处理。
在MATLAB 中把数据分为标量、矢量、矩阵和列阵。
列阵指多维数组,是一大概念,在列阵中,一维数组是矢量,二维数组即为矩阵。
当然,我们也可杷标量看作仅有一行一列的矩阵,把矢量看作仅有一列或一行的矩阵。
一、知识背景1. n m ⨯ 阶矩阵,记作n m A ⨯或n m ij a ⨯)(如:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡mn m m n n a a a a a a a a a 212222111211 ,为m 行n 列矩阵 2. 数组:可看成是单行或单列矩阵。
3. 同型矩阵:二矩阵行数和列数相同,如n m n m B A ⨯⨯,。
4. 特殊矩阵:见矩阵创建3。
二、矩阵的创建1. 直接输入法:用指令产生数值矩阵矩阵首尾以 [ ] 括起;同一行中元素用逗号“,”或空格隔开;行与行之间必须用分号“;”或按Enter 键分隔。
矩阵元素可以是数字也可以是表达式,表达式中变量必须定义。
例1:创建矩阵:⎥⎦⎤⎢⎣⎡=6 5 43 2 1a>> a=[1,2,3;4,5,6]a =1 2 34 5 6例2:>> x=9,y=pi/6; % 定义x ,y 变量>> A=[3,5,sin(y);cos(y),x^2,7;x/2,5,1] % 产生矩阵AA =3.0000 5.0000 0.50000.8660 81.0000 7.00004.50005.0000 1.0000说明:%作为注释的开始标志,以后的文字不影响计算过程。
《MATLAB仿真及其在光学课程中的应用(第3版)》教学课件—02MATLAB的基本语法
• 2.1.4 元胞数组
• 元胞是元胞数组(CellArray)的基本组成部分。元胞 数组与数值数组相似,以下标来区分,单元元胞数组由元 胞和元胞内容两部分组成。与一般的数值数组不同,元胞 可以存放任何类型、任何大小的数组,而且同一个元胞数 组中各元胞的内容可以不同。创建元胞数组有用花括号{ } 直接赋值生成元胞数组和函数cell创建元胞数组这两种方 法。元胞数组的运算函数如书中表2-6所示。
• 【例2-1-3】元胞数组创建与显示实例。 • MATLAB语句: • a={'MATLAB成绩',91,['笔试46';'上机45']} %用括号{}直接赋值 • b=cell(2);b{1,1}='class';b{1,2}='no020305'; • b{2,1}='name mary'; b{2,2}=['Computer is 95'] %函数cell创建元胞
MATLAB语句:
• >>student=struct('number','02110875','name','王玲','sex','女 ','age','21',...
• 'class','03','department','02')
• 运行语句,输出结果:
• student =
•
number: '02110875'
• MATLAB为关系运算和逻辑运算提供了关系操作符和 逻辑操作符,如书中表2-4和表2-5所示。
matlab基本语法
2.3 元素群运算
2.3.1 数组及其赋值
等间隔数组的赋值 t = [初值:增量:终值] t = 0:0.02:1 t = 10:-3:-5 增量为1时,增量可以略去 k = 1:6
linspace函数 linspace(初值,终值,点数) theta = linspace(0,2*pi,9) logspace函数:自变量按等比级数赋值 (在设频率轴时) w = logspace(0,1,11)
(二)循环结构
实现循环结构的语句:for语句和while语句。
1. for语句:
格式: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 注:其中表达式1的值为循环变量的初值,表达式 2的值为步长,表达式3的值为循环变量的终 值。步长为1时,表达式2可以省略。
例:计算1+3+5+…+99=?
2.4.2 逻辑运算 逻辑量只能取0(假)和1(真)两值 与(&):0&0=0, 0&1=1, 1&0=0, 1&1=1 或(|): 0|0=0, 0|1=1, 1|0=1, 1|1=1 非(~):~0=1,~1=0 异或(xor):xor(0,0)=0 xor(0,1)=1 xor(1,0)=1 xor(1,1)=0
2.1.3 复数
Matlab中每一个元素都可以是复数,实数是复数 的特例。虚数部分用i或j表示 c = 3+5.2i 两种赋值方法 (1)将其元素逐个赋予复数 z = [1+2i, 3+4i, 5+6i, 7+8i] (2)将实部和虚部矩阵分别赋值 z = [1, 3; 5, 7]+[2, 4; 6, 8]*i
2.2.3 矩阵的乘方和幂次函数
第2章 MATLAB的基本语法(1)
handmard
Handmard矩 rosser 阵
hankel hilb invhilb
Hankel矩阵 toeplize Hilbert矩阵 vander
Hilbert逆矩 wilkinson 阵
魔方矩阵
Pascal矩阵
经典的对称 特征值测试 矩阵 Toeplize矩阵
Vandermond e矩阵 Wilkinson’s 特征值测试 矩阵
• 这几个函数的调用格式相似,下面以产生零矩阵 的zeros函数为例进行说明。其调用格式是:
zeros(m) 产生m×m零矩阵
zeros(m,n) 产生m×n零矩阵。 zeros(size(A)) 产生与矩阵A同样大小的零矩阵
• 相关的函数有:length(A)给出行数和列数中的较 大者,即length(A)=max(size(A));ndims(A)给出 A的维数。
1/0
Inf (1/0)
Warning: Divide by zero. ans =
Inf
NaN (0/0,0*Inf,Inf/Inf)
Inf/Inf ans = NaN
ans pi Inf NaN i或j Nargin nargout realmax realmin flops eps
基本赋值矩阵
MATLAB中所有的运算符和函数对复数 有效
f=sqrt(1+2i) f=
1.2720 + 0.7862i
>> f*f ans =
1.0000 + 2.0000i
变量检查
在调试程序时,要检查工作空间中的 变量及其阶数
变量检查用who命令
who
Your variables are:
第2章MATLAB的基本语法课件
handmard
Handmard矩 rosser 阵
hankel hilb invhilb
Hankel矩阵 toeplize Hilbert矩阵 vander
Hilbert逆矩 wilkinson 阵
魔方矩阵
Pascal矩阵
经典的对称 特征值测试 矩阵 Toeplize矩阵
Vanderm阵
此外,常用的函数还有reshape(A,m,n),它在 矩阵总元素保持不变的前提下,将矩阵A重新 排成m×n的二维矩阵。
4. 建立大矩阵 大矩阵可由方括号中的小矩阵建立起来。 例如
A=[1 2 3;4 5 6;7 8 9]; C=[A,eye(size(A)); ones(size(A)),A]
C=
3. 内存变量文件 ❖利用MAT文件(.mat)可以把当前MATLAB
工作空间中的一些有用变量长久地保留下 来。
❖MAT文件的生成和装入由save和load命令 来完成。常用格式为:
save 文件名 [变量名表] [-append][-ascii]
load 文件名 [变量名表] [-ascii]
2.3 MATLAB矩阵
• 数据输出时用户可以用format命令设置或改 变 数 据 输 出 格 式 。 format 命 令 的 格 式 为 : format 格式符
• 注意,format命令只影响数据输出格式,而 不影响数据的计算和存储。
2.2.4 预定义变量
在MATLAB工作空间中,还驻留几个由 系统本身定义的变量。它们有特定的含 义,在使用时,应尽量避免对这些变量 重新赋值。
❖ 变量的元素用圆括号“( )”中的数字 (下标)表示。一维矩阵(数组)中的
元素用一个下标表示;二维矩阵用两个 下标表示,以逗号分开
MATLAB第二章
function [egg1,egg2,chicken1]=myegg(n)
% egg1 隔1天的蛋个数 % egg2 隔2天的蛋个数 % chicken1 过n天后母鸡个数 if n==1
egg1=1; egg2=0; chicken1=1; elseif n==2 egg1=1; egg2=1; chicken1=1;
27
>> x=0:0.1:2*pi; >> y=sin(x); >> plot(x,y) >> plot(x,y,‘ro’) %默认是蓝色曲线 >> x=[0 1 2 5];y=[4 -2 1 2]; >> plot(x,y) >> fplot(‘x^2+4*x+1’,[-15 15]) %函数用字符串表示
1 -8 4 9 -4 5 7 -9 >> fun=@myfun5 %例28中的函数 fun =
@myfun5 >> y=fun(A) %直接调用 y=
1 -13 16 81 -5 25 49 -15 >> y=feval(fun,A) %利用feval y=
1 -13 16 81 -5 25 49 -15
1 4 9 16 5 10 15 20
2024/7/5
第二章 MATLAB编程与作图
24
>> k=5;
>> ff=@(x)x^2+2*x+k %可以使用空间中的变量k
ff =
@(x)x^2+2*x+k
>> ff(5)
ans =
40
>> A=[1 2 ;3 4]
MATLAB的基本语法
第 2 章 MATLAB的基本语法
2.变量的元素的标注 在MATLAB中,变量的元素(即矩阵元)用圆括号“( )”中的数字(也称为下标) 来注明,一维矩阵(也称数组)中的元素用一个下标表示,二维矩阵由两个下标数构成, 以逗号分开,对三维矩阵则由三个下标数构成。 3.特殊矩阵和数组 (1)单位矩阵函数eye() 函数功能:产生对主角线元素为1,其它元素为0的单位矩阵。eye()的调用格式如下: A=eye(n) 返回一个nn阶单位矩阵; A=eye(m , n) 返回一个mn阶单位矩阵,或用A=eye([m , n]); (2) zeros函数、ones函数、rand以及randn函数 A=zeros(n) 返回一个nn阶零矩阵; A=zeros(m , n) 返回一个mn阶零矩阵;
第 2 章 MATLAB的基本语法
第 2 章 MATLAB的基本语法
(5)矩阵元素右除“A./B”与左除“A.\B” 矩阵元素右除“A./B”表示矩阵元素A(i,j)/B(i,j);矩阵元素左除“A./B” 表示矩 阵B(i,j)/A(i,j),因此,A和B必须大小相同,或者其中之一为标量。 (6)矩阵幂“^”:X^p 如果p为标量,表示X的p次幂; (7) 矩阵转置“ ’ ” A’表示矩阵A的线性代数转置。对于复矩阵,表示复共轭转置。
第 2 章 MATLAB的基本语法
2.4.4 数据的取舍与保留
1.四舍五入取整数函数round 格式:I=round(X) 返回X中每个元素的最靠近该元素的整数。 eg: c=[1.1,3,6.8;2.4,6.3,0.5], d=round(c) 2.向-∞方向取整数函数floor 格式:I=floor(X) 返回X中每个元素的最靠近该元素的最小整数。eg: a=floor(5.2),b=floor(-5.2) 3.向-∞方向取整数函数ceil 格式:I=ceil(X) 返回X中每个元素的最靠近该元素的最大整数。eg: a=ceil(5.2),b=ceil(-5.2) 4.向0方向取整数函数fix 格式:I=fix(X) 返回X中每个元素的最靠近零的整数。eg: a=fix(5.8),b=fix(-5.8)
matlab 第2章语法
>> N = rand(1,10) N= Columns 1 through 7 0.6154 0.7919 0.9218 0.7382 0.1763 0.4057 0.9355 Columns 8 through 10 0.9169 0.4103 0.8936
(1)用线性等间距生成向量矩阵 [start:step:end]
下标里的冒号
下标里的冒号代表是矩阵的一部分,如A(1:k,j) 代表第j 列的前K行元素 >> sum(A(1:4,4)) %计算第4列的1到4行元素的和 >> sum(A(:,end)) %如果只要冒号本身,则代表矩阵行或 列的所有元素, end 代表最后一行或列,本例中代表列 ans = 34 >> sum(1:16)/4 ans = 34
>> t=A(4,5) ??? Index exceeds matrix dimensions 错误,超出矩阵维数 X = A; X(4,5) = 17 %可以给超出矩阵维数的元素赋值,矩阵自动 调节新的值 X= 16 3 2 13 0 5 10 11 8 0 9 6 7 12 0 4 15 14 1 17
冒号(:)的作用
一个重要的操作符。主要作用有:用于生成默认间隔 为1的等间隔向量;用于选出矩阵指定行、列及元素; 用于循环语句。具体使用形式如下:
输入行向量: X=a:inc:b >> 1:10 %增量为1 ans = 1 2 3 4 5 6 7 8 9 10 >> 100:-7:50 ans = 100 93 86 79 72 65 58 51 >> 0:pi/4:pi ans = 0 0.7854 1.5708 2.3562 3.1416
2、MATLAB的数据操作及语法
矩阵的转置
将某个矩阵的行列转换(行号变列号,列号变行号)方法: 将某个矩阵的行列转换(行号变列号,列号变行号)方法: 例如: 矩阵转置后赋给y 在矩阵名后边加单撇号 例如:y=x’ %将x矩阵转置后赋给 将 矩阵转置后赋给
复制和平铺矩阵 函数: 把矩阵a复制 函数 repmat(a,m,n) %把矩阵 复制 把矩阵 复制n*m份,堆叠构成其 份 它矩阵, 它矩阵,大小为 [size(a*1)*m,size(a*2)*n] 例如:a=[1 2 3 4;5 6 7 8] 例如: b=repmat(a,2,1) 压缩矩阵 函数:unique() 函数 例如: 例如:a=[1 2 3 3 3 4 4] a=unique(a) %结果为 结果为a=[1 2 3 4]倾斜于谁,谁就被除
Matlab的数据类型 的数据类型
数值型 双精度( 字节 字节) 双精度(8字节) 单精度 带符合和无符号整型 字符串 逻辑型 结构体 单元 多维矩阵 稀疏矩阵
数值型数据: 数值型数据:
它是最常用的数据类型
建立方法 a=1 % 建立 建立double型数据 ,值为 可转会为其它 型数据a,值为1,可转会为其它 型数据 类型,例如: 类型,例如: b=uint8(a) %将a转换为 转换为uint8类型(无符号整数, 类型( 将 转换为 类型 无符号整数, 8位)赋值到 中,注意执行结果 类型不变 位 赋值到b中 注意执行结果a类型不变 a=uint8(a) %a转化为 转化为uint8类型 转化为 类型 a=double(a) %a转化为双精度型 转化为双精度型 注意:可以用class函数来查看某个变量的类型,例如 函数来查看某个变量的类型, 注意:可以用 函数来查看某个变量的类型 例如class(a)
第2章MATLAB基本语法
第二章 MATLAB基本语法2.1数值、变量和表达式2.1.1数值MATLAB的语句的执行结果可以在屏幕上显示,同时赋值给指定变量,没有指定变量时,赋值给一个特殊的变量ans,数据的显示格式由format命令控制,控制方法如下:short – 5位定点shortE - 5位浮点shortG –5位定点或浮点,系统自动确定显示效果较好的一种long - 15位定点longE - 15位浮点longG - 15位定点或浮点,系统自动确定显示效果较好的一种bank - 元、角、分定点(美制)hex - 16进制rat - 近似有理数+ - 正数、0、负数分别用“+”、空格、“-”表示。
2.1.2常量常量表达形式:-3.2、-.2、3.2、3.2e-3、3-3i、3-3j3.2e-3是科学记数法,规范的复数表达形式是3-3i,如果用j表示虚部,将自动转换为i。
系统预定义了一些常量:pi:圆周率 eps:计算机的最小数 inf:无穷大realmin:最小正实数 realmax:最大正实数 nan:代表不是数i、j : 虚数单位对于系统预定义常量,不得对此重复定义,否则会出问题。
【例2-1】sqrt是MATLAB的内部函数。
当对sqrt重新赋值后,会产生不正常现象。
(1)正常运作情况sqrt(2)ans =1.4142which sqrtsqrt is a built-in function.(2)不正常运作sqrt=[1, 0] %把sqrt赋值成一个两个元素的行向量sqrt =1 0sqrt(2) %这时该指令给出结果是0,而不是正常的平方根值1.4142ans =which sqrt %当用which检查sqrt在哪里时,显示的却是“内存变量”sqrt is a variable.2.1.3 变量命名规则变量的名字必须以字母开头(不能超过31个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号;不能用中文和全角符号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 Matlab 基本语法(一般性操作)§1矩阵和数组的操作Ⅰ——创建 保存 调用概述:矩阵是线性代数的基本运算单元,通常矩阵是含有M 行和N 列数值的矩形结构。
其元素可以是实数或复数,因而可将矩阵分为实数矩阵和复数矩阵。
MATLAB 支持线性代数所定义的全部矩阵运算。
软件的优势在于快捷和轻松的处理整个矩阵。
通过一定的转化方法,可以将一般的数学运算转化成相应矩阵运算来处理。
在MATLAB 中把数据分为标量、矢量、矩阵和列阵。
列阵指多维数组,是一大概念,在列阵中,一维数组是矢量,二维数组即为矩阵。
当然,我们也可杷标量看作仅有一行一列的矩阵,把矢量看作仅有一列或一行的矩阵。
一、知识背景1. n m ⨯ 阶矩阵,记作n m A ⨯或n m ij a ⨯)(如:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡mn m m n n a a a a a a a a a 212222111211 ,为m 行n 列矩阵 2. 数组:可看成是单行或单列矩阵。
3. 同型矩阵:二矩阵行数和列数相同,如n m n m B A ⨯⨯,。
4. 特殊矩阵:见矩阵创建3。
二、矩阵的创建1. 直接输入法:用指令产生数值矩阵矩阵首尾以 [ ] 括起;同一行中元素用逗号“,”或空格隔开;行与行之间必须用分号“;”或按Enter 键分隔。
矩阵元素可以是数字也可以是表达式,表达式中变量必须定义。
例1:创建矩阵:⎥⎦⎤⎢⎣⎡=6 5 43 2 1a>> a=[1,2,3;4,5,6]a =1 2 34 5 6例2:>> x=9,y=pi/6; % 定义x ,y 变量>> A=[3,5,sin(y);cos(y),x^2,7;x/2,5,1] % 产生矩阵AA =3.0000 5.0000 0.50000.8660 81.0000 7.00004.50005.0000 1.0000说明:%作为注释的开始标志,以后的文字不影响计算过程。
练习一:1-1 创建矩阵:⎥⎦⎤⎢⎣⎡=6 4 25 3 1A 1-2 创建矩阵:⎥⎦⎤⎢⎣⎡=sin(y) )cos(os(y) sin(x)x c B ,其中x=π/4,y=π/3。
>> x=pi/4,y=pi/3;x =0.7854>> B=[sin(x),cos(y);cos(x),sin(y)]B =0.7071 0.50000.7071 0.86602. 矩阵编辑器(Matrix Editor ):(1)首先在工作区定义一个变量,可以是一简单矩阵或数字。
(2)单击工具栏的工作区浏览器(work spase browser )。
弹出变量浏览器,显示各变量信息。
或单击View/ work space 弹出变量浏览器,显示各变量信息。
(3)选中所定义变量,左键双击,或单击右键,在点击“open ”,打开矩阵编辑器。
也可左键单击工具按钮,打开矩阵编辑器。
图1-1 矩阵编辑器窗口(4)在相应文本框中,输入行数和列数。
用鼠标点中想要修改的元素,输入数值或表达式。
(5)输入完闭,关闭矩阵编辑器。
* 当把原矩阵扩大维数,系统自动将扩展部分设置为零。
* 矩阵编辑器适于大维数矩阵的建立、修改,扩充和裁剪。
练习二:2-1定义a=1,用矩阵编辑器创建矩阵⎥⎦⎤⎢⎣⎡=6 5 43 2 1a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⇒6 5 4 3 2 1a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⇒0 9 8 7 0 6 5 4 0 3 2 1a ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⇒23 10 5 40 9 8 7 0 6 5 4 0 3 2 1a3. 生成矩阵函数(特殊矩阵函数):例3:>> zeros(2,3)ans =0 0 00 0 0>> B=eye(2,3)B =1 0 00 1 0>> C=magic(3)C =8 1 63 5 74 9 2>> D=cell(2,3)D =[ ] [ ] [ ][ ] [ ] [ ]>> ones(2,3)ans =1 1 11 1 1>> rand(2,3)ans =0.9501 0.6068 0.89130.2311 0.4860 0.7621>> M=[1,2,3;4,5,6;7,8,9]M =1 2 34 5 67 8 9>> Q=diag(M)Q =159>> w=diag(Q)w =1 0 00 5 00 0 9例4:利用diag产生对角阵对角阵是线性代数中经常使用的矩阵,MATLAN有专门产生对角阵的函数diag(M),M是一个矩阵或是一个向量。
>> a=randn(5,5)a =-1.0565 -0.9219 0.5077 -1.0091 1.09501.4151 -2.1707 1.6924 -0.0195 -1.8740-0.8051 -0.0592 0.5913 -0.0482 0.42820.5287 -1.0106 -0.6436 0.0000 0.89560.2193 0.6145 0.3803 -0.3179 0.7310>> d=diag(a)d =-1.0565-2.17070.59130.00000.7310>> D=diag(d)D =-1.0565 0 0 0 00 -2.1707 0 0 00 0 0.5913 0 00 0 0 0.0000 00 0 0 0 0.7310* 请总结各指令生成矩阵特点。
* 当函数diag(M)作用在矩阵上,则取矩阵对角元素产生一个列向量; 当作用在一向量上,则产生一对角阵。
三、矩阵的保存和调用可把需保留的矩阵以文件形式储存起来,以备以后调用。
例5:保存矩阵A 并调用。
>> save mydata1 A %系统将工作空间中的A 变量存入mydata1.mat 文件 >> load mydata1 A %提取mydata1文件A 变量到工作空间保存所有矩阵幷调用矩阵w>> save mydata2 %系统将工作空间中的所有变量存入mydata2.mat 文件 >> load mydata2 w %提取mydata2文件中w 变量到工作空间中* 上面mydata 是给变量文件(随意)起的名子,系统会自动沿设定好的路径以“.mat ”格式储存文件。
四、数组的创建和储存数组是由一组实数或复数构成的长方阵列,可具有不同的维数。
下面把重点放在一维数组,多维数组问题放在后面讲解。
因为一维数组可看成行向量,)1(),1(n m ⨯⨯矩阵,所以有关矩阵的创建、储存和读取方法全可适用。
1. 直接输入法例6:>> a=[pi/4,sin(pi/4),cos(pi/4),tan(pi/4),cot(pi/4)]a =0.7854 0.7071 0.7071 1.0000 1.00002. 用两个冒号算符组成等增量语句以“:”间隔起始值、增量值、终止值。
若增量值省略不写,MATLAB 默认为1。
例7:t=[初值:增量:终值]>> t1=[0:0.2:1] % 增量(步长值)为0.2t1 =0 0.2000 0.4000 0.6000 0.8000 1.0000>> t2=[10:-3:-5] % 增量可为负值t2 =10 7 4 1 -2 -5>> t3=[1:6] % 增量1为默认值,可略t3 =1 2 3 4 5 63. 创建特殊数组指令(等距离分割)(1)线性分割函数linspace(a,b,n)---( 起始值,终止值,元素数目) 例8:>> t4=linspace(0,10,5)t4 =0 2.5000 5.0000 7.5000 10.0000* 在a ,b 间(含a ,b )均匀产生n 个点值,形成n ⨯1阶向量,等差数列。
* n 的默认值为100。
* 常用于绘图中区间的分割。
(2)对数分割函数logspace(a,b,n)——(起始值a 10,终止值b 10,元素数目n )例9:>> t5=logspace(0,4,5)t5 =1 10 100 1000 10000* 在b a 10,10间(含b a 10,10)产生n 个点值,形成n ⨯1阶向量,等比数列。
* n 的默认值为50。
§2. 矩阵和数组的操作Ⅱ--- 修改、结构变换一、对矩阵元素的标识1. 对某个元素的标识(1)用行标和列标标识某个元素,如ij A ——用),(j i A 表示。
i 、j 所用的值必须大于或等于1且小于矩阵的维数,否则失败。
例10:>> A=[1,2,3;4,5,6;7,8,9]A =1 2 34 5 67 8 9>> A(3,2)ans =8(2)用一个指标表示一个元素——把整个矩阵看作很多列矢量组成,自左至右,由第一列、第二列直到最右边一列,想象排成一长列,用一个指标标识元素。
如(3×3)阶矩阵,元素A (3,2)可表示为A (6)。
例11:>> A(6)ans =8(3)对矢量中一元素如i B 可用B(i )表示。
例12:>> B=[1,3,5,7,9,]B =1 3 5 7 9>> B(3)ans =5(4)end 表示最后一个元素,如:A(end,j )表示第j 列最后一个元素。
例13:>> A(end,2)ans =82. 对一行或一列的全部元素的标识——用冒号算符如:A(:,j)表示A的第j列的全部元索。
A(i,:)表示A的第i行的全部元素。
例14:>> A(2,:)ans =4 5 6二、矩阵的修改1. 修改矩阵元素例15:>> a=rand(2,3) % 生成32⨯阶随机矩阵a =0.9501 0.6068 0.89130.2311 0.4860 0.7621>> a(1,2)=2 % 改元素a为212a =0.9501 2.0000 0.8913 % 修改完毕0.2311 0.4860 0.76212. 扩充矩阵例16:把矩阵a扩充为43⨯阶,设a(3,4)=5>> a(3,4)=5a = %其它未设定的扩充元素均赋值为00.9501 2.0000 0.8913 00.2311 0.4860 0.7621 00 0 0 5.0000例17:给a第四行全行赋值>> a(4,:)=[1,2,3,4] %给第四行全行赋值a =0.9501 2.0000 0.8913 00.2311 0.4860 0.7621 00 0 0 5.00001.00002.00003.00004.0000 %“:”冒号代表第四行全部元素3.剪切和拼接矩阵(1)提取元素组成新矩阵例18:>> c=a([1,4],[2,4]) %把A的第一行,第四行和第二列,第四列交点上的元素取出,组成新矩阵cc =2 02 4(2)除去某些元素组成新矩阵例19:>> a([1,3],:)=[] %用空矩阵[ ]除去a的第一、三行全部元素,剩二,四行a =0.2311 0.4860 0.7621 01.00002.00003.00004.0000(3)拼接矩阵例20:>> d=[rand(2),ones(2);eye(2,4)] %二阶随机矩阵和二阶单位矩阵左右拼接,2 对角矩阵进行上下拼接。