matlab(2)

作者在 2006-12-19 01:05:00 发布以下内容

MATLAB 支持的数据结构

  MATLAB 语言的赋值语句有两种:

  • 变量名 = 运算表达式
  • [返回变量列表] = 函数名(输入变量列表)

  MATLAB 支持变量和常量,其中 pi 为圆周率 p, 更重要的,MATLAB 支持 IEEE 标准的运算符号,如 Inf 表示无穷大,NaN (Not a Number) 为 0/0, 0*Inf 或 Inf/Inf 等运算结果。MATLAB 变量名应该由字母引导,后面可以跟数字、字母或下划线等符号。MATLAB 是区分变量名字母大小写的。

(1) 矩阵

  MATLAB 最基本的数据结构是复数矩阵。输入一个复数矩阵是很简单的事。例如可以给出下面的语句:
  >> B=[1+9i,2+8i,3+7j; 4+6j 5+5i,6+4i; 7+3i,8+2j 1i]
其中 >> 为 MATLAB 的提示符。矩阵各行元素由分号分隔,而同行不同元素由逗号或空格分隔。给出了上面的命令,则可以给出下面的结果。

B =
   1.0000 + 9.0000i 2.0000 + 8.0000i 3.0000 + 7.0000i
   4.0000 + 6.0000i 5.0000 + 5.0000i 6.0000 + 4.0000i
   7.0000 + 3.0000i 8.0000 + 2.0000i      0 + 1.0000i

其中,元素 1+9i 表示复数项。有这样的表述方法,实矩阵、向量或标量均可以更容易地输入了。如果赋值表达式末尾有分号,则其结构将不显示,否则将显示出全部结果。

  MATLAB 和其他语言不同,它无需事先声明矩阵的维数。下面的语句可以建立一个更大的矩阵

>>  B(2,5)=1
B =
   1.0000 + 9.0000i 2.0000 + 8.0000i 3.0000 + 7.0000i   0        0
   4.0000 + 6.0000i 5.0000 + 5.0000i 6.0000 + 4.0000i   0   1.0000  
   7.0000 + 3.0000i 8.0000 + 2.0000i      0 + 1.0000i   0        0

  冒号表达式是 MATLAB 里最具特色的表示方法。其调用格式为 a=s1:s2:s3; 这一语句可以生成一个行向量,其中 s1 为向量的起始值,s2 为步距,而 s3 为向量的终止值。例如 S=0:.1:2*pi; 将产生一个起始于 0, 步距为 0.1, 而终止于 6.2 的向量 (pi 为 MATLAB 保留常量p), 而不是终止于2p。如果写成 S=0:-0.1:2*pi; 则不出现错误,而返回一个空向量。

  冒号表达式可以用来提取矩阵元素,例如 B(:,1) 将提取 B 矩阵的第 1 列而 B(1:2,1:2:3) 将提取 B 的前 2 行与 1,3,5 列组成的子矩阵。在矩阵提取时还可以采用end 这样的算符。如 B(2:end,:) 将提取 B 矩阵的后 2 列构成的子矩阵。

(2) 多维数组

  多维数组是 MATLAB 在其 5.0 版本开始提供的。假设有 2 个 3x3 矩阵 A1, A23,则可以由下面的命令建立起一个 3x3x2 的数组:A=cat(3,A1,A2)。试验 A1=cat(2,A1,A2) 和 A2=cat(1,A1A2) 将得到什么结果。

  对矩阵或多维数组 A 可以使用 size(A) 来测其大小,也可以使用 reshape() 函数重新按列排列。对向量来说,还可以用 length(A) 来测其长度。

  不论原数组 A 是多少维的,A(:) 将返回列向量。

(3) 字符串与字符串矩阵

  MATLAB 的字符串是由单引号括起来的。如可以使用下面的命令赋值

  >> strA='This is a string.'

  多个字符串可以用 str2mat() 函数构造出字符串矩阵。如 B=str2mat(strA, 'ksa saj','aa');字符串变量可以由下表中的命令进行操作:

命令 意义 命令 意义
strcmp(A,B) 比较A和B字符串是否相同。 findstr(A,B) 测试A是否为B的子字符串,或反过来
strrep(A,s1,s2) 在A中用s2替换s1 length(A) 字符串A的长度
deblank(A) 删除A字符串尾部的空格 double(A) 字符串转换双精度数据

(4) 单元数据结构

  用类似矩阵的记号将给复杂的数据结构纳入一个变量之下。

matlab | 阅读 2529 次
文章评论,共0条
游客请输入验证码
浏览98366次