MATLAB 2016基础实例教程(附教学视频)
上QQ阅读APP看书,第一时间看更新

2.2 数据定义

在MATLAB中,系统识别数字及一些特殊常量,这些数据可以在程序运行中直接使用,但大多数情况下,使用的数据需要进行定义后才能使用。否则不能数据被识别,系统会显示警告信息,同时程序不能被运行。下面根据不同的类别分别对不同数据进行定义。

2.2.1 字符串定义

字符和字符串运算是各种高级语言必不可少的部分。MATLAB作为一种高级的数学计算语言,字符串运算功能同样很丰富,特别是增加了自己的符号运算工具箱之后,字符串函数的功能得到进一步增强。这里的字符串不仅仅是简单的字符串运算,而是MATLAB符号运算表达式的基本构成单元。

1. 直接赋值定义

在MATLAB中,所有的字符串都应用单引号设定后输入或赋值(yesinput命令除外)。

>> a='this is a book'
a = 
     this is a book 

2. 由函数char来生成字符数组

>> a=char('b','o','o','k'); 
>> a' 
ans = 
     book 

对字符串进行定义后,可对该字符串进行简单地操作。

(1)计算字符大小

在MATLAB中,字符串与字符数组基本上是等价的。用户可以用函数size来查看数组的维数。

>> size(a) 
ans= 
     4   1 

(2)显示字符元素

字符串的每个字符(包括空格)都是字符数组的一个元素。

>> a(2) 
ans = 
o 

(3)链接串

使用该函数将几个字符串连接成一个字符串。

>> x='this'; 
>> y=' is'; 
>> z=strcat(x,y) 
z = 
this is

(4)替代串

使用一个字符串替换另一个字符串。

>> x='who are you'; 
>> y='how'; 
>> z=strrep(x,'who',y) 
z = 
how are you

MATLAB的其他字符串操作函数见表2-1。

表2-1 字符串操作函数表

2.2.2 操作实例

例1:修改字符大小写。

例1

>> x='MATLAB 2016A' 
x = 
MATLAB 2016A 
>> Y=lower(x) 
Y = 
matlab 2016a 

注意:Lower函数的功能是转换串为小写,该函数有两种用法。

(1)将选中的字符转换为小写。

>> t = lower('str')

(2)将整个被复制的变量中的字符串转换为小写。

B = lower(A)

例2:编辑字符位置。

例2

>> A='      happybirthday    ' 
A = 
      happybirthday  
>> B= strjust(A,'RIGHT') 
B = 
         happybirthday 
>> B=strjust(A,'left') 
B = 
happybirthday  
>> B= strjust(A,'center') 
B = 
     happybirthday  

注意:strjust函数的功能是整理字符数组,该函数包括四种方式。

(1)自动整理字符位置。

>> T = strjust(S)

(2)将字符位置调整在右侧。

>> T = strjust(S, 'right') 

(3)将字符位置调整在左侧。

>> T = strjust(S, 'left') 

(4)将字符位置调整在中间位置。

>> T = strjust(S, 'center') 

例3:为字符串添加空格。

例3

>> A=sprintf('happy\tbirthday') 
A = 
Happy     birthday 
>> A=sprintf('happy\tbirthday\tto\tyou') 
A = 
happy     birthday to  you 

2.2.3 向量定义

向量是由n个数a1, a2, …, an组成的有序数组,记成

叫作n维向量,向量a的第i个分量记为ai

向量的生成有直接输入法、冒号法和利用MATLAB函数创建三种方法。

1. 直接输入法

生成向量最直接的方法就是在命令窗口中直接输入。格式上的要求如下:

•向量元素需要用“[ ]”括起来;

•元素之间用空格、逗号或分号分隔。

(1)行向量

用空格和逗号分隔生成行向量。

① 使用空格间隔。

>> x=[1 2 3 4]   
x = 
      1     2     3     4 

② 使用逗号间隔。

>> x=[1,2,3,4]   
x = 
      1     2     3     4 

(2)列向量

用分号分隔形成列向量。

>> x=[1;2;3;4] 
x = 
      1  
      2 
      3 
      4 

2. 冒号法

冒号表达式的基本形式为x=x0:step:xn,其中x0、step、xn分别为给定数值,x0表示向量的首元素数值,xn表示向量尾元素数值限,step表示从第二个元素开始,元素数值大小是与前一个元素数值大小的差值。

xn为尾元素数值限,而非尾元素值,当xn-x0恰为step值的整数倍时,xn才能成为尾元素值。若x0<xn,则需step>0;若x0>xn则需step<0;若x0=xn,则向量只有一个元素。若step=1,则可省略此项的输入,直接写成x=x0:xn。此时可以不用“[ ]”。

>> x=0:4:16  
x = 
      0     4     8     12     16

创建一个从0开始,增量为4,到16结束的向量x。

(1)创建无间隔行向量

表达式:

a:b

表示一行从1到5的整数。

>> 1:5 
ans = 
      1     2     3     4     5 

(2)创建带间隔行向量

为了改变递变的间隔,可以指定一个间隔长度,表达式为:

a:b:c

a表示初始值,b表示间隔值,c表示终止值。

>> 1:2:16 
ans = 
      1     3     5     7     9     11     13     15 

3. 函数法

(1)线性等分向量

linspace通过直接定义数据元素个数,而不是数据元素直接的增量来创建向量。此函数的调用格式如下。

linspace(first_value, last_value,number) 

该调用格式表示创建一个从first_value开始至last_value结束,包含number个元素的向量。

创建一个从0开始,到10结束,包含6个数据元素的向量x。

>> x=linspace(0,10,6) 
x = 
      0     2     4     6     8     10

(2)对数等分的向量

与linspace一样,logspace也通过直接定义向量元素个数,而不是数据元素之间的增量来创建数组。logspace的调用格式如下。

logspace(first_value, last_value,number)

表示创建一个从10first_value开始,到10last_value结束,包含number个数据元素的向量。

>> x=logspace(1,5,3) 
x = 
      10        1000      100000 

2.2.4 课堂练习——求解区间数值

求解区间数值

创建一个从10开始,到211结束,包含4个数据元素的向量x

操作提示。

使用线性等分向量linspace直接得到结果。

2.2.5 矩阵定义

MATLAB以矩阵作为数据操作的基本单位,这使得矩阵运算变得非常简捷、方便、高效。

矩阵是由m×n个数aiji = 1,2,…,m; j = 1,2,…,n)排成的mn列数表,记成

也可以记成aijAm×n。其中,i表示行数,j表示列数。若m=n,则该矩阵为n阶矩阵(n阶方阵)。

注意:由有限个向量所组成的向量组可以构成矩阵,如果A=(aij)是m×n矩阵,那么Amn维行向量;有nm维列向量。

矩阵的生成方法主要有直接输入法、M文件生成法和文本文件生成法等。

1. 直输入法

在键盘上直接按行方式输入矩阵是最方便、最常用的创建数值矩阵的方法,尤其适合较小的简单矩阵。在用此方法创建矩阵时,应当注意以下几点。

•输入矩阵时要以“[ ]”为其标识符号,矩阵的所有元素必须都在括号内。

•矩阵同行元素之间由空格(个数不限)或逗号分隔,行与行之间用分号或Enter键分隔。

•矩阵大小不需要预先定义。

•矩阵元素可以是运算表达式。

•若“[ ]”中无元素,表示空矩阵。

•如果不想显示中间结果,可以用“;”结束。

(1)创建简单数值矩阵,对比与向量的创建方法有何不同。

>> a=[1 2 3;1 1 1;4 5 6] 
a= 
      1      2      3 
      1      1      1 
      4      5      6 

(2)创建一个带有运算表达式的矩阵。

>> B=[sin(pi/3),cos(pi/4);log(3),tanh(6)] 
B =
0.8660    0.7071 
1.0986    1.0000

在输入矩阵时,MATLAB允许方括号里还有方括号,下面创建一个3维方阵。

>> [[1 2 3];[2 4 6];7 8 9]  
ans = 
     1     2     3 
     2     4     6 
     7     8     9 

2. 利用文本创建

MATLAB中的矩阵还可以由文本文件创建,即在文件夹中建立txt文件,在命令窗口中直接调用此文件名即可。

(1)事先在记事本中建立文件。

    1    2    1 
    1    2    4 
    1    3    8 

(2)以data.txt保存,在MATLAB命令窗口中输入。

>> load data.txt 
>> data 
data = 
      1     2     1 
      1     2     4 
      1     3     8 

由此创建矩阵。

x=    1  2  1  
      1  2  4 
      1  3  8

2.2.6 操作实例

例1:创建元素均是5的5×5矩阵。

例1

>> a=[5 5 5 5 5;5 5 5 5 5;5 5 5 5 5;5 5 5 5 5;5 5 5 5 5] 
a = 
     5     5     5     5     5 
     5     5     5     5     5 
     5     5     5     5     5 
     5     5     5     5     5 
     5     5     5     5     5 

例2:创建字符矩阵A

其中,0

例2

>> A=[['a','a','a'];[' ',' ','a'];['a','a',' ']] 
A = 
aaa 
  a 
aa 

例3:创建包含复数的矩阵A

例3

其中,0

>> A=[[1,1+i,2];[2,3+2i,1]] 
A = 
   1.0000 + 0.0000i   1.0000 + 1.0000i   2.0000 + 0.0000i 
   2.0000 + 0.0000i   3.0000 + 2.0000i   1.0000 + 0.0000i

2.2.7 课堂练习——创建成绩单

创建成绩单

将某班期末成绩单保存成文件演示。

操作提示。

(1)创建文本文件“qimo.txt”,如图2-1所示,分别输入数学、语文、英语的成绩,并将该文件保存在系统默认目录下。

图2-1 记事本文件

(2)使用函数qimo导入到命令窗口中。

2.2.8 符号变量定义

在MATLAB符号数学工具箱中,符号表达式是代表数字、函数和变量的MATLAB字符串或字符串数组,它不要求变量有预先确定的值。符号表达式包括符号函数和符号方程,其中符号函数没有等号,而符号方程必须带有等号,但是两者的创建方式是相同的,都是用单引号括起来。MATLAB在内部把符号表达式表示成字符串,以与数字相区别。符号变量定义方法有两种:sym x或者syms x,两者有区别也有共同点。

(1)定义对象不同

syms是定义符号变量,sym是将字符或者数字转换为字符。

>> sym x 
ans = 
x 

在工作区显示将该变量定义给存储变量0

>> syms y 

在工作区显示直接定义该变量0

(2)定义对象个数不同

syms可以看做sym的复数形式,前者可定义多个变量,后者只能对一个变量进行赋值。

>> sym x1 x2                          %定义两个变量 
错误使用 sym/assume (line 514) 
输入 应与以下字符串之一相匹配: 
'integer', 'rational', 'real', 'positive', 'clear' 
'x2' 输入与任何有效字符串均不匹配。 
出错 sym (line 190) 
            assume(S, n); 
>> syms x1 x2                         %定义两个变量 

(3)定义对象格式不同

syms可以直接定义符号函数d(r),并且可以对函数的形式进行赋值,但是sym却不可以写为sym d(t),只是将d(t)生成了一个整体的符号。

>> sym y(x)                           %定义变量 
警告: Support of strings that are not valid variable names or 
define a number will be removed in a future release. To create 
symbolic expressions, first create symbolic variables and then use 
operations on them.  
> In sym>convertExpression (line 1536) 
In sym>convertChar (line 1441) 
In sym>tomupad (line 1198) 
In sym (line 177)  
ans = 
y(x) 
>> syms y(x)                          %定义变量 

2.2.9 课堂练习——定义变量x

定义变量x

确定变量x的值。

操作提示。

(1)对变量x赋值。

(2)清除变量的值。

(3)重新对变量进行赋值。