MATLAB语言的基本元素

目标:

  1. 变量
  2. 赋值语句
  3. 矩阵
  4. m文件编写

一、变量

变量是保存数据信息的最基本的数据类型。变量的命名应遵循如下规则:

  • 变量名必须以字母开头
  • 变量名由字母、数字和下划线混合组成
  • 变量名区分字母大小写
  • MATLAB有一些特定含义的默认变量,可以直接使用,尽量避免另外自定义
MATLAB的系统保留变量
变量名默认值
i和j虚数单位
pi圆周率
ans存放最后一次无赋值变量语句的预算结果
inf无穷大
eps机器的浮点运算误差限(如果某变量的绝对值小于eps,则视为0)
NaN不定式(0/0,或inf/inf,或超出存储大小的值)
lasterr存放最后一次的错误信息
lastwarn存放最后一次的警告信息

二、赋值语句

MATLAB采用命令行形式的表达式语言,每一个命令就是一条语句。

1. 直接赋值语句

  • 格式:赋值变量=赋值表达式

等号右边的表达式由变量名、常数、函数和运算符构成。

注意:

  • 如果一条语句后面没有“ ; ”,MATLAB的命令行窗口将显示出运算结果,如果不想显示结果,就需要加“ ; ”
  • 如果省略左边的赋值变量和等号,则表达式结果默认赋值给保留变量ans
  • 如果表达式是字符串,则字符串需要使用单引号括起来

2. 函数调用语句

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

等号右边的函数名对应一个存放在合适路径中的MATLAB文本文件。函数有内置函数和用户自定义函数。返回变量的列表和输入变量的列表均可由若干变量名组成。

注意:

  • 函数的命名规则与变量名命名规则一致,但要避免与内置函数同名
  • 对于内置函数可以直接调用;自定义函数,该函数所对应的M文件要保存到MATLAB可搜索的目录中
  • 如果返回变量的个数大于1,他们之间要用逗号或者分号隔开。输入变量个数大于1,他们之间只能用逗号隔开

三、矩阵

矩阵有m行n列的矩阵,有m=n时为方阵,单位阵,转置矩阵,行向量和列向量。矩阵的表现形式和数组相似,以左括号“[”开始,以右括号“]”结束,每一行元素结束用行结束符号(分号“;”)或回车符分割,每个元素之间用元素分割符号(空格或“,”)分隔。

矩阵的表示:

可以直接在命令行输入矩阵,规则与上面讲到的相同

A = [1 5;3 7;2 4]

基本矩阵函数。

matlab提供了一些内置基本矩阵函数。

函数说明
ones(n)生成一个n行n列的全一矩阵,参数也可为不同的两个值
zeros(n)生成一个n行n列的全0矩阵
eye(n)生成一个n行n列的单位矩阵
magic(n)生成一个n行n列的魔法矩阵,其每一行每一列元素和都相等
rand(n)一个n行n列的矩阵,元素为0~1之间均匀分布的随机数
randn(n)一个n行n列的矩阵,元素均值为0,方差为1的正态分布随机数
hilb(n)Hilbert矩阵
vander(v)Vander矩阵
hankel(r,c)

Hankel矩阵

hadamard(n)Hadamar矩阵

matlab还提供了一个便利高效的表达式给等步长的行向量赋值,

冒号表达式。 

格式:v = s:h:e

其中,s,e是标量,分别代表向量的起始值和终止值,h代表向量元素之间的步长值。

创建序列的函数:

matlab提供了创建序列的函数,分别为linspace和logspace。

linspace函数用于产生指定长度的等距数列:

  • y = linspace(a,b):在(a,b)上产生100个线性等分点
  • y = linspace(a,b,n):在(a,b)上产生n个线性等分点

logspace用于产生指定长度的对数等距数列:

  • y = logspace(a,b):在(10^{a},10^{b})之间产生50个对数等分向量
  • y = logspace(a,b,n):在(10^{a},10^{b})之间产生n个对数等分向量

矩阵运算 

matlab中矩阵的运算包括矩阵的代数运算、矩阵的逻辑运算和矩阵的关系运算。

代数运算:

1.矩阵的算术运算

矩阵的算术运算符及说明
运算符名称命令实例说明
+A+B如果矩阵A和B维度相同,则表示对应元素相加;如果其中一个矩阵为标量,则表示另一矩阵的所有元素加上该标量。
-A-B如果矩阵A和B维度相同,则表示对应元素相减;如果其中一个矩阵为标量,则表示另一矩阵的所有元素减去该标量。
*矩阵乘A*B矩阵A与B相乘,A和B均可为向量或标量,但A的位数必须等于B的列数。
\矩阵左除A\B方程A*X=B的解X
/矩阵右除A/B方程X*A=B的解X
^矩阵乘方A^B当A和B均为标量时,表示A的B次方幂;当A为方阵,B为正整数时,表示矩阵A的B次乘积;当A,B均为方阵时,无定义。
>> A = [1 1;2 3];
>> B = [1 2;5 3];
>> A/B

ans =

    0.2857    0.1429
    1.2857    0.1429

>> A\B

ans =

    -2     3
     3    -1

>> A^B
错误使用  ^ 
输入必须为标量和方阵。
要按元素进行 POWER 计算,请改用 POWER (.^)。
 
>> A^3

ans =

    11    15

注意:右除运算,两矩阵的列数必须相等。左除运算,两矩阵的行数必须相等。

2.矩阵的运算函数

常用矩阵运算函数
函数功能
size(A)计算矩阵A的函数和列数
A'计算矩阵A的转置矩阵
inv(A)

计算矩阵A的逆矩阵

length(A)计算矩阵A的长度
sum(A)如果A为向量,则计算A所有元素之和;如果A为矩阵,则产生一行向量,其元素分别为矩阵A各列元素之和
max(A)如果A为向量,则求出A所有元素的最大值;如果A为矩阵,则产生一行向量,元素为各列元素的最大值

 

>> clear all;
>> A = [1 2 3;4 5 6;7 8 9];
>> inv(A)
警告: 矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND =  2.202823e-18。 

ans =

   1.0e+16 *

    0.3153   -0.6305    0.3153
   -0.6305    1.2610   -0.6305
    0.3153   -0.6305    0.3153

>> A'

ans =

     1     4     7
     2     5     8
     3     6     9

3.矩阵的元素群运算

是指矩阵中的所有元素按单个元素进行运算。为了与矩阵作为整体的运算符号相区别,元素群运算约定,在矩阵运算符前加一个点符号“.”。元素群加、减运算的效果与矩阵加、减运算的效果是一致的,运算符也相同。

矩阵的元素群运算符及说明
运算符名称命令实例说明
.*矩阵群乘A.*B矩阵A与矩阵B对应元素相乘,A和B必须为同维矩阵,或者其中之一为标量
.\矩阵群左除A.\B矩阵B除以矩阵A的对应元素,A和B必须为同维矩阵,或者其中之一为标量
./矩阵群右除A./B矩阵A除以矩阵B的对应元素,A和B必须为同维矩阵,或者其中之一为标量
.^矩阵群乘方A.^B矩阵A的各元素与矩阵B的对应元素的乘方运算,运算结果C=A.^B,其中C(i,j)=A(i,j)^B(i,j),A和B必须为同维矩阵。
>> clear all;
>> A = [1 3 7;2 5 8;3 6 9];
>> B = [1 1 1;0 5 8;3 7 11];
>> A .* B

ans =

     1     3     7
     0    25    64
     9    42    99

>> A .^ B

ans =

   1.0e+10 *

    0.0000    0.0000    0.0000
    0.0000    0.0000    0.0017
    0.0000    0.0000    3.1381

4.元素群的函数

matlab常用初等函数及其说明
函数名说明函数名说明
sin正弦函数real求复数的实部
cos余弦函数imag求复数的虚部
tan正切函数conj求复数的共轭
abs求函数的绝对值或复数的模exp自然指数函数
sqrt平方根函数log自然对数函数
angle求复数的复角log10以10为底的对数函数

矩阵的关系运算:

关系运算符主要用于比较数、字符串、矩阵之间的大小或不等式关系。返回值为0或1.

matlab语言的关系运算符
关系操作符说明对应的函数
==等于eq(A,B)
~=不等于ne(A,B)
<小于lt(A,B)
>大于gt(A,B)
<= 小于等于

le(A,B)

>=大于等于ge(A,B)

 注意:比较运算符都是双操作的运算符,两个操作数是大小相同的数组,或者其中一个为标量,例如:A>a,意义为A中的所有元素与a作比较。关系运算符比算术运算符具有更高的优先权。

>> clear all;
>> A = [1 2 3;4 5 8;9 7 6];
>> B = [1 4 7;2 5 8;3 6 9];
>> a = 2;
>> A == B

ans =

     1     0     0
     0     1     1
     0     0     0

>> A == a

ans =

     0     1     0
     0     0     0
     0     0     0

矩阵的逻辑运算: 

在逻辑运算中,所有非零元素的逻辑值为真,用代码1表示;值为0的元素的逻辑值为0,用代码0表示。

逻辑操作符说明对应的函数
&逻辑与and(A,B)
|逻辑或or(A,B)
~逻辑非nor(A,B)
||先决或 
&&先决与 

注意:&,&&执行相同的运算,都是逻辑与、其结果也相同,但两者运算方式不同。A&B是分别先计算出A、B,然后进行逻辑与;A&&B首先计算A,如果A的某一元素为0,则结果对应的元素为0,而不计算B。|,||也是同样的区别。 


四、M文件编写2.矩阵的运算

M文件可以分为脚本文件和函数文件。

1.脚本文件

脚本文件是由MATLAB语句构成的文本文件,以 .m为扩展名。运行命令文件的效果等价于从MATLAB命令窗口中按顺内逐条输入并运行文件中的指令。运行过程中产生的变量保存在MATLAB的工作空间中,脚本文件也可以访问当前工作空间的变量,其他脚本文件和函数可以共享这些变量。脚本文件常用于主程序的设计。

% 绘制一个肤色三维效果图
clear all
ab = [0 2*pi];
rtr = [2 0.5 1];
pq = [40 40];
box = [-3 3 -3 3 -2 2];
vue = [55 60];
tube('xyklein', ab, rtr, pq, box, vue);
shading interp
colormap(pink);
set(gcf, 'color', 'w');

2.函数文件

函数文件是由MATLAB语句构成的文本文件,并以 .m为扩展名。函数文件必须以关键字function语句引导,其基本结构为

function [返回参数1,返回参数2,...] = 函数名(输入参数1,输入参数2,...)

% 注释说明语段

    输入,返回变量格式的监测语句

    函数语句

特点:

  • 函数名由读者自定义,规则与变量名相同
  • 保存的文件名必须与定义的函数名一致
  • 可以通过返回参数和输入参数实现参数的传递,返回参数使用[],输入参数使用()
  • 注释语句由%引导,后面的语句不执行
  • 如果函数较复杂,则正则的参数格式检测是必要的。
  • 函数中输入和返回参数的实际个数分别由MATLAB内部保留变量nargin和nargout给出。只要运行了该函数,将自动生成这两个变量
  • 函数末尾不需要使用end命令
% 实现一个n行m列的矩阵,是的该矩阵的第i行和第j列元素值为1/(i+j-1),
% 要求在编写的函数中实现以下几点:
% (1)如果只给出一个输入,则会自动生成一个方阵
% (2)在函数中给出合适的注释信息
% (3)检测输入和返回变量的个数,如果有错误,则给出错误信息
function A = M1_25(n,m)
% 该函数用于创建一个特征的矩阵
if nargout > 1
    error('输出太多参数!');
end
if nargin == 1
    m = n;
elseif(nargin == 0) || (nargin > 2)
    error('输入参数错误!');
end
A = zeros(n,m);
for i = 1:n
    for j = 1:m
        A(i,j) = 1/(i+j-1);
    end
end



运行结果:
>> A = M1_25(2,3)

A =

    1.0000    0.5000    0.3333
    0.5000    0.3333    0.2500

>> A = M1_25(3)

A =

    1.0000    0.5000    0.3333
    0.5000    0.3333    0.2500
    0.3333    0.2500    0.2000

>> A = M1_25(3,2,4)
错误使用 M1_25
输入参数太多。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值