文档库 最新最全的文档下载
当前位置:文档库 › matlab讲义

matlab讲义

matlab讲义
matlab讲义

2.3终值及其应用

2.3.1终值的概念

终值是与现值相对的概念,是指当前的一项现金流在未来某个时刻的价值。在求终值问题时应该考虑单利和复利的问题,一般如果没有特别的说明则都是按照复利(离散复利)进行计算。

在复利计息的情况下,当前的现金流PV在利率为r时到第t期期末的终值为:

t

FV)

=

1(+

r

PV

2.3.2终值的计算

在Matlab中,用来计算现金流的终值的函数有fvfix和fvvar两个。同样,-fix函数用来计算规则现金流的终值;而-var函数则用来计算不规则现金流的终值。

【例2.9】一投资者的储蓄账户初始余额为$1500,在随后的10年中,每月末都会收到$200并存入该账户,银行的年利率为9%。试计算其到期时的价值。

通过执行fvfix函数命令:

FutureVal = fvfix(Rate, NumPeriods, Payment, PresentVal, Due)

即可计算出该固定收入现金流的的终值。

变量解释:

Rate:周期性收支的利息率,以小数的形式输入;

NumPeriods:周期性收支的次数;

Payment:每期收支的现金流数额;

PresentVal:初始余额

Due:收支被预定或确定的时间:0表示在期末收支(默认值),1表示在期初收支(任选)。

输入命令:

>>FutureVal = fvfix(0.09/12, 12*10, 200, 1500, 0)

输出结果:

FutureVal =

42379.89

即该现金流到期时的价值为42379.89$。

【例2.10】设某投资者期初投资为$10,000,在随后的5年投资期中每年产生的收入流依次为$2000、$1500、$3000、$3800、$5000,年利率为8%。试计算该现金流到期时的价值。

通过执行fvvar函数命令:

FutureVal = fvvar(CashFlow, Rate, IrrCFDates)

即可求出这个规则(周期性的)现金流的终值。

输入命令:

>>FutureVal = fvvar([-10000 2000 1500 3000 3800 5000], 0.08)

输出结果:

FutureVal =

2520.47

即该现金流到期时的价值为2520.47$。

如果期初投资的$10,000产生的是一个不规则的现金流(如下所示),则计算时要将期初的投资和各个现金流发生的日期也考虑进去。利率为9%。

Cash flowDates

($10000)January 12, 2000

$2500February 14, 2001

$2000March 3, 2001

$3000June 14, 2001

$4000December 1, 2001

同样通过执行fvvar 函数命令:

FutureVal = fvvar(CashFlow, Rate, IrrCFDates)

即可求出这个不规则的(非周期性的)现金流的终值。

输入命令:

>>CashFlow = [-10000, 2500, 2000, 3000, 4000];

IrrCFDates = ['01/12/2000'

'02/14/2001'

'03/03/2001'

'06/14/2001'

'12/01/2001'];

FutureVal = fvvar(CashFlow, 0.09, IrrCFDates)

输出结果:

FutureVal =

170.66

2.4年金及其应用

2.4.1年金的概念及分类

年金是指一系列有稳定规律的、持续一段固定时间的现金收付活动。其特点是在相等时间间隔内发生等额系列支付的现金流。它是一种特殊的(规则的)现金流。

年金是一类常用的金融工具。由于其现金流的规律性而在现实中被广泛应用。如生产经营中发生的折旧、租金、利息、保险金、养老金、分期付款赊购、分期等额偿还贷款、分期等额支付工程款等。其中,最常见的是房屋抵押贷款的支付和养老金的存取问题。

按照收付的次数和时间划分,年金可分为后付年金、预付年金、递延年金、永续年金等。

1、后付年金

后付年金是指各期期末收付的年金,它是经济生活中最常见的一种年金收付形式,因而也称为普通年金。

假设从现在开始到第n 期,每期期末都会收到等额的现金流CF ,利率为r ,则由这一系列的现金流所组成的后付年金的现值为:

r

r CF PVA n

-+-?=)1(1 其复利终值则为:

r

r CF FVA n 1)1(-+?= 2、预付年金

预付年金是指一定时期每期期初发生的等额系列收付款项,又称为即付年金或先付年金。其现值为:

CF r

r CF PVA n ++-?=--)

1()1(1 其终值为:

CF r

r CF FVA n --+?=+1)1(1 3、递延年金

递延年金是指发生在若干期后的等额系列收付款项,第一期到年金收付发生时的时间间隔称为递延期。

其现值有两种求解方法:

方法一:先求出递延期期末的后付年金现值,再按复利现值的求法将其调整到第一期期初。

m

m n r r r CF PVA )1(1])1(1[)(+?+-?=-- 方法二:先根据年金现值公式求出包括递延期在内的总期限的年金现值,再扣除实际并未支付的递延期内的年金现值。

r

r CF r r CF PVA m

n --+-?-+-?=)1(1)1(1 其中,m 为递延期,n 为总的期限,m n -为发生实际支付的期限。

其终值与递延期无关,计算公式与后付年金完全相似,为:

r

r CF FVA m n 1)1(-+?=- 4、永续年金

永续年金是指无期限等额发生的系列收支款项。现实中的存本取息、优先股的股利都可视为永续年金。它没有终值,现值为:

r

CF PVA = 2.4.2各种年金的计算

由于年金是一种特殊的现金流,因此,计算各种年金仍然可以使用相应的计算现金流的现值与终值的Matlab 函数,只是在有的情况下稍微有一点变动。

1、后付年金的现值与终值计算

【例2.11】某企业拟租入一设备,每年年末要支付租金10000元,设银行利率为10%,则5年中租金的现值为多少?

输入命令:

>>PresentVal = pvfix(0.1, 5, 10000, 0, 0)

输出结果:

PresentVal =

3.7908e+004

即5年中租金的现值为37908元。

【例2.12】某人每年年末存入银行2000元,年利率7%,则5年后的本利和是多少? 输入命令:

>>FutureVal = fvfix(0.07, 5, 2000, 0, 0)

FutureVal =

1.1501e+004

即5年后的本利和为11501元。

2、预付年金的现值与终值计算

【例2.13】光华公司租入一台设备,若每年年初支付租金4000元,年利率为8%,则5年中租金的现值为多少?

输入命令:

>>PresentVal = pvfix(0.08, 4, 4000, 0, 0)

输出结果:

PresentVal =

1.3249e+004

继续输入命令:

>> PresentVal+4000

输出结果:

ans =

1.7249e+004

法2:

输入命令:

PresentVal = pvfix(0.08,5, 4000, 0,1)

输出结果:

PresentVal =

1.7249e+004

【例2.14】张先生每年年初存入银行2000元,年利率7%,则5年后的本利和是多少?

输入命令:

FutureVal = fvfix(0.07, 5, 2000, 0, 1)

输出结果:

FutureVal =

1.2307e+004

3、递延年金的现值与终值计算

【例2.15】星怡公司某一开发项目于1991年年初动工,5年后投产,从投产之日起的10年中每年年收益为100000元,按年利率6%计算,该投资项目各年收益的现值总和是多少?方法一:

>>PresentVal = pvfix(0.06, 10, 100000, 0, 0);

PresentVal/(1+0.06)^5

输出结果:

ans =

5.4999e+005

方法二:

输入命令:

>>PresentValn = pvfix(0.06, 15, 100000, 0, 0);

PresentValm = pvfix(0.06, 5, 100000, 0, 0);

PresentValn- PresentValm

或直接输入命令:

>>pvfix(0.06, 15, 100000, 0, 0)- pvfix(0.06, 5, 100000, 0, 0)

输出结果:

ans =

5.4999e+005

【例2.16】星怡公司某一开发项目于1991年年初动工,5年后投产,从投产之日起每年年收益为100000元,按年利率6%计算,投产10年后其收益总和是多少?

输入命令:

>>FutureVal = fvfix(0.06, 10, 100000, 0, 0)

输出结果:

FutureVal =

1.3181e+006

4、永续年金的现值计算(无终值)

【例2.17】某企业持有A公司的优先股6000股,每年可获优先股股利1200元。若利息率为8%,则6000股优先股现在的价值是多少?

其价值即为其历年利息的现值和。

输入命令:

>>PresentVal =1200/0.08

输出结果:

PresentVal =

15000

2.5有效年利率与连续复利

2.5.1有效年利率与连续复利的概念

1、年利率与有效年利率

平常我们常用的利率(也称为收益率)均为年利率,并均假设利息每年仅在年末计算一次,这种年利率我们将其称之为名义年利率(或名义收益率);而实际问题中经常遇到的却不是按年计息,而可能是按月或按季度计息,我们将这种按复利计息得出的年利率称之为有

效年利率(或有效收益率)。

一般情况下,如果一项存款的名义年利率为NR ,则其每年的有效年利率(ER )为: 1)1(-+=m m

NR ER 有效年利率随着m 的增大而增大,但最后趋近于一个常数。

2、连续复利收益率

当上面的有效年利率公式中的∞→m 时,采用的就是按照无限短的时间间隔复利计息,即为连续复利计息问题。连续复利是银行和许多金融机构经常采用的计息方式,广泛应用于金融衍生工具的定价计算中。

对上面ER 的表达式取极限后即得到连续复利下的有效年利率为1-NR e 。

设银行的年利率为r ,则现金流0CF 在连续复利情况下在第T 年年末的终值T CF 为:

rT T e CF CF 0=

而在单个时点t 上收支的现金流的现值为:

rt t t

PV CFe -= n 个不同时点收支的现金流的现值总和为:

1n

rt t t PV CF e -==∑

2.5.2有效年利率与连续复利的计算

在Matlab 中,可用来计算名义年利率和有效年利率的是nomrr 和 effrr 函数。

【例2.28】计算年利率为9%,每月付息一次的有效年利率。

通过执行effrr 函数命令:

Return = effrr(Rate, NumPeriods)

即可得出有效年利率。

输入命令:

>>Return = effrr(0.09, 12)

输出结果:

Return =

0.0938 或 9.38%

【例2.29】已知有效年利率为9.38%,每月付息一次,试计算其名义收益率。

通过执行nomrr 函数命令:

Return = nomrr(Rate, NumPeriods)

即可得出要求的名义收益率。

输入命令:

>>Return = nomrr(0.0938, 12)

输出结果:

Return =

0.0900 (9.0%)

【例2.30】已知名义年利率为9%,试计算其连续复利的有效年利率。

输入命令:

>>Return =exp( 0.09)-1

则得结果为:

Return =0.0942(9.42%).

【例2.31】假设年初存入银行1000元,银行年利率为6%,试分别在年计息次数为2和连续复利的情况下,计算出期末余额。

首先计算出年计息次数为2的期末余额:

法1:输入命令:

1000*(1+0.03)^2

结果为:

ans =

1.0609e+003

法2:在非连续复利情况下,仍可利用计算现金流终值的Matlab函数fvfix来计算。

fvfix(Rate, NumPeriods, Payment, PresentVal, Due)

输入命令:

>>FutureVal = fvfix(0.06/2, 2, 0, 1000, 0)

结果为:

FutureVal =

1.0609e+003

法3:

输入命令:

>>FutureVal = fvfix(0.06/2, 2, 0, 1000, 1)

FutureVal =

1.0609e+003

(每期现金流为0,所以期初期末效果一样)

又输入命令:

>>R=1000*exp(0.06) %计算连续复利情况下的终值

输出结果为:

R =

1.0618e+003

下面则是一个用连续复利计算现值的例子。

【例2.32】某投资项目预计未来4年的现金流入依次为200元、300元、500元、100元,年利率为6%,试求其利用连续复利进行折现后的现值。

输入命令:

>> A=[200 300 500 100];

B=exp(-0.06*[1 2 3 4])';

PresentVal =A*B

输出结果:

PresentVal =

950.7269

2.6投资项目决策分析

投资项目决策是公司理财中经常碰到的问题。公司财务经理常常面临着是否对一个新项目进行投资或者是否对已有的设备进行更新的决策问题。对投资项目进行决策的方法常用的有净现值法(NPV )、内部收益率法(IRR )及回收期法等一系列方法。净现值法在上节中已作过介绍,本节将着重介绍内部收益率法。

2.6.1内部收益率法的概念

内部收益率(Internal Rate of Return ,IRR )是指使该投资项目的净现值为零的复利利率。它反映了投资项目的真实收益率水平,是对投资项目进行决策所常用的方法之一。 内部收益率可以用公式表示为:

0)1(10=++∑=n t t t r CF CF

式中t CF 为0,1,…,n 期的各期现金流,满足上式的r 即为该项目的内部收益率。

进行投资决策时,若求出的内部收益率大于贴现率(资金的成本),则可以投资该项目; 若求出的内部收益率小于贴现率,则不能投资该项目;若求出的内部收益率等于贴现率,则可以投资该项目,也可以投资其它项目。

贴现率可以说是外部收益率,受市场利率的影响,而内部收益率不受市场利率的影响。

2.6.2内部收益率的计算

【例2.33】已知某投资项目的初始投资额为100,000元,在未来的5年内将依次获得10,000、20,000、30,000、40,000、50,000元的现金流入,假设贴现率为10%,那么该投资项目是否可行?

通过执行irr 函数命令:

Return = irr(CashFlow)

即可得出要求的内部收益率。

输入命令:

>>Return = irr([-100000 10000 20000 30000 40000 50000])

输出结果:

Return =

0.1201 (12.01%)

求出的该投资项目的内部收益率为12.01%,大于贴现率10%,故按照内部收益率法的原则可以投资该项目。

注意:这里将项目的初始投资额作为现金流向量的第一个元素,并且是作为一个负现金流来处理的。实际上,在Matlab 中,一般是将投资视为负现金流,而收益则视为正现金流来一同进行处理的。

以上初始投资所产生的现金流为周期性的,各期之间的时间间隔相同。当初始投资所产生的现金流为不具有周期性,即各期之间的时间间隔不同时,就要用xirr 函数来计算其内部收益率。

【例2.34】以下的非周期性的现金流是由一项10,000元的投资产生的,初始投资及其日期被包含在内:

Cash flowDates

(10000)January 12, 2000

2500February 14, 2001

2000March 3, 2001

3000June 14, 2001

4000December 1, 2001

假设投资的贴现率为11%,那么该投资项目是否可行?

通过执行xirr函数命令:

Return = xirr(CashFlow, CashFlowDates, Guess, MaxIterations)

即可得出这个非周期性的现金流的内部收益率。

上述命令中,Guess是任选的,表示对最初的期望收益率的估计,默认值为0.1 (10%);MaxIterations也是任选的,表示利用牛顿迭代法(Newton's method)来求内部收益率时所需进行迭代的次数,默认值=50。

输入命令:

>>CashFlow = [-10000, 2500, 2000, 3000, 4000];

CashFlowDates = ['01/12/2000'

'02/14/2001'

'03/03/2001'

'06/14/2001'

'12/01/2001'];

Return = xirr(CashFlow, CashFlowDates)

输出结果:

Return =

0.1009 (或10.09%)

求出的该投资项目的内部收益率为10.09%,小于贴现率11%,故按照内部收益率法的原则不能投资该项目。

如果考虑到初始投资的时间价值及各期现金流的再投资问题,就要对内部收益率进行修正,以更好地反映真实的收益率状况,利用mirr函数可以计算经过修正的内部收益率。【例2.35】以下的现金流来自于一个初始投资为$100,000的年收入,金融利率为9%,再投资利率为12%:

Year 1$20,000

Year 2($10,000)

Year 3$30,000

Year 4$38,000

Year 5$50,000

试计算这项投资的修正的内部收益率。

通过执行mirr函数命令:

Return = mirr(CashFlow, FinRate, Reinvest)

即可得出要求的修正的内部收益率。

上述命令中,CashFlow表示现金流向量,其第一个元素为初始投资额(负值);FinRate 表示适用于负现金流的金融利率,以小数的形式输入;正现金流的再投资利率,也以小数的形式输入。

输入命令:

>>Return = mirr([-100000 20000 -10000 30000 38000 50000], 0.09, 0.12)

输出结果:

Return =

0.0832 (8.32%)

我们还可以用计算出来的内部收益率作为折现率来计算现金流的净现值,以作为对这种计算的一种检验。因为在计算内部收益率时,其现金流的净现值应当为零。输入命令:

NPV = pvvar(Stream, IRR)

则得到的答案(净现值)应当为零。

例如,按照上面【例2.33】给出的数据,输入命令:

>>PresentVal = pvvar([-100000 10000 20000 30000 40000 50000] ,0.1201)

输出结果:

PresentVal =

-13.1794

这个结果相对于原始数据来说,已经非常接近于零。这个答案之所以通常不准确地等于零,是由于四舍五入的误差以及计算机的计算准确性不完全的原因,但是在实际应用中这个误差是可以忽略不计的。

matlab的RBF-BP神经网络讲义

matlab的RBF BP神经网络讲义 一、RBF神经网络 1985年,Powell提出了多变量插值的径向基函数(Radical Basis Function,RBF)方法, 1988年,Moody和Darken提出了一种神经网络结构,即RBF神经网络。 RBF网络是一种三层前向网络,其基本思想是:(1)用RBF作为隐单元的“基”构成隐含层空间,将输入矢量直接(即不需要通过权连接)映射到隐空间(2)当RBF的中心点确定后,映射关系也就确定(3)隐含层空间到输出空间的映射是线性的。 newrb()函数 功能 建立一个径向基神经网络 格式 net = newrb(P,T,GOAL,SPREAD,MN,DF) 说明 P为输入向量,T为目标向量,GOAL为圴方误差,默认为0,SPREAD为径向基函数的分布密度,默认为1,MN为神经元的最大数目,DF为两次显示之间所添加的神经元神经元数目。 例子: 设[P,T]是训练样本,[X,Y]是测试样本; net=newrb(P,T,err_goal,spread); %建立网络 q=sim(net,p); e=q-T; plot(p,q); %画训练误差曲线 q=sim(net,X); e=q-Y; plot(X,q); %画测试误差曲线 二、BP神经网络 训练前馈网络的第一步是建立网络对象。函数newff()建立一个可训练的前馈网络。这需要4个输入参数。 第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。 第二个参数是一个设定每层神经元个数的数组。 第三个参数是包含每层用到的传递函数名称的细胞数组。 最后一个参数是用到的训练函数的名称。 举个例子,下面命令将创建一个二层网络。它的输入是两个元素的向量,第一层有三个神经元(3),第二层有一个神经元(1)。 第一层的传递函数是tan-sigmoid,输出层的传递函数是linear。 输入向量的第一个元素的范围是-1到2[-1 2],输入向量的第二个元素的范围是0到5[0 5],训练函数是traingd。 net=newff([-1 2; 0 5],[3,1],{'tansig','purelin'},'traingd'); 这个命令建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进行训练了。 我们可能要多次重新初始化权重或者进行自定义的初始化。 下面就是初始化的详细步骤。 在训练前馈网络之前,权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实

MatLab讲义

2011年数学中国国赛培训讲座 Matlab的基础及数学建模中的应用 周吕文:zhou.lv.wen@https://www.wendangku.net/doc/ad5771792.html, 大连大学数学建模工作室&中国科学院力学研究所 2011年7月

第一部分 MatLab基础 1 简单介绍 MATLAB是Matrix Laboratory“矩阵实验室”的缩写。MatLab语言是由美国的Clever Moler博士于1980年开发的,初衷是为解决“线性代数”课程的矩阵运算问题。1984年由美国 MathWorks公司推向市场,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。 在数学建模竞赛中,由于只有短短的三到四天,而论文的评判不仅注重计算的结果更注重模型的创造性等很多方面,因此比赛中把大量的时间花费在编写和调试程序上只会喧宾夺主,是很不值得的。使用MATLAB 可以很大程度上的方便计算、节省时间,使我们将精力更多的放在模型的完善上,所以是较为理想的。 这里快速的介绍一下MATLAB与数学建模相关的基础知识,并列举一些简单的例子,很多例子都是源于国内外的数学建模赛题。希望能帮助同学们在短时间内方便、快捷的使用MATLAB 解决数学建模中的问题。当然要想学好MatLab更多的依赖自主学习,一个很好的学习MatLab的方法是查看MatLab的帮助文档: z如果你知道一个函数名,想了解它的用法,你可以用'help'命令得到它的帮助文档:>>help functionname z如果你了解含某个关键词的函数,你可以用'lookfor'命令得到相关的函数: 2 基本命令与函数 基本运算 z变量的赋值 实数赋值>> x=5; 复数赋值>> x=5+10j; (或>>x=5+10i) z向量的一般值方法 行向量赋值:>>x=[1 2 3]; (或x=[1, 2 ,3]) 列向量赋值:>>y=[1;2;3]; 矩阵的赋值:>>x=[1 2 3; 4 5 6; 7 8 9]; z常用矩阵(zeros ones eye) n行m列0矩阵:>>x=zeros(n,m); n行m列1矩阵:>>x=ones(n,m); n 阶的单位阵:>>y=eye(n); z矩阵行列操作 >> A=[1 2 3;4 5 6;7 8 9] A= 1 2 3 4 5 6 7 8 9 >>x=A(1,3) %取第一行的第三列元素 x= 3

天津大学matlab讲义-应用基础第一章

MATLAB应用基础 赵国瑞 天津大学电子信息工程学院 计算机基础教学部 2000.3 制作

概述 MATLAB是世界流行的优秀科技应用软件之一。具有功能强大(数值计算、符号计算、图形生成、文本处理及多种专业工具箱)、界面友好,可二次开发等特点。 自1984年由美国MathWorks公司推向市场以来,先后发布了多个版本,1993年发布4.0版,1996年发布5.0版,1999年发布5.3版。目前发布的为6.5版。 MATLAB有专业和学生版之分。二者功能相同,但计算规模和计算难度有差别。 在国内外,已有许多高等院校把MATLAB列为本科生、研究生必须掌握的基本技能。我校自1999年列为研究生选修课程。而且有很多教师、研究生把它作为进行科研的重要工具。 国内关于MATLAB的书籍很多,如: 《精通MATLAB 5.3》张志涌等编著北京航空航天大学出版社,2000.8 《科学计算语言MATLAB简明教程》杜藏等编著南开大学出版社,1999.6 《精通MATLAB 5》张宜华编写清华大学出版社,1999.6 《精通MATLAB--综合辅导与指南》 Duane Hanselman、Bruce Littlefield编著李人厚等译较西安交通大学出版社,1998.1 等等 本课程主要介绍MATLAB 5.3的基本功能和基础知识。至于其包含的多种工具箱,如仿真工具箱、解非线性方程(组)工具箱、优化工具箱等,应通过本学习后,结合各专业自己进一步学习和使用。 第1章MATLAB基础 1.1 源文件(M-文件) 分为两类:函数文件和非函数文件。 都用扩展名.M 1.1.1函数文件 格式1(无返回值函数) function函数名(输入表) %称为函数头 函数体 例如: function box(opt_box); %BOX Axis box. % BOX ON adds a box to the current axes. % BOX OFF takes if off. % BOX, by itself, toggles the box state. % % BOX sets the Box property of the current axes. % % See also GRID, AXES. % Copyright (c) 1984-98 by The MathWorks, Inc. % $Revision: 1.5 $ $Date: 1997/11/21 23:32:59 $

MATLAB讲义

第一章基础准备及入门 什么是MATLAB? MATLAB是MathWorks公司于1984年推出的数学软件,是一种用于科学工程计算的高效率的高级语言。MATLAB最初作为矩阵实验室(Matrix Laboratory),主要向用户提供一套非常完善的矩阵运算命令。随着数值运算的演变,它逐渐发展成为各种系统仿真、数字信号处理、科学可是化的通用标准语言。 在科学研究和工程应用的过程中,往往需要大量的数学计算,传统的纸笔和计算机已经不能从根本上满足海量计算的要求,一些技术人员尝试使用Basic,Fortran,C\C++等语言编写程序来减轻工作量。但编程不仅需要掌握所用语言的语法,还需要对相关算法进行深入分析,这对大多数科学工作者而言有一定的难度。与这些语言相比, MATLAB的语法更简单,更贴近人的思维方式。用MATLAB编写程序,犹如在一张演算纸上排列公式和求解问题一样高效率,因此被称为“科学便笺式”的科学工程计算语言。 MATLAB由主包和功能各异的工具箱组成,其基本数据结构是矩阵。正如其名“矩阵实验室”,MATLAB起初主要是用来进行矩阵运算。经过MathWorks 公司的不断完善,时至今日,MATLAB已经发展成为适合多学科、多工作平台的功能强大的大型软件。 本章有两个目的:一是讲述MATLAB正常运行所必须具备的基础条件;二是简明系统地介绍高度集成的Desktop操作桌面的功能和使用方法。 本章的前两节分别讲述:MATLAB的正确安装方法和MATLAB 环境的启动。因为指令窗是MATLAB最重要的操作界面,所以本章用第 1.3、1.4 两节以最简单通俗的叙述、算例讲述指令窗的基本操作方法和规则。这部分内容几乎对MATLAB各种版本都适用。 MATLAB6.x 不同于其前版本的最突出之处是:向用户提供前所未有的、成系列的交互式工作界面。了解、熟悉和掌握这些交互界面的基本功能和操作方法,将使新老用户能事半功倍地利用MATLAB去完成各种学习和研究。为此,本章特设几节用于专门介绍最常用的交互界面:历史指令窗、当前目录浏览器、工作空间浏览器、内存数组编辑器、交互界面分类目录窗、M文件编辑/调试器、及帮助导航/浏览器。 本章是根据MATLAB6.5版编写的,但大部分内容也适用于其他6.x版。 1.1M ATLAB的安装和内容选择

MATLAB软件基础知识讲义(doc 74页)

MATLAB软件基础 §1MATLAB 概述 MATLAB 是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。 20世纪80年代初期,Cleve Moler与John Little等利用C语言开发了新一代的MATLAB语言,此时的MATLAB语言已同时具备了数值计算功能和简单的图形处理功能。1984年,Cleve Moler与John Little等正式成立了Mathworks公司,把MA TLAB 语言推向市场,并开始了对MATLAB工具箱等的开发设计。1993年,Mathworks公司推出了基于个人计算机的MATLAB 4.0版本,到了1997年又推出了MATLAB 5.X版本(Release 11),并在2000年又推出了最新的MATLAB 6版本(Release 12)。 现在,MATLAB已经发展成为适合多学科的大型软件,在世界各高校,MATLAB已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本教学工具。特别是最近几年,MATLAB在我国大学生数学

建模竞赛中的应用,为参赛者在有限的时间内准确、有效的解决问题提供了有力的保证。 概括地讲,整个MATLAB系统由两部分组成,即MATLAB 内核及辅助工具箱,两者的调用构成了MATLAB的强大功能。MATLAB语言以数组为基本数据单位,包括控制流语句、函数、数据结构、输入输出及面向对象等特点的高级语言,它具有以下主要特点: 1)运算符和库函数极其丰富,语言简洁,编程效率高,MATLAB 除了提供和C语言一样的运算符号外,还提供广泛的矩阵和向量运算符。利用其运算符号和库函数可使其程序相当简短,两三行语句就可实现几十行甚至几百行C或FORTRAN的程序功能。 2)既具有结构化的控制语句(如for循环、while循环、break 语句、if语句和switch语句),又有面向对象的编程特性。 3)图形功能强大。它既包括对二维和三维数据可视化、图像处理、动画制作等高层次的绘图命令,也包括可以修改图形及编制完整图形界面的、低层次的绘图命令。 4)功能强大的工具箱。工具箱可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图

Matlab基础知识点汇总

MATLAB讲义 第一章 MATLAB系统概述 1.1 MATLAB系统概述 MATLAB(MATrix LABoratory)矩阵实验室的缩写,全部用C语言编写。 特点: (1)以复数矩阵作为基本编程单元,矩阵运算如同其它高级语言中的语言变量操作一样方便,而且矩阵无需定义即可采用。 (2)语句书写简单。 (3)语句功能强大。 (4)有丰富的图形功能。如plot,plot3语句等。 (5)提供了许多面向应用问题求解的工具箱函数。目前,有20多个工具箱函数,如信号处理、图像处理、控制系统、系统识别、最优化、神经网络的模糊系统等。 (6)易扩充。 1.2 MATLAB系统组成 (1)MATLAB语言 MATLAB语言是高级的矩阵、矢量语言,具有控制流向语句、函数、数据结构、输入输出等功能。同时MATLAB又具有面向对象编程特色。MATLAB语言包括运算符和特殊字符、编程语言结构、字符串、文件输入/输出、时间和日期、数据类型和结构等部分。 (2)开发环境 MATLAB开发环境有一系列的工具和功能体,其部分具有图形用户界面,包括MATLAB桌面、命令窗口、命令历史窗口、帮助游览器、工作空间、文件和搜索路径等。 (3)图形处理 图形处理包括二维、三维数据可视化,图像处理、模拟、图形表示等图形命令。还包括低级的图形命令,供用户自由制作、控制图形特性之用。 (4)数学函数库 有求和、正弦、余弦等基本函数到矩阵求逆、求矩阵特征值和特征矢量等。 MATLAB数学函数库可分为基本矩阵和操作、基本数学函数、特殊化数学函数、线性矩阵函数、数学分析和付里叶变换、多项式和二重函数等。 (5)MATLAB应用程序接口(API) MATLAB程序可以和C/C++语言及FORTRAN程序结合起来,可将以前编写的C/C++、FORTRAN语言程序移植到MATLAB中。 1.3 MATLAB的应用围包括: MATLAB的典型应用包括: ●数学计算 ●算法开发 ●建模、仿真和演算 ●数据分析和可视化 ●科学与工程绘图 ●应用开发(包括建立图形用户界面) 以矩阵为基本对象 第二章 Matlab基础

Matlab基础教程

1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2);

若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开

matlab讲义要点

前期知识:高等数学,机械原理,液压传动,控制原理 学习目标:了解基本原理、掌握基本应用、熟练使用matlab 、精通机械工程的建模和仿真 本课计划:课堂学习、课后练习、 任务:要看课堂笔记 引例:斐波纳西数列的递推公式为)2()1()(--+=n n n F F F ,通项表达式是什么? 高等数学上册第48页。斐波纳西数列在优化设计和股票分析中有用处。 第1章 了解Matlab 本章要求:了解Matlab 的功能、组成 第1节 Matlab 的界面 1.命令窗口:输入命令和显示运行结果和寻求帮助的窗口。 第1个例子求不定积分 问题:在编写代码时不能输入或者不能显示汉字 解决办法:将use custom font 换成use desktop font

先定义一个符号变量x syms x 设2 11 )(x x f += 求不定积分 ?dx x f )( matlab 求解:int(1/(1+x .^2)) 详见l1_bdjf.m 最重要的问题一:工作路径 查看当前工作路径的命令是 pwd matlab 默认的路径为安装好的目录下work ,为了需要我们需要改换路径。 改换路径的方法有:(1)采用DOS 命令 mkdir('根目录名称','新目录名称') 例:mkdir('d:\','mywork') 如果d 盘下没有mywork 即创建,如有就会给出警告。 进入新建文件夹 cd d:\mywork (2)采用matlab 命令 editpath ,pathtool (3)通过matlab 界面 [file]菜单->set path 难点:我想将打开MATLAB 时的默认工作路径改为F:\Program\MATLAB\WorkSpace\ ,只需要在原来的默认路径(bin)下创建一个名为startup.m 的文件,内容为相对路径 cd ..\..\WorkSpace\ 或绝对路径 cd F:\Program\MATLAB\WorkSpace\ 即可。再次打开MA TLAB 时便会自动执行startup.m 文件,将工作路径转至WorkSpace 下。 最重要的问题二:工作路径设置不能设置在有汉字的目录下或汉字文件夹,不支持汉字运算。 汉字用的是Unicode 编码一个字符占两个字节,字母用的是ASC Ⅱ编码,一个字母占一个字节。到2008版才能处理汉字。 初学者容易出现的错误就是把别人的程序拷在带汉字的文件夹下,运行出现错误。 如果我们已知某个文件名,但忘了在哪个文件夹下,可以用which 命令如which FUN what 命令:M-files in the current directory 思考题:what 和dir 的区别? 2.工作空间:显示数据的变量信息,包括变量名、字节大小、变量类型等。 输入 load wind 和load cities 加载了后缀为mat 的wind 和cities 数据文件 在命令窗口输入who 就可以列出空间的变量 在命令窗口输入whos 可以列出名称、大小和类型 whos -file 文件名.mat 可以查看加载前的数据信息。 3.历史记录: 显示所有在命令窗口输入的执行过的命令,清除历史的方法有两种

matlab讲义

2.3终值及其应用 2.3.1终值的概念 终值是与现值相对的概念,是指当前的一项现金流在未来某个时刻的价值。在求终值问题时应该考虑单利和复利的问题,一般如果没有特别的说明则都是按照复利(离散复利)进行计算。 在复利计息的情况下,当前的现金流PV在利率为r时到第t期期末的终值为: t FV) = 1(+ r PV 2.3.2终值的计算 在Matlab中,用来计算现金流的终值的函数有fvfix和fvvar两个。同样,-fix函数用来计算规则现金流的终值;而-var函数则用来计算不规则现金流的终值。 【例2.9】一投资者的储蓄账户初始余额为$1500,在随后的10年中,每月末都会收到$200并存入该账户,银行的年利率为9%。试计算其到期时的价值。 通过执行fvfix函数命令: FutureVal = fvfix(Rate, NumPeriods, Payment, PresentVal, Due) 即可计算出该固定收入现金流的的终值。 变量解释: Rate:周期性收支的利息率,以小数的形式输入; NumPeriods:周期性收支的次数; Payment:每期收支的现金流数额; PresentVal:初始余额 Due:收支被预定或确定的时间:0表示在期末收支(默认值),1表示在期初收支(任选)。 输入命令: >>FutureVal = fvfix(0.09/12, 12*10, 200, 1500, 0) 输出结果: FutureVal = 42379.89 即该现金流到期时的价值为42379.89$。 【例2.10】设某投资者期初投资为$10,000,在随后的5年投资期中每年产生的收入流依次为$2000、$1500、$3000、$3800、$5000,年利率为8%。试计算该现金流到期时的价值。 通过执行fvvar函数命令: FutureVal = fvvar(CashFlow, Rate, IrrCFDates) 即可求出这个规则(周期性的)现金流的终值。 输入命令: >>FutureVal = fvvar([-10000 2000 1500 3000 3800 5000], 0.08) 输出结果: FutureVal = 2520.47 即该现金流到期时的价值为2520.47$。 如果期初投资的$10,000产生的是一个不规则的现金流(如下所示),则计算时要将期初的投资和各个现金流发生的日期也考虑进去。利率为9%。

天津大学matlab讲义-应用基础第二章

第2章MATLAB程序设计 MATLAB语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。 由于 MATLAB开始是用FORTRAN语言编写、后来用 C语言重写的,故其既有FORTRAN的特征,又在许多语言规则方面与C语言相同。 2.1 顺序结构语句 在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。 2.1.1 表达式语句 格式: 表达式,%显示表达式值 表达式;%不显示表达式值 表达式%显示表达式值 如: x + y, sin(x); –5 最后的表达式值暂保存在变量ans中。 2.1.2 赋值语句 格式: v =表达式,%结果送v并显示v v =表达式;%结果送v不显示v v =表达式%结果送v并显示v 2.1.3 空语句 格式:

, ; 2.1.4 输入语句 1、input语句(实际上是函数) 格式1: input(提示字符串) 功能: 显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式 格式2: input(提示字符串,'s') 功能: 显示提示字符串,并把输入视为字符串 2、yesinput语句 格式: yesinput(提示字符串,缺省值,值范围) 功能: 显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B并等待用户重新输入。 如: t=yesinput('指定线的颜色',… 'red','red|blue|green') 运行结果如下: 指定线的颜色(red):yellow %不在值内 指定线的颜色(red):blue %重输 t = blue x=yesinput('输入元素个数',10,[1,20]) 运行结果如下: 输入元素个数(10): x = 10 3、Keyboard语句 格式: Keyboard 功能: 暂停M-文件的执行,并等待用户从键盘输入命令以查看或改变变量的值,直到输入return命令而返回相应的M-文件继续执行。本语句用于调试M-文件。 4、pause语句 格式1: pause 功能:暂停,敲下任一键继续 格式2: pause(n)

matlab串口通信基础讲义

matlab串口通信基础讲义 ①支持基于串行接口(RS-232、RS-422、RS-485)、GPIB总线(IEEE2488、HPIB标准)、VISA总线的通信; ②通信数据支持二进制和文本(ASCII)两种方式,文本方式支持SCPI(Standard Commands for Programmable Instruments)语言; ③支持异步通信和同步通信; ④支持基于事件驱动的通信。 从以上的Matlab设备控制工具箱的特点可以看到,Matlab完全可以满足我们实现串行通信的要求。 3.1 Matlab对串行口控制的基础知识 Matlab对串行口的编程控制主要分为四个步骤。 ①创建串口设备对象并设置其属性。 scom=serial('com1');%创建串口1的设备对象scom scom.Terminator='CR';%设置终止符为CR(回车符),缺省为LF(换行符) scom.InputBufferSize=1024;%输入缓冲区为256B,缺省值为512B scom.OutputBufferSize=1024;%输出缓冲区为256B,缺省值为512B scom.Timeout=0.5;%Y设置一次读或写操作的最大完成时间为0.5s,缺省值为10s s.ReadAsyncMode='continuous'(缺省方式);%在异步通信模式方式下,读取串口数据采用连续接收数据(continuous)的缺省方式,那么下位机返回的数据会自动地存入输入缓冲区中. 注意:在些属性只有在对象没有被打开时才能改变其值,如InputBufferSize、OutputBufferSize属性等。对于一个RS-232/RS-422/RS-485串口设备对象,其属性的缺省值为波特率9 600b/s,异步方式,通信数据格式为8位数据位,无奇偶校验位,1位停止位。如果要设置的串口设置对象的属性值与缺省值的属性值相同,用户可以不用另行设置。 另外,设置串口设置对象的属性也可以用一条指令完成,如:scom=serial('COM1','BaudRate',38400,'Parity','none','DataBits',8,'StopBits',1)。也可以用set命令,如set(scom,'BaudRate',19200,'Parity','even')。创建了对象后可以在Matlab命令窗口直接敲对象名并回车,看到其基本属性和当前状态。若需要知道其全部的属性,可以用get(scom)命令。

基于MATLAB的时序逻辑电路设计与仿真上课讲义

基于M A T L A B的时序逻辑电路设计与仿真

课程设计任务书 学生姓名:田鑫专业班级:电子科学与技术 0703 班 指导教师:钟毅工作单位:信息工程学院 题目: 基于MATLAB的时序逻辑电路设计与仿真 初始条件: MATLAB 软件微机 要求完成的主要任务: 深入研究和掌握数字电路中时序逻辑电路的理论知识。利用MATLAB强大的图形处理功能、符号运算功能和数值计算功能,实现时序逻辑电路的设计和仿真。 一、以寄存器为例仿真下列波形 并行寄存器输出波形(以基本RS触发器构造); 移位寄存器输出波形(用D触发器构造) 二、以双向移位寄存器为例实现子系统的设计和封装并仿真下列波形 4位双向移位寄存器并行输出波形; 4位双向移位寄存器串行右移输出波形; 4位双向移位寄存器串行左移输出波形 三、以扭环计数器为例仿真下列波形 扭环计数器的输出波形(以JK触发器实现) 时间安排:

学习MATLAB语言的概况第1天 学习MATLAB语言的基本知识第2、3天 学习MATLAB语言的应用环境,调试命令,绘图能力第4、5天 课程设计第6-9天 答辩第10天 指导教师签名: 年月日 系主任(或责任教师)签名:年月日

目录 摘要 (4) Abstract (4) 绪论 (1) 1M A T L A B简介 (2) 1.1 MATLAB程序设计 (2) 1.2M A T L A B的特点 (2) 1.3MATLAB程序设计 (2) 1.4 M文件 (2) 1.5 SIMULINK仿真设计 (3) 1.5.1创建和使用模型 (3) 1.5.2选择和定制模块 (3) 1.5.3建立和编辑模型 (4) 1.5.4配置子系统 (4) 1.5.5条件执行子系统 (4) 2时序逻辑电路设计 (5) 2.1锁存器和触发器 (5) 2.1.1双稳态 (5)

讲义2 Matlab基本语句

讲义2 Matlab基本语句 一. 程序控制语句 1. 循环语句 MATLAB的循环语句包括for循环和while循环两种类型。 1)for循环 语法格式: for 循环变量 = 起始值:步长:终止值 循环体 end 起始值和终止值为一整形数,步长可以为整数或小数,省略步长时,默认步长为1。执行for循环时,判定循环变量的值是否大于(步长为负时则判定是否小于)终止值,不大于(步长为负时则小于)则执行循环体,执行完毕后加上步长,大于(步长为负时则小于)终止值后退出循环。 例1给矩阵A、B赋值。 MATLAB 语句及运行结果如下: k=5; a=zeros(k, k) %矩阵赋零初值 for m=1 : k for n=1: k a(m,n)=1/(m+n-1) end end for i=m : -1 : 1 b(i)=i end 运行结果: a= 1.0000 0.5000 0.3333 0.2500?0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429

0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 b= 1 2 3 4 5 2) while循环 语法格式: while 表达式 循环体 end 其执行方式为:若表达式为真(运算值非0),则执行循环体;若表达式为假(运算结果为0),则退出循环体,执行end后的语句。 例2 a=3; while a a=a-1 end 输出: a=2 a=1 a=0 2. 条件转移语句 条件转移语句有if和switch两种。 1) if语句 MATLAB中if语句的用法与其他高级语言相类似,其基本语法格式有以下几种: 格式一: if 逻辑表达式 执行语句 end

相关文档