Workplace
工作区记录命令窗口中已经运行过变量。
ans是matlab中默认的结果变量. 每次matlab进行运算后, 结果都要储存在指定的变量中. 如果你只是输入表 达式, 却不指定把表达式的运算结果储存在哪个变量里面, 那么matlab就自 动地将结果储存在ans变量中. 直到下一次不带指定存储变量的运算结束前, ans中 所储存的值不变.
float是单精度浮点数,它的范围可以取到-3.40292347E+38到+3.40292347E+38之间
double是双精度浮点 ,它的范围可以取到-1.79769313486231570E+308到+1.79769313486231570E+308之间
单精度浮点变量与双精度浮点变量在内存的占用上是不同的.一般float是4个字节,而double是8个字节
Linspace 和 logspace
等差数列用linspace来定义,确定数组中初始元素、最终元素和步数。
Eg: a=linspace(1,10,3)
等比数列用logspace来定义,需要输入三个值:前两个分别作为10的指数,最后一个是数组中元素的个数。
Eg: b=logspace(1,3,3)
简单的矩阵运算
矩阵和标量进行运算:可以使用算术运算
矩阵运算中的乘、除、平方
相乘.* ; 相除:./ ; 幂运算:.^
a=[1 2 3] ; b=[4 5 6] ; c=[7 8 9 ]
a.*b
b./a
c.^a
MATLAB的矩阵运算能力适合进行重复运算。
例如:假设需要把多个角度值转换成弧度值。
首先输入矩阵的值,角度值分别为10,15,70,90
degrees=[10,15,70,90]
若将其转换成弧度,则需要乘以π/180
Radians= degrees*pi/180或degrees.*pi/180
注:在matlab中,π值用内置的浮点数pi表示。因为π是一个无理数,它不能用一个浮点数精确表示。所以matlab用一个近似的常数pi来表示。在三角函数中sin(pi)的值为0,但matlab却返回一个很小的值1.2246e-016就是这个原因。
数值显示-科学计数法
一般情况下,十进制数可以表示所有数值,但太大或太小的数值难以用基本的十进制数表示。
Eg:阿弗加德罗常数=602 200 000 000 000 000 000 000
科学记数法表示为:6.022×1023
在matlab中,科学记数法是在十进制小数部分与指数部分之间放置字母e
Eg: Avogadro’s_constant=6.022e23
注:一般来说,科学记数法采用10的幂来表示,但很多人经常把这种命名方法与数学上的自然数e相混淆,数学上e=2.7183。在matlab中e的指数用exp函数表示,
eg:exp(3)=e3
数值显示-显示格式
在MATLAB里有多种显示格式,无论选择哪一种,MATLAB都使用双精神浮点数进行计算。双精度浮点数有16位十进制有效数字,改变显示方式不会改变计算结果的精确度。也就是说无论用哪种显示格式,进行运算时使用双精度浮点数。除非调用特殊的函数,否则matlab不区分整数和浮点数。
Matlab命令
显 示
实 例
format short
4位有效数字
format long
14位有效数字
format short e
4位有效数字科学记数法
format long e
14位有效数字科学记数法
format bank
仅显示实际值2位有效数字
format short eng
4位有效数字的工程记数法
format long eng
14位有效数字的工程记数法
format +
只显示+和-号
format rat
分数形式
format short g
Matlab自动选择最佳显示格式
format long g
Matlab自动选择最佳显示格式
常用数学函数
abs(x)
求x的绝对值
sqrt(x)
求x的平方根
Nthroot(x,n)
求x的n次方实数根,函数的输出结果不能是复数
sign(x)
如果x大于0输出1;如果如果x等于0输出0;如果如果x小于0输出-1
rem(x,y)
求x/y的余数
Exp(x)
计算ex,其中e是自然对数的底,数值约等于2.7183
Log(x)
计算ln(x),它是x的自然对数(底为e)
Log10(x)
计算lg(x),x的常用对数(底为10)
Log2(x)
以2为底的对数,其它数值为底的对数运算需要间接求得。Matlab未提供通用的对数运算函数
取 整 函 数
round(x)
对x四舍五入
round(8.6)
ans=9
fix(x)
对x取整,舍弃小数点后的数值
fix(8.6)
ans=8
floor(x)
对x负向取整
floor(-8.6)
ans=-8
ceil(x)
对x正向取整
ceil(-8.6)
ans=-8
离散数学中的函数
factor(x)
对x进行因式分解
gcd(x,y)
找出x和y的最大公因数
lcm
找出x和y的最小公倍数
rats(x)
用分数表示x
factorial(x)
计算x的阶乘,如6!=6×5×4×3×2×1
nchoosek(n,k)
计算n中选k的组合数。如10中选3的可能组合数为120
primes(x)
提出小于x的素数
isprime(x)
检查x是否为素数,若x是素数,则返回1;否则,返回0
三角函数
sin(x)
X用弧度表示,计算x的正弦值
cos(x)
X用弧度表示,计算x的余弦值
tan(x)
X用弧度表示,计算x的正切值
asin(x)
X的取值在[-1,1]区间内,计算反正弦值,返回值在[-π/2, π/2]区间内
sinh(x)
X用弧度表示,计算x的双曲正弦值
asinh(x)
计算x的反双曲正弦值
sind(x)
X用角的度数表示,计算x的正弦值
asind(x)
计算反正弦,结果用角的度数表示
数据分析函数-最大值和最小值
max(x)
(1)求出矢量x的最大值。例如x=[1 5 3]最大值是5。
(2)创建一个包含矩阵x中每列最大值的行矢量。
[a,b]=max(x)
求矢量x中元素的最大值和最大值的位置,a表示最大值,b表示最大值的位置。
若x是矩阵,此函数生成两个行矢量,一个行矢量表示x各列的最大值,另一个行矢量对应最大值元素的位置。
max(x,y)
矩阵x和y具有相同的行和列,用两个矩阵中相同位置元素的最大值创建一个新的矩阵
min(x)
(1)求矢量x的最小值
(2)创建一个包含矩阵x中每列最小值的行矢量。
[a,b]=min(x)
求矢量x中元素的最小值和最小值的位置,a表示最小值,b表示最小值的位置。
若x是矩阵,此函数生成两个行矢量,一个行矢量表示x各列的最小值,另一个行矢量对应最小值元素的位置。
min(x,y)
矩阵x和y具有相同的行和列,用两个矩阵中相同位置元素的最小值创建一个新的矩阵
数据分析函数-平均值和中间值
mean(x)
(1)求矢量x的平均值。
(2)当x为矩阵时,返回值是含有各列平均值的行矢量。
median(x)
(1)求矢量x元素的中间值
(2)当x为矩阵时,返回值是含有各列中间值的行矢量。
mode(x)
求数组中出现次数最多的数,即众数。
median与mode
median的用法:如果数组有奇数个,中间值就是将数组按大小顺序排列,取中间的那个数作为中值;如果数组有偶数个,那么就去中间那两个数的平均值。
mode的用法:求数组中出现次数最多的数;如果数组中的数出现的频率相同,则返回数值最小的数。
数据分析函数-求和与乘积
sum(x)
(1)求矢量x各元素之和。
(2)若x是矩阵,返回结果是包含各列元素之和的行矢量。
prood(x)
(1)求矢量x各元素的乘积。
(2)若x是矩阵,返回结果是包含各列元素乘积的行矢量。
cumsum(x)
(1)求x元素的累加和。
(2)若x是矩阵,计算矩阵各列元素的累加和。
cumprod(x)
(1)求x元素的累积。
(2)若x是矩阵,计算矩阵x各列元素的累积。
数据分析函数-排序
Sort(x)
(1)对矢量x按升序排列。
(2)若x是矩阵,则按列进行升序排序。
Sort(x,’ descend’)
各列按降序排列。
Sortrows(x)
以矩阵第一列为标准,升序排列矩阵各行。
Sortrows(x,n)
以矩阵第n列的数据为标准,按升序排序矩阵各行。若n为负数,则按降序排列,如果没有指定n的值,则以第一列为标准,按升序行排列。
数据分析函数-规模函数
size(x)
求矩阵x的行数和列数。若x为多维数组,则size用来求数组的维数和长度。
[a,b]=size(x)
确定矩阵x的行数和列数,a表示行数,b表示列数。
length(x)
确定矩阵的最大长度
数据分析函数-标准差和方差
std(x)
(1)计算矢量x的标准差。但标准差一般只计算大规模数据集。
(2)计算矩阵各列数据的标准差。再次强调,标准差仅限于分析大规模数据集。
var(x)
计算x的方差。但方差一般只计算大规模数据集。标准差是方差的平方根。
特殊函数
pi
数学常数π
i
虚数
j
虚数
inf
无穷大,数据溢出或除数为0时的输出
5/0
NaN
非数,当计算没有被定义时发生
Inf/inf
clock
为了增加返回结果可读性,函数clock和fix一起使用
fix(clock)
date
当前日期。该函数与clock类似,不同之处在于返回的日期采用字符串格式。
date
eps
最接近1的双精度浮点数与1的距离,即Matlab中的最小极限
eps
Matlab的矩阵运算
创建矩阵
矩阵合并
从矩阵中提取信息
矩阵特性的运用
冒号的使用
冒号运算符常用于定义一个新矩阵或修改原有矩阵。例如利用冒号可以定义一个等差数列。
在进行数值计算时,常用冒号从矩阵中提取数据。如果冒号用在代表行或列的序号位置,则表示所有的行或所有的列。
M=[1 2 3 4 5;2 3 4 5 6;3 4 5 6 7]
提取矩阵第一列的命令为:
x=M(:,1)
上面的语句可理解为提取第1列的所有行。
如果不需要提取整行或整列,冒号可理解为从…行到…行或从…列到…列。
y=M(2:3,:)
语句的含义可以理解为提取第2行到第3行的所有列
Z=M(2:3,4:5)
语句的含义为提取第2行到第3行的第4列到第5列数据。
如果在矩阵名后直接加上冒号M(:),就会把原矩阵变成一个列矢量
事实上,在计算机内部并不是按照二维的形式存储二维矩阵的,而是把矩阵看成是一个长的列表。
矩阵中数字的提取
如果需要从矩阵中提取数字,则可采用种方法,即用序号标示或用行和列标示
Eg:M=[1 2 3 4 5;2 3 4 5 6;3 4 5 6 7]
M(8);或M(2,3)
序号标示是按列开始数数字的序号
如果不知道矩阵有多少行或多少列,则可以用单词end表示最后一行或最后一列
Eg:M(1,end)
M(end,end)
M(end)
特殊矩阵
zeros(m)
创建m×m的全零矩阵
zeros(m,n)
创建m×n的全零矩阵
ones(m)
创建m×m的全1矩阵
ones(m,n)
创建m×n的全1矩阵
diag(A)
提取二维矩阵A中的对角元素
fliplr
对矩阵的列进行左右对称翻转
flipud
对矩阵的行进行上下对称翻转
Matlab绘图
绘制二维图形,并对二维图形进行标注
调整图形
子图窗口的划分
绘制三维图形
使用交互绘图工具
二维图
简单的x-y坐标图,就可以根据x,y的值绘制图形。假设根据测量结果获得一组时间和距离的数据。
x=[0:2:16];
y=[0,0.33,4.13,6.29,11.19,13.19,13.96,16.33,18.17];
以x,y为参数,用plot命令描绘各点:
plot(x,y)
在实际工程中往往要给出图形的标题,以及坐标轴上变量的单位。用以下命令可以在图形上添加相应的标题、x轴和y轴的标注,以及栅格:
plot (x,y)
xlabel(‘Time,sec’)
ylabel(‘Distance,ft’)
grid on
也可以将上述语句合并在一起用逗号隔开写成一行或两行:
plot (x, y), title (‘Laboratory Experiment 1’)
xlabel(‘Time,sec’) , ylabel(‘Distance,ft’),grid
输入上面的命令时,单引号(‘)后的内容变为红色,用于提示输入字符串。输入后面的单引号后颜色变成紫色,提示输入的字符串结束。
在添加标题和坐标轴标注前要先创建图形,否则绘图命令会删除前面已经设置的标注。
命令xlabel,ylabel和title中的字符串一般用单引号结束。在Matlab中也可以使用撇号(如it’s)。输入两个单引号中间可以用撇号隔开,但不能使用双引号。
基本绘图功能
plot
创建一个x-y坐标图
plot(x,y)
title
添加标题
title(‘My Graph’)
xlabel
添加x轴标注
xlabel(‘time’)
ylabel
添加y轴标注
ylabel(‘distance’)
grid
添加栅格
grid,grid on,grid off
pause
暂停程序,观察图形
figure
定义当前图形
figure ,figure(2)
hold
保存图形
hold on/holdoff