第1讲:向量,函数和作图
Blog Todd讲Matlab
向量
Matlab 中最基本的对象是矩阵,向量是特殊的矩阵。行向量是1×n矩阵,列向量是m×1矩阵。输入如下行向量:
>>v=[0123]
回车,Matlab 将输出此行向量:
v=
0123
输入如下列向量:
>>u=[9;10;11;12;13]
按如下方式访问向量的元素:
>>u(2)
按如下方式改变元素的值:
>>u(2)=47
按如下方式提取多个连续向量:
>>u(2:4)
按如下方式将行向量变成列向量,也可以把列向量变成行向量:
>>w=v'
这个操作称为转置,'称为转置算符。
还可以用如下方法快速建立行向量:
>>x=-1:0.5:1
另一方法为:
>>y=linspace(0,1,11)
基本输出格式
如果让输出更紧凑些,可以按如下命令:
>>format compact
如果要使结果输出更多位小数,输入如下命令:
>>formatlong
注意:这不会改变Matlab参与运算的数的位数,只是改变输出结果的小数位数。
作图
根据表格1中的数据,将表格中的数据赋给两个向量:
>>x=[520305055]
x=
520305055
>>y=[0.080.0150.0090.0060.0055]
y=
0.08000.01500.00900.00600.0055T
5
20
30
50
55
μ
0.08
0.015
0.009
0.006
0.0055
表格1 温度与粘度
输入如下命令可将数据绘成图形:
>>plot(x,y)
如果想把数据点用符号表示出来,例如:
>>plot(x,y,'*')
>>plot(x,y,'o')
>>plot(x,y,'.')
内置函数
Matlab包含有大量的内置函数,如sin()、exp(),等等,大部分函数的意义从名字一看便知。使用内置函数时,变量放在小括号里。比如:
>>sin(pi)
这是计算sinπ的值。
如下命令:
>>exp(0)
这是计算e0的值。
Matlab内置函数还可以向量为自变量,比如:
>>x=linspace(0,2*pi,40);
>>y=sin(x);
>>plot(x,y)
输出结果为正弦函数在区间[0,2π]上的图形。
Matlab常用内置函数还有:cos(), tan(), sinh(), cosh(), log() (自然对数), log10() (以10为底的对数), asin( ) (反正弦函数), \acos( ), \atan( )。要了解函数细节,可以用help命令查询,比如:
>>help plot
>>help sin
>>help
内联函数
Matlab提供多种方式自定义函数,一种方法是内联函数,这是在命令行窗口定义函数的一种方法。下面就是一个典型的内联函数:
>>f=inline('2*x.^2 - 3*x + 1','x')
这就定义了一个函数f(x)=2x2−3x+1。如下计算单个函数值:
>>f(2.23572)
与内置函数一样,内联函数也可以带入向量,如:
>>x=-2:.2:2
>>f(x)
这正是向量化的例子,即用一个向量表示多个数,一次操作向量的所有元素,而非一次处理一个元素,这是Matlab的优势之一。f(x)可以处理向量x,因为我们用 x.^2 表示 x2。符号.使指数运算符 ^ 可以对向量各个元素做指数运算,比如[-2 -1.8 -1.6].^2运算实为[(−2)2(−1.8)2(−1.6)2],结果为[4 3.24 2.56]。而[-2 -1.8 -1.6]^2运算实为[-2 -1.8 -1.6][-2 -1.8 -1.6],程序将报错。运算.可用于.^,.*,./,但不需用于乘除标量,也不需用于加法+。
函数图形也可以用 plot 命令得到,如数据作图一样:
>>plot(x,y)
需要注意的是,这里其实是把函数转换成数据然后作图的。机器作图都需要这一转换步骤。
补充:Matlab R2015a 提示内联函数过时,未来将不支持内联函数。可以采用匿名函数来自定义函数。
匿名函数
输入如下命令可定义一个匿名函数:
>>afun1=@(x)sin(x)/x
计算函数值:
>>afun1(2)
定义多个变量的匿名函数:
>>afun2=@(x,y)(x^2+y^2+x*y)
如果需要输入向量作为自变量,注意乘、除、幂运算分别需要用.*,./,.^进行。如:
>>npdf=@(x)(1/sqrt(2*pi))*exp(-0.5*x.^2)
练习
1 从工程教科书中选取一个数据表格,将数据赋予向量,然后作图,并标记坐标轴和标题。
2 定义内联函数 g(x)=x+cos(x5)并作图。你得到的图有何问题?如何改善?