第2章 MATLAB语言程序设计
matlab使用教程2-2
第2章 Matlab语言程序设计 章 语言程序设计
写二进制文件: 用fwrite写二进制文件: 写二进制文件 COUNT=fwrite(Fid, A, precision) 例: Fid=fopen(‘test.dat’, ‘w’); cnt=fwrite(Fid, A, ‘float’) fclose(Fid); 读取ASCII数据文件: 数据文件: 用fscanf读取 读取 数据文件 [A, COUNT]=fscanf(Fid, format, size) format用以控制读取的数据格式,由%加上格式符组成, 用以控制读取的数据格式, 加上格式符组成, 用以控制读取的数据格式 常见的格式符有: 常见的格式符有:d, i, o,u, x, e, f, s, c。 。 例:fscanf(Fid, ‘%s’); fscant(Fid, ‘%6.2f’); fscanf(Fid, “%5d’);
第2章 Matlab语言程序设计 章 语言程序设计
d) 其它与流程控制有关的语句
if
if
break语句循环结构 语句循环结构 语句
continue 语句循环结构 语句循环结构
第2章 Matlab语言程序设计 章 语言程序设计
pause 指令使程序运行停止,等待用户按任意键继续; 指令使程序运行停止 等待用户按任意键继续; 使程序运行停止, input 指令提示用户从键盘输入数值、字符串或表达 指令提示用户从键盘输入数值 提示用户从键盘输入数值、 并接受输入; 式,并接受输入; disp指令在屏幕上显示字符串; 指令在屏幕上显示字符串 指令在屏幕上显示字符串 echo on指令显示其后所有执行文件的指令; 指令显示其后所有执行文件的指令 指令显示其后所有执行文件的指令; echo off指令关闭其后所有执行文件的指令显示。 指令关闭其后所有执行文件的指令显示 指令关闭其后所有执行文件的指令显示。
matlab第2章
2. MATLAB变量的显示
任何MATLAB语句的执行结果都可以在屏幕上显示,同时赋值
给指定的变量。没有指定变量பைடு நூலகம்,赋值给默认变量名ans,数据
的显示格式由format命令控制。
Format只影响结果的显示,不影响计算与存储。
MATLAB以双字长浮点数(双精度)执行所有的运算。
22
2.4.1.2 字符串
a在前面未赋值时,非法命令。
19
1. 变量命名规则 (1)变量名区分字母的大小写,A与a表示不同的变量。 (2)变量名必须以英文字母开头,之后可以使用字母、数字、下画线, 但不能使用空格和标点符号。 (3)变量名长度不能超过31个字符,超过部分将被忽略
(4)某些常量也可以作为变量使用。
如 i 在MATLAB中表示虚数单位,但也可以作为变量使用。
5
3.Debug主菜单项 (1)Open M-Files when Debugging:调试时打开M文件 (2)Step:单步调试程序
(3)Step In:单步调试进入子程序
(4)Step Out:单步调试从子程序跳出 (5)Continue:程序执行到下一断点 (6)Clear Breakpoints in All Files:清除所有打开文件中的断点 (7)Stop if Errors/Warnings:在程序出错或报警处停止往下执行
8
5.Window主菜单项 (1)Close All documents:关闭所有文档 (2)0 Command Window:选定命令窗口为当前活动窗口 (3)1 Command History:选定历史命令窗口为当前活动窗口 (4)2 Current Directory:选定当前路径窗口为当前活动窗口
第2章 MATLAB的基础知识
a=[1 2 1;2 2 1;2 1 2]; b=[1;2;3]; a/b %矩阵右除
运行程序,得到结果:
??? Error using ==> mrdivide Matrix dimensions must agree.
重新输入语句
a\b
%矩阵左除 ans = 1.0000 -0.3333 0.6667
运行程序,得到结果:
c= 0 0 1 1 1 0
说明 对于复数运算,“= =”与“~ =”运算,既比较实部, 又比较虚部。而其他运算仅比较实部。关系运算同样也可用于 常量与矩阵的比较,在这种情况下,该常量与矩阵的每一个元 素进行比较,其结果是一个与矩阵同维数的0、1矩阵。
逻辑操作符
逻辑操作符 说 明 相对应函数
-0.1667 0 0
(3)矩阵特征值运算
矩阵条件数cond( ) 矩阵的秩rank() 矩阵特征值eig ( )
矩阵范数norm( ) 矩阵的迹trace ( ) 矩阵奇异值svd ( )
例2-7 分别计算矩阵a的有关特征参数。输入以下 MATLAB语句
a=[1 2 3;4 5 6;7 8 0] [cond(a),norm(a),rank(a)]
2.MATLAB工作环境
图形窗口“Figure”
M文件窗口
3.MATLAB的M文件
所谓M文件,就是用户把要实现的命令写在一个 以.m为扩展名的文件中
M文件有两种格式(统称为M文件) 函数式M文件 程序式M文件 程序式M文件用于把很多需要在命令窗口输入的命 令放在一起,就是命令的简单叠加 函数式M文件用于把重复的程序段封装成函数供用 户调用。
&
|
逻辑与
逻辑或
and(a,b)
第二章_MATLAB语言基础_第1节-赵亦欣
第2章 MATLAB语言基础
【例2.8】 表达式语句。 >> sqrt(2)*exp(-1*3) ans = 0.0704 >> 8*3+6/4 ans = 25.5000
表达式语句 运算结果 执行下一条 表达式语句 后,结果将 被刷新
第2章 MATLAB语言基础
第2章 MATLAB语言基础
2.1 基础知识
2.1.3 变量和语句
变量名区分字母大小写;不超过31个字 符,31个以后的字符将被忽略,字符之间不 能有空格;必须以字母打头,之后可以是任意 字母、数字或下画线;不允许使用标点符号。
第2章 MATLAB语言基础
MATLAB的一条命令行就是一条语句,
格式与书写数学表达式相近。 在命令窗输入语句,该语句可被解释运 行并给出运行结果。
第2章 MATLAB语言基础
(1)永久变量不能用clear命令清除; (2)永久变量不响应Who, Whos命令; (3)永久变量可以等于表2-1中的值; (4)被赋值的永久变量,在clear命令清除内 存或命令窗关闭再打开后,将被设为默认值;
(5)允许被0除。
第2章 MATLAB语言基础
2.1 基础知识
第2章 MATLAB语言基础
【例2.11】复数矩阵的生成及运算。 >> A=[1 2; 3 4]+[5 6; 7 8]*I % 复数矩阵的输入。 分别由实部矩阵和虚部矩阵组合而成 A= 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i >> B=[1+2i 3+4i; 5+6i 7+8i] % 复数矩阵的输入。 直接由复数构成矩阵 B= 1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i >> C=A*B % 复数矩阵相乘。 复数矩阵乘法, 1.0e+002表 示标量100,矩阵运算中,存在直 C= 角坐标和极坐标之间的转换 1.0e+002 * -0.3500 + 0.4900i -0.5100 + 0.7700i -0.3900 + 0.7700i -0.5500 + 1.2100i
Matlab第2章
程序控制结构
3.break语句和continue语句 break语句用于终止循环的执行。当在循环体内执行到该语 句时,程序将跳出循环,继续执行循环语句的下一语句。 continue语句控制跳过循环体中的某些语句。当在循环体内 执行到该语句时,程序将跳过循环体中所有剩下的语句,继 续下一次循环。 【例2.11】输入两个整数,求它们的最小公倍数。 程序如下: x=input('请输入第一个数:'); y=input('请输入第二个数:'); z=max(x,y); while or(rem(z,x)~=0,rem(z,y)~=0) z=z+1; end disp([num2str(x),'和',num2str(y),'的最小公倍数是: ',num2str(z)])
3.try语句 try语句是一种试探性执行语句,为开发人员提供了一种捕获错误的机制,其语 句格式为 try 语句块1 catch 语句块2 end try语句先试探性执行语句块1,如果语句块1在执行过程中出现错误,则将错误 信息赋给保留的lasterr变量,并转去执行语句块2。 【例2.6】矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘 积,若出错,则自动转去求两矩阵的点乘。 A=input('请输入A矩阵:'); B=input('请输入B矩阵:'); lasterr(''); %清除原有的错误信息 try C=A*B; catch C=A.*B; end C disp(lasterr) %显示出错原因
2.2 程序控制结构
3.程序的暂停 当程序运行时,为了查看程序的中间结果或者观看输出的图 形,有时需要暂停程序的执行。这时可以使用pause函数, 其调用格式为 pause(延迟秒数) 如果省略延迟时间,则将暂停程序,直到用户按任一键后程 序继续执行。 若要强行中止程序的运行可使用Ctrl+C组合键。
第二章 MATLAB语言的使用与程序设计
命令历史窗口:显示已执行过的命令。在窗口的某一命令上单击鼠标 右键,会弹出菜单,对所选命令进行操作。
当前路径窗口:提供了当前路径文件的操作
演示
MATLAB的搜索路径
搜索路径是一系列文件路径的组合。当程序和命令执行 时, MATLAB 在搜索路径中查找程序或命令运行所需的函数文 件。 MATLAB 在执行搜索时按照规定的顺序。如:在命令窗口 中输入example,MATLAB将按下面的步骤来处理: 1.检查example是不是一个变量,如果是,则返回变量的值;
本章重点:
MATLAB工作环境掌握 主要文件类型及常用命令
矩阵、变量、表达式、常用函数
MATLAB语言的基本语句结构及程序调试方法
一、MATLAB系统简介
MATLAB的主要组成部分
1.MATLAB语言体系:MATLAB 语言是一种以矩阵运算为基础的高级 语言,具有条件控制、函数调用、数据结构、输入输出及面向对象等 程序语言特征,可以进行程序设计。
6 )对矩阵的特殊操作: rot90(a) 将 a 矩阵旋转 90 度、 fliplr(a) 将 a 矩阵的列反序、 flipud(a) 将 a 矩阵的行反序、diag(a) 将向量 a 构 成对角阵( 元素放在主对角线上 )---a 为向量、triu(a) 提取矩阵的上 三角部分、reshape改变矩阵的阶数,按列的顺序重排。
逻辑运算符: 在MATLAB中,逻辑运算符有3种。 & 逻辑与。当运算双方对应元素都为非零时; 结果为1,否则,结果为0。
| 逻辑或。当运算双方对应元素有一个为非零 时;结果为1,否则,结果为0。
~ 结果为0。 逻辑非。当元素的值为 0 时,结果为 1 ,否则,
例: a=[1 0 3;0 –1 6] , b=[-1 0 0;0 5 0.3] ,计算两矩
MATLAB21
3. 矩阵元素的删除
删除操作就是简单地将其赋值为空矩阵(用[]表示)。
4. 生成大矩阵
在MATLAB中,可以通过方括号“[]”实现将小矩阵联 接起来生成一个较大的矩阵。
5. 矩阵的翻转
triu(X) 产生X矩阵的上三角矩阵,其余元素补0。 tril(X) 产生X矩阵的下三角矩阵,其余元素补0。 flipud(X) 使矩阵X沿水平轴上下翻转。 fliplr(X) 使矩阵X沿垂直轴左右翻转。 flipdim(X,dim) 使 矩 阵 X 沿 特 定 轴 翻 转 。 dim=1 , 按 行 维 翻 转 ; dim=2,按列维翻转。 rot90(X) 使矩阵X逆时针旋转900
2. 子矩阵块的产生 (1)子矩阵是从对应矩阵中取出一部分元素构 成,用全下标和单下标方式取子矩阵。 如a([1 3],[2 3]) ,a([1 3;2 6]) 等。 (2)利用冒号表达式获得子矩阵 ①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列中的所有元素。
例 2-1 计算表达式的值,并将结果赋给变量x, 计算表达式的值,并将结果赋给变量x 然后显示出结果。 然后显示出结果。 MATLAB命令窗口输入命令 命令窗口输入命令: 在MATLAB命令窗口输入命令:
>>x=(5+cos(47*pi/180))/(1+sqrt(7)-2*i) x=(5+cos(47*pi/180))/(1+sqrt(7
Matlab_2_3
3.程序的暂停 . 暂停程序的执行可以使用pause函数, 函数, 暂停程序的执行可以使用 函数 其调用格式为: 其调用格式为: pause(延迟秒数 延迟秒数) 延迟秒数 如果省略延迟时间,直接使用pause, 如果省略延迟时间,直接使用 , 则将暂停程序, 则将暂停程序,直到用户按任一键后 程序继续执行。 程序继续执行。 若要强行中止程序的运行可使用 Ctrl+C命令。 命令。 命令
计算分段函数的值。 例2-4 计算分段函数的值。 程序如下: 程序如下: x=input('请输入 的值 请输入x的值 请输入 的值:'); if x<=0 y= (x+sqrt(pi))/exp(2); else y=log(x+sqrt(1+x*x))/2; end y
Байду номын сангаас
(3) 多分支 语句: 多分支if语句 语句: if 条件 条件1 语句组1 语句组 elseif 条件 条件2 语句组2 语句组 …… elseif 条件 条件m 语句组m 语句组 else 语句组n 语句组 end 语句用于实现多分支选择结构。 语句用于实现多分支选择结构。
分别建立命令文件和函数文件, 例2-1 分别建立命令文件和函数文件,将华 氏温度f转换为摄氏温度 转换为摄氏温度c。 氏温度 转换为摄氏温度 。 程序1: 程序 : 首先建立命令文件并以文件名f2c.m存盘。 存盘。 首先建立命令文件并以文件名 存盘 clear; %清除工作空间中的变量 清除工作空间中的变量 f=input('Input Fahrenheit temperature:'); : c=5*(f-32)/9 然后在MATLAB的命令窗口中输入 ,将会 的命令窗口中输入f2c, 然后在 的命令窗口中输入 执行该命令文件,执行情况为: 执行该命令文件,执行情况为: Input Fahrenheit temperature:73 : c= 22.7778
第2章_MATLAB的基本操作
浮点数包括单精度(4个字节)和双精度(8个字 节),默认为双精度。
single :将其它类型的数据转换成单精度浮点数。 double :将其它类型的数据转换成双精度浮点数。
浮点数与其它类型数据运算表
operand single double int/uint char logical X single single single single single double single double int/uint double double
MATLAB数据类型
例:
MATLAB数据类型
细胞变量的定义
可以通过以下两种方式定义一个细胞变量:
用赋值语句直接定义; 由 cell 函数预先分配存储空间,然后对细
胞的每个元素逐个赋值。
MATLAB数据类型
MATLAB数据类型
细胞变量可以嵌套定义
MATLAB数据类型
细胞变量的元素的引用
MATLAB数据类型
str2num:将字符数组转换为
数值数组
abs,double,char按照 ASCII码 转换; num2str,int2str,mat2str,str2num 直接转换。
MATLAB数据类型
字符串的连接
水平连接:strcat 或 中括号中用逗号连接
在中括号中直接水平连 接,结果中包括原字符 串结尾处的空格。 用 strcat 连接,结果 中忽略原字符串结尾处 的空格。
把数字直接转换为字符 串,每个数字为一个独 立的字符串。
把数字取整后转换为字 符串,注意和 num2str 的区别。
把矩阵转换为一个字符 串,方括号、分号和空 格都是其元素。
MATLAB数据类型
matlab基本语句
第2章M ATLAB程序设计MATLAB语言为解释型程序设计语言。
在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。
由于 MATLAB开始是用FORTRAN语言编写、后来用 C语言重写的,故其既有FORTRAN的特征,又在许多语言规则方面与C语言相同。
2.1 顺序结构语句在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。
2.1.1 表达式语句格式:表达式,%显示表达式值表达式;%不显示表达式值表达式%显示表达式值如:x + y,sin(x);–5最后的表达式值暂保存在变量ans中。
2.1.2 赋值语句格式:v =表达式,%结果送v并显示v v =表达式;%结果送v不显示v v =表达式%结果送v并显示v 2.1.3 空语句格式:,;2.1.4 输入语句1、input语句(实际上是函数)格式1:input(提示字符串)功能:显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式格式2:input(提示字符串,'s')功能:显示提示字符串,并把输入视为字符串2、yesinput语句格式:yesinput(提示字符串,缺省值,值范围)功能:显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B并等待用户重新输入。
如:t=yesinput('指定线的颜色',…'red','red|blue|green')运行结果如下:指定线的颜色(red):yellow %不在值内指定线的颜色(red):blue %重输t =bluex=yesinput('输入元素个数',10,[1,20])运行结果如下:输入元素个数(10):x =103、Keyboard语句格式:Keyboard功能:暂停M-文件的执行,并等待用户从键盘输入命令以查看或改变变量的值,直到输入return命令而返回相应的M-文件继续执行。
《控制系统计算机辅助设计MATLAB语言与应用第2版》薛定宇_课后习题答案
【17】
(1)z=xy
>>[x,y]=meshgrid(-3:0.01:3,-3:0.01:3);
z=x.*y;
mesh(x,y,z);
>> contour3(x,y,z,50);
(1)z=sin(xy)
>> [x,y]=meshgrid(-3:0.01:3,-3:0.01:3);
【2】
相应的MATLAB命令:B=A(2:2:end,:)
>>A=magic(8)
A=
642361606757
955541213 515016
174746 202143 4224
4026273736 303133
323435 292838 3925
4123224445191848
491514 5253 11 10 56
【10】
function y=fib(k)
if nargin~=1,error('出错:输入变量个数过多,输入变量个数只允许为1!');endﻭif nargout>1,error('出错:输出变量个数过多!');end
if k<=0,error('出错:输入序列应为正整数!');endﻭifk==1|k==2,y=1;ﻭelsey=fib(k-1)+fib(k-2);endﻭend
858 5954 62 631
>>B=A(2:2:end,:)
B =
955 541213515016
40262737 36303133
41232244451918 48
858 5954 62631
Matlab程序设计第2章矩阵及其运算
2.2.2 创建二维数组 方法2:用函数生成特殊矩阵
函数 zeros (全零阵) 格式 B = zeros(n) B = zeros(m,n) 函数 ones (全1阵) 格式 B = ones(n) B = ones(m,n) 函数 eye(单位矩阵) 格式 B = eye(n) B = eye(m,n) %生成n×n全零阵 %生成m×n全零阵
2.2.4二维数组的寻访与赋值
判断数组维数和大小 1) 判断数组维数的指令:ndims 2) 判断数组大小的指令:size 例如:上例中数组A的维数和大小分别为
>> An=ndims(A), As=size(A) An = 2 As = 3 3
表示数组A大小的行数组的长度 (As的长度) 等于数组A的 维数 (An),length(As)=An 数组A的长度指最长维的长度:length(A)=max(As)。
注意: 1) 子数组寻访取决于 x ( index )中的下标index。 2) 下标 index 可以是单个数值或数组,但是 index 的元素取 值必须在 [ 1 , end ] 的范围内。end 为数组最大下标。 3) 子数组赋值时,注意被赋值的子数组长度与送入的数组长 度一致。
2.2.4二维数组的寻访与赋值
%生成n×n全1阵 %生成m×n全1阵 %生成n×n单位阵 %生成m×n单位阵
2.2.2 创建二维数组 方法2:用函数生成特殊矩阵
函数 randn 格式 y = randn(n) y = randn(m,n) %生成n×n正态分布随机矩阵 %生成m×n正态分布随机矩阵
产生均值为0.6,方差为0.1的4阶矩阵 >> mu=0.6; sigma=0.1; >> x=mu+sqrt(sigma)*randn(4) x= 0.8311 0.7799 0.1335 1.0565 0.7827 0.5192 0.5260 0.4890 0.6127 0.4806 0.6375 0.7971 0.8141 0.5064 0.6996 0.8527
第2章 MATLAB语言程序设计实例解析
【例2-6】switch语句实例 (原题见书本【例2-40】)。
• • • • • • • • • • • • • • • • • 解:首先我们要提取出开关表达式,这里若直接选用price作为开关表达式,则表达式i 则不好表示,因为price的取值理论上是无穷的,考虑到将price化为整数,这样图2-9中 的表达式i也就不难表示了。下面给出具体的程序: price=input('请输入商品价格:'); switch fix(price) case num2cell(0:199) % 价格小于200 rate=0; case num2cell(200:499) % 价格大于等于200但小于500 rate=3/100; case num2cell(500:999) % 价格大于等于500但小于1000 rate=5/100; case num2cell(1000:2499) % 价格大于等于1000但小于2500 rate=8/100; case num2cell(2500:4999) % 价格大于等于2500但小于5000 rate=10/100; otherwise % 价格大于等于5000 运行结果: rate=14/100; 请输入商品价格:1225 end sale_price =1127 sale_price=price*(1-rate) % 输出商品实际销售价格
【例2-1】隐函数的求导。
• 对于隐函数求偏导问题时,diff()函数并不能直接用于求解。考虑到隐 函数偏导数求解的一般方法:假设隐函数的数学表达式为
f ( x1 , x2 ,L , xn ) = 0
• 则可以通过隐函数求出自变量之间的偏导数。具体可以用下面的公式
∂xi • 求出 : ∂x j
∂ f ( x1 , x2 ,L , xn ) ∂x ∂xi =− j ∂ ∂x j f ( x1 , x2 ,L , xn ) ∂xi
MATLAB
>> disp (b)
第2章 MATLAB编程基础
例4.3 求一元二次方程ax2 +bx+c=0的根。
程序如下:
a=input('a=?');
b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a), (-b-sqrt(d))/(2*a)]
第2章 MATLAB编程基础
作业
作业上交格式:所有程序放在一个文件夹下, 文件夹压缩后命名格式:班级+学号+姓名(如:12 电气X1+120514503+孙大贺)发送到
21420322@
第2章 MATLAB编程基础
1、用MATLAB语言实现下面的分段函数:
ቤተ መጻሕፍቲ ባይዱ 第2章 MATLAB编程基础
第2章 MATLAB编程基础
例4.11 矩阵乘法运算要求两矩阵的维数相容,否则会 出错。先求两矩阵的乘积,若出错,则自动转去求 两矩阵的点乘。 A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因
(3)命令按钮操作:单击MATLAB命令窗口工具栏上的
“新建”命令按钮。 2. 编辑已有的M文件
第2章 MATLAB编程基础
例4.1 建立一个命令文件将变量a,b的值互换,然后运行 该命令文件。 首先建立命令文件并以文件名exch.m存盘: clear all; a=1:10; b=[11,12,13,14;15,16,17,18]; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中输入exch,将会执行该 命令文件。 >>exch
02第二章Matlab语言基础-Matlab教程
MATLA于分隔某一行的元素,分号用于区分不同的行. 除了分号,在输入矩 阵时,按Enter键也表示开始一新行. 输入矩阵时,严格要求所有行有相同的列 例m=[1 2 3 4 ;5 6 7 8;9 10 11 12] p=[1 1 1 1 2222 3 3 3 3] 特殊矩阵的建立: a=[ ] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零. b=zeros(m,n) 产生一个m行、n列的零矩阵 c=ones(m,n) 产生一个m行、n列的元素全为1的矩阵 d=eye(m,n) 产生一个m行、n列的元素的单位矩阵 e=randn(m,n) 产生一个m行、n列正态分布随机矩阵
3、数组的方向 前面例子中的数组都是一行数列,是行方向分布的 称之为行向量 数组也可以是列向 行向量. 前面例子中的数组都是一行数列,是行方向分布的. 称之为行向量 数组也可以是列向 量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示. 它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示 产生列向量有两种方法: 产生列向量有两种方法: 直接产生 例 转置产生 例 c=[1;2;3;4] ; ; ; b=[1 2 3 4]; c=b’
Matlab语言基础 Matlab语言基础
1)启动与退出
双击matlab图标,进入matlab命令窗口(command window) 双击matlab图标,进入matlab命令窗口(command window),即可 输入命令语句,开始运算,或从开始菜单的程序中单击matlab进入。 输入命令语句,开始运算,或从开始菜单的程序中单击matlab进入。 单击file菜单中的Exit,或在命令窗口输入Exit并回车即可退出。 单击file菜单中的Exit,或在命令窗口输入Exit并回车即可退出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、多项式及其运算
1、多项式的构造 MATLAB中构造多项式主要通过函数poly2sym()和poly2str()实现,这两个函数的 调用格式如下: poly2sym(C,'V') poly2str(C,'V') 其中,C为多项式系数向量,按降幂排列,V为指定的变量,对于poly2sym()函数, V的默认值为x,而对于poly2str()函数V必须指定。 2、多项式的基本运算 多项式的基本运算包括加(+)、减(-)、乘(conv)、除(deconv)、微分(polyder)、积 分(polyint)、估值(polyval)和求根(roots)。
MATLAB MATLAB提供了以下几种方法来定义一个字符串: ①直接用单引号赋值; ②利用char()函数结合ASCII码来生成字符串(因为字符串中的字符 是以ASCII码存储的,所以大小写是有区别的,可以用double()函数 或abs()函数查看一个字符串的ASCII码); ③利用字符数组生成字符串。例如:用户可以在命令窗口中输入如下语句: s1='I love matlab' % 方式1 s2=char([73 32 108 111 118 101 32 109 97 116 108 97 98]) % 方式2 s3=['I',' ','l','o','v','e',' ','m','a','t','l','a','b'] % 方式3
五、元胞与结构体型数据
1、元胞数组
用户可以使用以下两种方法来建立一个元胞数组。①用赋值语句直接定 义;②由cell()函数预先分配存储空间,然后对细胞的每个元素逐个赋值。 元胞数组中元素一般可以用A{m,n}或A(m,n)这两种方式来调用,它们的 不同之处在于:A{m,n}得到的结果的类型为元素自身的类型,而A(m,n) 的数据类型为元胞数组类型。
六、不同数据类型之间的转化
MATLAB提供了丰富的函数来实现常用数据类型间的转换,具体见下图。
ASCII码 符号表达式
ch ar do ub le
字符串
sym r cha S2N
数值
str N2S str uc l t cel ch r ar cha cell2struct
元胞数组 结构数组
数值型符号结果 vpa e ubl do vpa sym do ub 符号常数 le
Fourier级数展开 给定周期函数f ( x ),其中 x ∈ [ − L, L ] ,我们可以人为地对该函数在其他区间上进行周期延拓, 使得
2、结构数组
结构体是MATLAB中比元胞数组更广义的数组,它的每一个元素都称为域, 域中可以存放任意类型的数据结构。与其他数组不同的是结构数组用域名来调 用域的内容。结构数组具有层次数据结构,它可以描述一个班级下的每个学生 的姓名、性别、课程和得分这样的层次结构。该层次的结构可以存放广泛的数 据类型,如典型的MATLAB图形结构就是用结构数组来组织的,由屏幕、菜单、 图形和修饰图形的元素自上而下这样的层次组成。 同元胞数组类似,结构数组的创建也有两种方法: ①用赋值语句直接定义; ②用结构函数structure()来直接产生。
最大的正浮点数1.7977e+308
无穷大(如1/0)
不定值(如0/0,∞/∞,0×∞)
注:NaN与Inf的乘积仍为NaN。
二、数值型数据
数值型数据包括整数(带符号和无符号)和浮点数(单精度和双精度)。 在缺省(默认)状态下,MATLAB将所有的数都看作是双精度的浮点数。 使用整型变量和单精度变量可以节约内存空间。
MATLAB支持的基本数据类型见下图。
MATLAB
数值类型
字符串
元胞数组
结构
函数句柄
Java对象
逻辑类型
双精度类型
单精度类型
整数类型
自定义类
内嵌对象
int8, uint8 int16, uint16 int32, uint32 int64, uint64
MATLAB的数据类型源自一、变量与常量变量是任何程序设计语言的基本元素之一,它是指其数值在数据处理的 过程中可能会发生变化的一些数据量名称。而常量则是指在计算过程中 数值不发生变化的量。 MATLAB语言变量有如下特点:①不要求对所使用的变量进行事先声明, 也不需要指定变量类型,MATLAB会自动根据所赋予变量的值或对变量 所进行的操作来确定变量的类型;②在赋值过程中,如果变量已经存在, MATLAB会用新值代替旧值,并以新的变量类型代替旧的变量类型。 如果没有事先声明,MATLAB中的变量指的是局部变量。此外用户还可 以使用global()函数来定义全局变量,全局变量可以用于不同函数文件之 间的传递,但也正是由于全局变量的这种特性使得程序的可读性降低甚 至容易出错,所以建议读者一般不要使用全局变量。
struct2cell
注:上图中的S2N包括:str2int,str2num,str2mat,sscanf等; N2S包括: int2str,num2str,mat2str,sprintf等。
2.2 数值运算
一、矩阵及其运算
MATLAB中是以矩阵作为基本编程单元的,所以矩阵运算十分重要。 1、矩阵的输入 在MATLAB中,输入矩阵可有以下几种方法: a) 输入元素列表;(a=[1 2 3;4 5 6;7 8 9]) b) 从外部数据文件中读取矩阵;(load data.mat) c) 利用MATLAB内部函数与工具箱函数产生矩阵;(a=eye(4)) MATLAB (a=eye(4)) d) 用户自己编写语句产生矩阵。(r=5-10*rand(2, 3)) 2、矩阵的基本运算 矩阵的基本运算主要包括矩阵的代数运算、逻辑运算和关系运算。代 数运算主要包括矩阵转置(通过“‘”或transpose函数实现)、矩阵加 (+)、减(-)、乘(*)、除(左除”\”,右除”/“)、乘方(^)和点(.)运算;逻辑 运算包括与(&和&&)、或(|和||)、非(~)和异或(xor);关系运算包括等于 (==)、不等于(~=)、大于(>)、小于(<)、不大于(<=)和不小于(>=)。
第2章 MATLAB语言程序设计基础
本章目标:了解MATLAB语言程序设计 及图形绘制的基本内容
2.1 2.2 2.3 2.4 2.5 2.6 2.7 MATLAB语言数据类型 数值运算 符号运算 MATLAB语言程序控制结构 M文件概述 MATLAB图形绘制 实例解析
2.1 MATLAB语言数据类型
2、字符串的连接
字符串可以利用“[ ]”运算符进行拼接,不过拼接字符串时需要注意以 下两点: 若使用“,”作为不同字符串之间的间隔,则相当于扩展字符串成为更长 的字符串向量。 若使用“;”作为不同字符串之间的间隔,则相当于扩展字符串成为二维 或者多维的数组,这时,不同行上的字符串必须具有同样的长度, 此外还可以利用MATLAB提供的函数实现字符串的拼接: strcat()函数实现字符串水平连接 strvcat()函数实现字符串垂直连接
单变量函数的Taylor幂级数展开 单变量函数的Taylor幂级数展开可以用符号工具箱的taylor()函数直接导出,其调用格式为 r=taylor(f,x,n,a) 其中f为函数的符号表达式,x为符号自变量,若函数只有一个自变量,则x可以省略,n为需 要展开的项数,默认值为6,a为函数展开点,表明需要获得关于x=a的幂级数展开,a的默认 值为0。 多变量函数的Taylor幂级数展开 MATLAB并未提供计算多变量函数Taylor幂级数展开的直接函数,但它可以调用maple语言中 的mtaylor()函数来直接求取多变量函数的Taylor幂级数展开。该函数的调用格式如下: T=maple('mtaylor',f,'[x1,x2,...,xn]',n) % 格式1 T=maple('mtaylor(f,[x1,x2,...,xn],n)') % 格式2 T=maple('mtaylor',f,'[x1=a1,x2=a2,...,xn=an]',n) % 格式3 T=maple('mtaylor(f,[x1=a1,x2=a2,...,xn=an],n)') % 格式4 其中格式1与格式2等价,格式3与格式4等价,格式1与格式2主要用于求解原点处的Taylor展 开,格式3和格式4主要用于求解(a1,a2,...,an)处的Taylor展开,n-1为展开的最高阶次。
3、符号积分
MATLAB符号运算工具箱中提供的int()函数可以直接用来求取积分问题的解析解。该函数的常用 调用格式为: I=int(f,x) % 求不定积分 I=int(f,x,a,b) % 求定积分 其中f为被积函数,x是自变量,a,b是积分区间,可以为确定的值,函数或无穷。
4、符号级数 级数展开
0 2 4 6 8
3、留数的计算
由复变函数课程的学习可知,留数的计算可以最终归结为极限的计 算,下面仅介绍留数在MATLAB中的求解。相关的实现语句如下: c=limit(F*(z-z0),z,z0) % 单奇点 c=limit(diff(F*(z-z0)^m,z,m-1)/prod(1:m-1),z,a) % m重奇点 这里需要对上述两个函数作一点说明:limit()函数是求极限的函数, prod()函数是求连乘的函数。例如: syms x; limit(sin(x)/x) ans =1 prod([1 3 6 4 7]) ans =504
三、复数及其运算
1、复数绘图 对于复数函数的绘图主要有两种形式。一种是直角坐标图(plot),即分别以复数 的实部和虚部为坐标作出复数的表示图;另一种为极坐标图(polar),即以复数的 模和幅角为坐标作图。 直直直直直 例如:编写如下语句: 2 t=0:0.1:2*pi; 极直直直 1 y=t+i*t.*sin(t); 90 10 120 60 r=abs(y);theta=angle(y); %求极半径和极角 0 % [theta,r] = cart2pol(t,t.*sin(t)); 5 150 30 subplot 121,plot(y),title('直角坐标图') -1 180 0 subplot 122,polar(theta,r),title('极坐标图') -2 输出结果如右图所示。 210 330 2、复数的基本运算 -3 240 300 复数的基本运算包括求复数的实虚部、幅值和 270 -4 相角以及其共轭复数等。相关的操作函数为: real,imag,abs,angle和conj。 -5