- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子信息技术之一 Matlab语言基础
第二章 MATLAB 的数 值计算功能
2.1 变量及其赋值
2.1.1变量 像任何其他计算机语言一样,MATLAB 也是使用变量 来保存信息的。变量由变量名表示,变量的命名应遵 循如下规则: 1.变量名必须以字母开头;由字母、数字和下划线 混合组成;不允许使用空格、标点符号; 2.变量名的字符长度不应超过31个(对于6.x版本); 3. MATLAB严格区分大小写字母,因此,A和a是不同 的变量。 4.关键字(如 if,while 等)不能作为变量名。 MATLAB的固定变量见表2 - 1
永久变量
• eps — 容差变量,定义为1.0到最近浮点数的
距离,在 pc机上= 2-52 • pi — 圆周率的近似值3.1415926 • inf或Inf — 表示正无大,定义为1/0 • NaN — 非数,它产生于0× ,0/0,/ 等 运算
如果用户给永久变量赋值,原始默认值 • i,j — 虚数单位
2.1.6 复数表示
MATLAB的每一个元素都可以是复数,实数是复数 的特例。复数的虚部用i或j表示。
对复数有两种赋值方法: 1.将其元素逐个赋予复数 如 z=[1+2i,3+4i;5+6i,7+8i] 2.将其实部和虚部矩阵分别赋值 如z=[1,3;5,7]+[2,4;6,8]*i (*号不能省略) 若在前面程序中曾经给i或j赋过值,则i或j就不再是虚 数单位,此时应把赋值的i或j清除再执行虚数赋值语 句。
save filename a b c 把a、b、c三个变量保存在文件名为 myfile.mat的文件中。 save filename a b c –append 把a、b、c三个变量添加到 文件名为myfile.mat的文件中。
在MATLAB中,第二次再用save命令时,如果仍用默认 文件名,则原来的数据就被冲掉 也可利用菜单保存变量 【File】Save Workspace As… 菜单命令会打开一个标准的文件对话框,与windows 操作基本一样,此时会保存工作空间里所有的变量, 不能选择。
4、利用M文件中的函数生成矩阵
2.1.4 向量的生成
在MATLAB中数组可以看成是行向量,即只有一行或 一列的矩阵。前面介绍的所有矩阵的建立和保存的方 法,对向量同样适用,这里不再重复。同时,介绍 matlab中创建向量的特殊命令。 1.利用冒号“:”创建等差数列: t=[初值:增量:终值] 其中 “增量”是可以省略的,省略时,默认的增量步 长为1。增量也可以是负值,但此时,初值应该大于终 值。 例如:x=1:5; y=0:pi/4:2*pi; z=6:-1:0;
例
>>a=1;b=2;c=3; >>clear a,b;c c= 3 >>b b= 2 >>a ??? Undefined function or variable ‗a‘. ※用clear命令时,系统不会给出确认提示,一旦 删除将不能恢复。
A(2,3)或A(12)
A([1,3], [1,4])
例
A= -4 -2 0 2 4 -3 -1 1 3 5 >>A(3,3)=10 A= -4 -2 0 2 4 -3 -1 1 3 5 0 0 10 0 0
>>A(2,3)=10 A= -4 -2 0 2 4 -3 -1 10 3 5
给全行、全列赋值,可用冒号“:”
例:a(5,:)=[5,4,3];
• ans — 对于未赋值运算结果,自动赋给ans
丢失,直至清除变量或重启Matlab
2.1.2、 MATLAB 的语句
1.百分号(注释符)% 与其它程序语言一样,为了方便其他人及日 后自己对程序的阅读,增加程序的可读性,需要 在MATLAB文件中加入注释。注释行必须以%号 开始,执行文件时,%号后面的语句不予执行。 2.逗号和分号 在赋值语句中,逗号(空格)用在同一行中各 元素之间,分号用在行与行之间。多条语句放在一 行,用逗号分开表示要求显示结果,由分号分开表 示不要求显示结果。
例 找出数组A=
-4 -2 0 2 4 中所有绝对值大于3的元素 -3 -1 1 3 5
A=[-4,-2,0,2,4;-3,-1,1,3,5]; %创建矩阵A
L=abs(A)>3 islogical(L) X=A(L)
%建立矩阵L
%判断L中是否有逻辑1
%指出A中绝对值大于3的元素
其它赋值方式
用户可以利用下标给元素某单独赋值。如果赋值元素的 下标超出了原来矩阵的大小,矩阵的行列会自动扩展, 跳空的元素被自动赋值0。 ※这种自动扩展维数的功能只适用于赋值语句
magic(n) 魔方矩阵,其特点是元素由1到n2的自然数 组成,每行、每列及两对角线上的元素之和均等于 (n3+n)/2
3、从外部数据文件调入矩阵:
在MATLAB中,还可以从外部文件读入数据生成矩阵。 这些文件可以是存储Matlab已经生成的矩阵二进制文 件,也可以是包含数值数据的文本文件。在文本文件 中,数据必须排成一个矩阵表,数据之间用用空格分 隔,每行包含矩阵的一行。保存文件时,文件名后缀 为.dat 例如:有文本文件mydata.txt,将后缀改为.dat,在命 令窗口输入: load mydata.dat %把文件中的内容调入到工作空间中 mydata %显示变量mydata
矩阵里的元素也可以用表达式代替,例如输入
X=[-1.3,sqrt(3),(1+2+3)/5*4] 显示结果 X= 矩阵里的元素还可以是 复数,复数用内定变量 i,j表示
-1.3000 1.7321 4.8000
2、由函数创建和修改矩阵:
MATLAB提供用于创建某些特殊矩阵的函数
A=[ ] 创建空矩阵
1.请指出如下5个变量名中,哪些是合法的? abcd-2 xyz_3 3chan a变量 ABCDefgh 2.指令clear, clc各有什么用处?
3.创建一个6阶的魔方矩阵A 把第3行第4列的元素赋给B 把第2行、第4行的所有元素赋给C
4.矩阵A=[2 4 5 9; -4 6 3 -7],找出A中大于3 的元素赋 值给B 5.使用两种方法产生[0,3*pi]等间隔分布10个点的向 量
3.续行标志(…) 当一条语句或矩阵太长,一行显示不下时,可用 续行标志…,另起一行继续完成该条语句的书写。
4.中断键 在命令的执行过程中,可以随时按下CTRL+C 键中断MATLAB的运行。
2.1.3 矩阵及其元素的赋值
矩阵是 MATLAB 进行数据处理的基本单元,MATLAB 的大部分运算都是在矩阵的意义上进行的,矩阵运算也 是 MATLAB 最重要的运算。赋值就是把数赋予代表常 量或变量的标识符。 MATLAB中的变量或常量都代表 矩阵,标量应看作是1×1阶的矩阵。 矩阵的创建可以通过以下几种形式: (1)直接列出元素形式; (2)通过语句和函数产生; (3)从外部文件装入; (4)建立在M文件中。
load是save的逆过程,它把磁盘上存储的mat数据取回到 MATLAB的工作空间中。默认的文件名也是matlab.mat。 在不用默认文件时,命令格式与save相似。 load Loading from: matlab.mat 当要提取文件中某些变量时,文件名不能省略。 例如:load A 提取文件matlab中的A变量 ??? Error using ==> load Unable to read file A: No such file or directory.
1、直接输入矩阵:
对于较小的简单矩阵,从键盘上直接输入矩阵时最常 用、最方便和最好的数值矩阵创建方法。创建矩阵的 基本原则: •矩阵的所有元素必须放在方括号“[ ]‖内; •矩阵元素之间必须用逗号“,”或空格隔开; •矩阵行与行之间用分号“;”或回车符隔开; •矩阵元素可以是数字或任何不含未定义变量的表达式。 例如输入语句 显示的结果为: a=[1 2 3;4 5 6;7 8 9] a= 1 2 3 4 5 6 7 8 9
注意空矩阵与零矩阵的差别
zeros(m,n) 元素全为零的mn阶矩阵 ones(m,n) 元素全为 1 的mn矩阵 rand(m,n) 元素为在[0,1]上均匀分布的mn随机矩阵 randn(m,n) 元素为正态分布的mn随机矩阵 以上命令可以只有一个参数,生成的是方阵 eye(n) 单位矩阵, nn阶的方阵
6 4 1 2 7 5
A(1 : 5,5) A(:, 5) A( 21 : 25)
A
4 8 7
10 2 5
1 9 7
A(4 : 5,2 : 3)或 A([ 4,5], [2,3])
0
23
3
13
4wenku.baidu.com
13
5
0
4
3
在MATLAB的内部数据储存结构中,每一个矩阵都是 一个以列为主的向量,因此对于矩阵内各元素的存 取是按列来进行总排。 冒号“:”表示“全部”。
全下标和单下标的转换:
sub2ind(size(A),m,n) 将矩阵A的第m行第n列的下标 转换成单下标; [a,b]=ind2sub(size(A),p) 将矩阵A中编号为p的单下标 转换成全下标; 3.―逻辑1‖标志 在实际运用中,经常会碰到诸如寻找矩阵中所有大于某 值的问题。此时“逻辑1‖标志就特别得心应手。 X=A(L) 其中L是与A维数相同的逻辑值数组,通过L中,逻辑1 所在的位置,指示A元素的位置。
2.1.5 矩阵的下标
创建了矩阵之后,若要调用矩阵里的元素,就要了解 单个元素标志和寻访的3种方式: 1.―全下标”标志 即指出“第几行第几列”的元素。优点是:几何概念 清楚,引述简单。 “全下标”标志由行下标和列下标 组成,例如:A(3,5)标志矩阵A的第3行第5列元素。 2.―单下标”标志 单下标是只用一个下标来指明元素在数组中的位置。 matlab在存储矩阵时,将所有元素按一维进行编号,即 把矩阵所有列,按照先左后右的次序排成一维长列,然 后按照自上而下对元素位置进行编号。
2.2 MATLAB的基本管理命令
2.2.1 save与load命令(变量的存储与下载) 利用save和load命令实现数据文件存取是所有MATLAB 版本采用的基本操作方法。具体格式有:
save filename 把全部内存变量保存为filename.mat文件。 若文件名省略,默认文件名为matlab。
把a的第2,4行及第1,3列交点上的元素取出, 构成一个新的矩阵。 例:b=a([2,4],[1,3]);
利用空矩阵“[ ]‖,可抽去a中的任意行 例:a([2,4],:)=[ ];
―空矩阵”是指没有元素的矩阵,不是零矩阵。对任何 一个矩阵赋值[ ],就是使它的元素都消失。
例
利用单下标创建矩阵
>>A=zeros(2,5); %创建25的零矩阵 >>A(:)=-4:5 %修改矩阵给编号从1~10的 元素分别赋值, 大小从-4按步长1一直增加到5 A= -4 -2 0 2 4 -3 -1 1 3 5
2.利用函数linspace和logspace创建向量: linspace 函数,创建指定长度的等距向量 t=linspace(初值d1,终值d2,点数n) 意义为:在线性空间上,行矢量的值从d1到d2,数 据个数n,缺省时n为100。 例:k=linspace(-pi,pi,4) logspace 函数,创建对数等距的向量 y=logspace(d1,d2) y=logspace(d1,d2,N) 意义为:从10的d1次幂到d2次幂之间按等比级数等分 为N个点,N缺省时,默认为50。
2.2.2 clear命令(变量的删除)
Matlab中内存变量的删除可以通过在指令窗口中运行 clear来进行。clear操作通常有两种方式: clear 清除当前工作空间中的全部变量 clear a b c 清除当前工作空间中的变量a、b、c 被清除的变量之间只能用空格,不能用逗号或分号。 因为在一条指令中,逗号和分号都表示该指令结束, 不同的是逗号结束的指令要显示运算结果,而分号结 束的指令不显示执行结果。
2.2.3 who和whos命令(变量信息的查询)
在调试程序的时候,往往需要检查工作空间中的变量 及其阶数。这时需要用到who和whos命令。who命令 用于查看工作空间都有哪些变量名;whos命令用于了 解变量的具体细节。调用方式: who(whos) 查看工作空间里所有的变量 who(whos) a b 查看工作空间里的变量a和b 被查看的变量之间只能用空格,不能用逗号或分号。