> 技术文档 > 标量(scalar)、向量(vector)、矩阵(matrix)、数组(array)等概念的深入理解与运用

标量(scalar)、向量(vector)、矩阵(matrix)、数组(array)等概念的深入理解与运用


一、为方便理解,先定义几个变量

a1=5;

a2=[2 3 4 5];

a3=[1:3;10:12];

b1=\'a\';

b2=\'abcd\';

b3=[\'abcd\';\'1234\';\'!@#$\'];

b4={ \'abcd\';\'1234\';\'!@#$\'};

b5=\'\';

b6={ \'abcd\',\'1234\',\'!@#$\'};

c1=\"\";

c2=\"abc\";

c3=[\"abc\",\"123\"];

c4={ \"abc\",\"123\"};

c5=[\"abc\",\"123\";\"!@#\",\"xyz\"];

c6={ \"abc\",\"123\";\"!@#\",\"xyz\"};

二、用到的有关函数

size(a)返回a的行数和列数。

isscalar(a)判断a是不是标量,是返回逻辑1,否返回逻辑0.

isvector(a)判断a是不是向量,是返回逻辑1,否返回逻辑0.

class(a)查看a的数据类型

isempty(a)检查a是否为空,是返回逻辑1,否返回逻辑0.

三、什么是标量(scalar)

凡是调用size函数返回1×1(即1行1列)的变量都称为标量。凡是调用isscalar函数返回逻辑1的都称为标量。标量维度为1。

以上变量中,标量有:a1,b1,c1,c2为标量。其中:

a1称为数值标量(Numeric scalar)

b1 称为字符标量(character scalar)

c1、c2 称为字符串标量(string scalar)

四、什么是向量(vector)

凡是调用size函数返回1×n或1×n (n>=1)(即1行n列或者n)的变量都称为向量。凡是调用isvector函数返回逻辑1的都称为向量。标量是向量的特殊形式。向量的维度为2.

a1,a2称为数值向量(Numeric vector)

b1,b2 ,b4, b6 称为字符向量(character vector)

c1,c2,c3,c4 称为字符串向量(string scalar)

五、代码验证

以下检查各个变量的行数和列数,并检查是不是标量和向量。

%a1

disp(sprintf(\'a1行数和列数分别为:%d%d,类型\'\'%s\'\'\',size(a1),class(a1)));

a1行数和列数分别11,类型\'double\'

if isscalar(a1)

disp(\'a1是标量\');

else disp(\'a1不是标量\');

end

a1

if isvector(a1)

disp(\'a1是向量\');

else disp(\'a1不是向量\');

end

a1是向量

%a2

disp(sprintf(\'a2行数和列数分别为:%d%d,类型\'\'%s\'\'\',size(a2),class(a2)));

a2行数和列数分别14,类型\'double\'

if isscalar(a2)

disp(\'a2是标量\');

else disp(\'a2不是标量\');

end

a2不是

if isvector(a2)

disp(\'a2是向量\');

else disp(\'a2不是向量\');

end

a2是向量

%a3

disp(sprintf(\'a3行数和列数分别为:%d%d,类型\'\'%s\'\'\',size(a3),class(a3)));

a3行数和列数分别23,类型\'double\'

if isscalar(a3)

disp(\'a3是标量\');

else disp(\'a3不是标量\');

end

a3不是