MATLAB的变量、向量和矩阵的定义与赋值

时间:2022-11-16 10:15:37

变量名以字母开头,后接字母、数字或下划线,最多63个字符;区分大小写;关键字和函数名不能作为变量名。 MATLAB变量只有一种数据格式,是双精度(64位)型;但输出显示时可以设置多种显示格式

 

矩阵:由m×n个数组成的排成m行n列的一个矩形的数表,其中0×0矩阵为空矩阵([ ])。数表中第i(1≤i≤m)行第j(1≤j≤n)列的数据称为矩阵元素;

标量:1×1的矩阵,即为只含一个数的矩阵;

向量:1×n或n×1的矩阵,只有一行的矩阵称为行向量,只有一列的矩阵称为列向量。数表中第i(1≤i≤n)个数据称为向量元素。

一、标量

  变量                 功能说明
    ANS或ans             默认的变量名,以应答最近依次操作运算结果
    j或i                 虚数单位
    pi                   圆周率
    eps                  浮点数的相对误差
    realmax              最大的正实数
    realmin              最小的正实数
    INF或inf             代表无穷大
    NaN或nan             代表不定值
    nargin               函数实际输入参数的个数
    nargout              函数实际输出参数的个数

Inf 无穷大

NaN 非数

computer 确定运行的计算机

inputname 输入参数名

nargoutchk 有效的输出参数数目

varargin 实际输入 的参量

varargout 实际返回的参量

标量定义

例如,命令窗口中输入以下语句:

a=1   % a为标量

得到: a = 1

MATLAB的变量、向量和矩阵的定义与赋值


二、向量

MATLAB提供两种为等间隔数组赋值的方法:

t = [初值:增量:终值]

t = linspace(初值,终值,点数)

下面通过上面两种方式得到一个10个元素的从1到10的自然数的数组

A=[0:1:10]

B=linspace(0,10,11)

 

1.      利用冒号表达式建立一个向量

冒号表达式可以产生一个行向量,一般格式是:初始值:增量:终值
键入  A=[0:1:10]

      得      t=0   0.2  0.4   0.6   0.8  1

当增量为1时,这个增量值可以省略,

      键入  B=linspace(0,10,11)

      得      t=1   2  3   4   5   6


2.      用linspace函数产生行向量。其调用格式为:
linspace(a,b,n)
从a到b之间等间隔生成n个元素的行向量。显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。

   t1=linspace(0,4,5)%从0到4等分成5个点


3.      用logpace函数产生行向量。其调用格式为:
logspace(a,b,n)
从10a到10b之间按幂等分,生成n个元素的行向量。

   t2=logspace(0,4,5)    %从100到104 (即1到10000)按幂等分成5个点


三、矩阵

1. 矩阵的创建
在MATLAB中创建矩阵的原则:

1)矩阵元素必须写在“[ ]”内;

2)矩阵的同一行之间用空格或“,”分隔;

3)矩阵的行与行之间用分号分隔;

4)矩阵的尺寸不必预先定义;

5)矩阵元素可以是数值、变量、表达式或函数。


2.矩阵的赋值

MATLAB中基本的赋值语句为:

     变量名=表达式 

例如,命令窗口中依次输入以下语句:

a=1                                     % a为标量

b=[0 1]                                     % b为行向量

c=[1 2  3;4  5 6;7  8  9]                            % c为矩阵

依次得到:

a = 1

b =  0     1

c =  1    2     3

     4     5     6

     7     8     9


3.矩阵的元素

变量的元素用圆括号“()”中的数字来注明,一维矩阵(向量)用一个下标表示,二维的矩阵用两个下标表示,以逗号“,”分开。

如输入:b=c(2,3)

得到:  b=6

可以单独给元素赋值,

如:c(2,3)=10  等价于c(7)  = 11

输入:c(2,3)=10

得到:

c =   1     2    3

      4     5    10

     7     8     9

输入c(7) = 10

也可以得到:

c =   1     2   10

    4     5    10

      7     8     9

但注意一个一个元素的计数时,矩阵下标是从0开始的。矩阵的行列都是从1开始的


如给元素赋值时,元素的下标超出了原矩阵的大小,矩阵的行列会自动扩展;

如输入:c(4,3)=10

则得到:

c=   1   2   3

  4   5   6

     7   8   9

     0   0   10

给全行(列)赋值,可用冒号;

如输入:c(:,4)=[1 2 3 4 5]

则显示:

c=     1  2   3   1

      4   5  6   2

     7  8   9   3

     0   0  10  4

     5   4  3   5


给多行(列)赋值;

如给c的第1 、2行复制输入:c([1,2],:)=[0,0,0;0, 0, 0]

得到:

c =   0    0     0

        0     0     0

        7     8     9

        0     0    10


利用空矩阵[ ]抽取行

抽去c中的1、 2 行

输入:c([1,2], :) = []

得到:

c =   7     8    9

     0     0    10


4.      MATLAB变量的每个元素都可以是复数,实数是复数的特例,虚数单位用j或i表示;

例如,命令窗口中依次输入以下语句:

a=1+2j

b=[1+2j, 3+4j; 5+6j,7+8j]

c= [1, 3; 5, 7]+ [2, 4; 6, 8]*j

依次得到:

a =  1.0000 + 2.0000i

b =  1.0000 + 2.0000i   3.0000 + 4.0000i

  5.0000 + 6.0000i   7.0000 +8.0000i

c =  1.0000 + 2.0000i   3.0000 + 4.0000i

   5.0000 + 6.0000i   7.0000 +8.0000i

MATLAB所有的运算符和函数都对复数有效;

例如:f=sqrt(1+2j)


运算符“’ ”把矩阵共轭转置,即行列互换、各元素虚部反号;函数conj取共轭;conj与“’ ”结合,取转置; rot90逆时针旋转90º。

例如,命令窗口中依次输入以下语句:

w= c’                   %共轭转置

v = conj(c)          %共轭

u = conj(c)’               %转置

x=rot90(c)          %将矩阵逆时针旋转90º

依次得到:

w =  1.0000- 2.0000i   5.0000 - 6.0000i

      3.0000 - 4.0000i   7.0000 -8.0000i              

v =    1.0000 - 2.0000i   3.0000 - 4.0000i

       5.0000 - 6.0000i   7.0000 -8.0000i

u =   1.0000 + 2.0000i   5.0000 + 6.0000i

      3.0000 + 4.0000i   7.0000 +8.0000i

x =   3.0000 + 4.0000i   7.0000 + 8.0000i

      1.0000 + 2.0000i   5.0000 +6.0000i


1)who  用于显示在MATLAB工作空间中已          经驻留变量的名称。

2)whos  在给出变量名的同时,还给出它们          的大小、所占字节数及数据类型等信息。

3)clear  删除MATLAB工作空间中的变量。注          意,特殊变量不能被删除。


5.      定义通用特殊矩阵的函数有:

zeros:产生全0矩阵(零矩阵);
ones:产生全1矩阵(幺矩阵);
eye:产生单位矩阵;
rand:产生0~1间均匀分布的随机矩阵,均值为0,标准差为0.2887;
randn:产生均值为0,方差为1的标准正态分布随机矩阵,均值为0。

例如,命令窗口中依次输入以下语句:

 a=zeros(3,2)    %建立一个3×2零矩阵

b=ones(3,2)     %建立一个3×2幺矩阵

c=eye(3)       %建立一个3×2单位矩阵

d=rand(3,2)     %建立一个3×2随机矩

e=randn(3,2)    %得到方差为1的正态分布的3×2矩阵

依次得到得到:

a =

    0     0

    0     0

    0     0

b =

    1     1

    1     1

    1     1

c =

    1     0     0

    0     1     0

    0     0     1

d =

   0.2785    0.9649

   0.5469    0.1576

   0.9575    0.9706

e =

   0.7254   -0.2050

  -0.0631   -0.1241

   0.7147    1.4897


6. 用于专门学科的特殊矩阵函数有:

(1)魔方矩阵:magic(n)

 功能:对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成;

每行、每列及对角线上的元素之和均等于(n3+n)/2。n不能等于2。

m1=magic(3)   %产生3阶魔方阵

m2=magic(4)   %产生4阶魔方阵

(2) 范得蒙矩阵:vander(V)

功能:范得蒙(Vandermonde)矩阵最后一

列全为1,倒数第二列为指定向量V,其他各列

是其后列与倒数第二列的点乘积。可以用一个

指定向量生成一个范得蒙矩阵。例如,A=vander([1;2;3;5])

(3) 希尔伯特矩阵:hilb(n)

其元素为1/(i+j-1),i和j分别为其行标和列标;即:
[1,1/2,1/3,……,1/n]
[1/2,1/3,1/4,……,1/(n+1)]
[1/3,1/4,1/5,……,1/(n+2)]
  ……
[1/n,1/(n+1),1/(n+2),……,1/(2n-1)]

invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。

例如,求4阶希尔伯特矩阵及其逆矩阵。命令如下:

format   rat     %以有理形式输出
H=hilb(4)
H=invhilb(4)