文档库 最新最全的文档下载
当前位置:文档库 › 算法

算法

算法
算法

一、 实验数据的预处理

对于本研究中想象运动思维脑电信号而言,其信号特征提取具有相当大的难度,主要原因是:首先,在头皮上记录到的思维脑电本身非常微弱,幅度一般只有50μV 左右,最小甚至10μV ,最大仅100μV ,频率范围为1-30Hz ,如图6;其次,思维脑电始终淹没在比较强的背景噪声(自发脑电、肌电及50Hz 工频干扰等)之中;此外,脑电信号节律易受意识状态、外界刺激和精神活动变化的影响;最后,思维脑电本身具有非线性特点使得其特征表现更加不明显等,这些都给脑电信号的提取带来很大的困难。若要对脑电信号进行特征提取,首先要对脑电信号进行预处理,包括去除参考电极的影响,去除眼电、肌电伪迹,滤波,基线矫正,信号的分段及叠加平均等。 0100200300400500600700800

450500

550

600

650

700

图6 想象左右手运动思维脑电信号

1. 采用公共平均参考法(CAR)去除参考电极的影响

本文拟采用公共平均参考法(CAR)去除参考电极的影响。其具体思想可用下面的公式描述:

'

1()()(1/)()N

k

k i i x t x t N x t ==-∑ (1) 这里, ()k x t 为第k 通道信号,'()k x t 为换算成公共参数去除信息相关性的第k 通

道信号。研究表明:多导电极的信息存在相关性,空间滤波可以去除这种相关性。

但是本研究中,只使用了7个导联电极采集脑电信号,将此信号通过0~40Hz 的低通滤波器,滤去高频和低频的干扰成分,保留与思维脑电相关的频带特征信号即可。

2. 采用ICA 滤除眼电和肌电干扰

独立分量分析(ICA)理论最初是由Comon 提出,且在近年来发展起来的一种新的盲源分离方法(BSS)。它以随机变量的非高斯性和相互独立性为分析目标,最终是为了从多通道观测数据中分离出相互独立的信源,在脑电信号的处理中获得了很好的效果。

ICA 处理的对象是:相互统计独立的信号源经线性组合而产生的一组混合信号。最终目的是:从混合信号中提取出各独立的信号分量。

ICA 是一种对观测信号12()[(),(),,()]N t X t X t X t =X 进行统计学分析,从而

求得其中所包含的各个独立源信号12()[(),(),

,()]N t S t S t S t =S 的信号处理技术。在ICA 模型

=X A S (2)

中,观测信号()t X 由源信号()t S 和混合矩阵A 线性混合而成。ICA 算法的目的旨在混合矩阵A 和()t S 源信号均未知的情况下利用已知观测信号()t X 求得源信号()t S ,应用上式的先决条件是:

① 各个独立分量()t S 必须是统计独立的;

② 各个独立分量应该具有非高斯分布。

这样,在估算出混合矩阵A 后,便可以利用它的逆矩阵W ,由下式

S =W X (3) 分离出观测信号()t X 中包含的源信号()t S 。

ICA 理论和算法的研究已受到国际信号处理界的广泛关注,并且在生物医学信号处理、混合语音信号分离、脑电信号的消噪(工频干扰等)等方面也已取得了较好的应用效果。

3. 自适应维纳滤波

本文拟采用自适应维纳滤波器实现把脑电信号从噪声信号和干扰信号中提

取出来。

脑电信号处理的目的是要提取包含在随机信号中的确定成分,并探求它与生理、病理、思维任务的关系,为医学决策提供一定的依据。需要寻找一种最佳线性滤波器,当信号和干扰以及随机噪声同时输入该滤波器时,在输出端能将信号尽可能精确地表现出来。

维纳滤波就是用来解决这样一类问题的方法:从噪声中提取出有用的信号。实际上,这种线性滤波方法也被看成是一种估计问题或者线性预测问题。维纳滤

波是以最小均方误差为准则的,即22?(()][()]E e n E s s

=-为最小。s 是信号真值,?s

是信号估计值,如图7所示。 h (n )x (n )=s (n )+w (n )y (n )=s (n )

图7 维纳滤波器的输入输出关系

维纳滤波器在频域传递函数为:

()()()()

n s n s n Y S H X S S ωωωω==+ (4) 其中,()s S ω代表信号的功率谱密度,()n S ω代表噪声的功率谱密度。

根据上述传递函数知道:维纳滤波的实现是以信号和噪声的相关函数或功率谱已有先验知识为前提的。因此,要设计维纳滤波器必须知道观测信号和估计信号之间的相关函数,即先验知识。如果不知道它们之间的相关函数,就必须先对它们的统计特性做估计,然后才能设计出维纳滤波器,这样设计出的滤波器被称为“后验维纳滤波器”。目前实际采用的是后验维纳滤波,即首先累加平均一定次数的脑电信号,从而对噪声和信号的功率谱作出估计,再设计维纳滤波器,进行滤波处理。

目前对维纳滤波器的改进已经有多种,目前已有学者设计出适应于非平稳信号的自适应维纳滤波器,该滤波器能用于诱发脑电信号的少次或单次提取。本课题拟采用该种滤波器实现对不同运动想象的脑电信号的滤波,为以后BCI 系统的实时实验提供方便。

二、 数据的特征提取

在确定了不同运动想象思维任务最佳导联位置与个数以后,采用设计的实验模式实现对脑电信号的采集,然后经过预处理后得到干净的脑电信号,以实现对脑电信号提取有效的特征量。

脑电信号的分析包括时域方法、频域方法和时频方法三大类,拟采用AR 参数模型、小波变化及希尔伯特黄变换实现脑电信号等方法提取脑电信号的特征量。

1. AR 参数模型法

参数模型法是生物医学信号处理中广泛采用的方法之一,也可用于思维脑电的提取。建立信号模型时,把待研究信号看成是由某一输入信号激励某一系统所产生的,要求该系统的输出与待研究信号具有相似的性质。信号的不同特性可以由模型参数的不同组合表现出来,所以称为参数模型,如图13所示。

H(z)w (n )s (n )

图 13 参数模型

常用的参数模型有:移动平均(MA)模型,自回归(AR)模型,自回归移动平均(ARMA)模型。目前,应用得较多的是 AR 模型,因为建立这种模型的计算比较容易,ARMA 模型计算比较复杂,但其特性比 AR 模型更全面,因此如何高效地估计模型参数的系数,是一个值得注意的研究课题。实际上,作为数学逼近,三种模型可以互相转换。参数的节约性(哪种模型所需要的参数较少)和计算的便利性是选择模型形式时的主要依据。AR 模型认为信号()s n 由本身的若干次过去值和激励的现时值线性组合产生,即

1()()()p

k k s n w n a s n k ==--∑ (5)

参数模型把随机过程的随机性和一定程度的可预测性分离开而又结合起来,激励白噪声反映过程的随机性,确定性模型则反映过程的可预测性。因此它能较好地概括随机信号的性质,比如随机信号的性质可以用模型的若干参数来表征,

这样有利于压缩数据量。在AR 模型基础上,对其改造并研究新的模型方法——确定性自回归模型(FAR)和自适应自回归模型(AAR)。

(1) p 阶FAR 模型

一个实数值,零均值,稳定的非确定性p 阶自回归过程可以表示如下:

1()()()()p

k k x n a x n k e n e n ==--++∑ (6)

这里p 为模型阶次,()x n 表示样本点为n 的信号,k a 是一个实的AR 系数值,()e n 表示独立于过去样本的误差。这个自回归过程表明了()x n 可以被看作是对先前样本的一个回归过程。通常假定()e n 为一个零均值有限方差的噪声。实际应用中,可以通过有限样本 (1),(2),(3),

,()x x x x N 对k a 进行估计。 (2)p 阶AAR 模型

通常情况下,一个p 阶且随时间变化的自回归模型可以表示为:

1,12,2,t t t t t p t t p t Y a Y a Y a Y Z ---=++++ (7) 这里的t Z 是一个均值为0、方差为2δ的白噪声过程。本课题拟采用最小均方(LMS)算法对随时间变化的AAR 系数进行估计。

采用参数模型法有一定优点,比如随机信号的性质可以用模型的若干参数来表征,这样有利于压缩数据量。但参数模型法用于思维脑电信号的提取,要取得好的效果,一般要求满足两个条件:①信噪比较高;②能明确地分离出信号和噪声的频谱,建立正确的噪声和信号模型。在思维脑电的检测中,由于信号和噪声都是不平稳的,尤其是噪声的特性随时间的变化具有较大的不确定性,记录到的噪声可能与检测到的噪声差别较大,采用预先建立噪声模型来处理信号,可能会导致误差。

2. 小波变换与MRA 方法

本课题拟重点研究小波变换结合统计学分析用于想象运动思维脑电信号的处理和特征提取,主要原因是:① 采集到的脑电信号属于非平稳信号,在时

域和频域都具有特征,采用小波变换系数提取其时频特征;② 小波变换具有类似 FFT 的快速算法,便于实时计算,提高通讯速度;③ 相对于别的方法来说,小波方法不仅在提高信噪比方面有着明显的效果,而且可以有效的提取思维脑电特征。

(1)小波变换概述

小波变换是一种窗口面积大小固定但其形状可改变(时间窗和频率窗都可以改变)的时频局部化分析方法。它具有多分辨率分析(MRA)的特点,且在时频两域都具有表征信号局部特征的能力,即在低频部分具有较高的频率分辩率和较低的时间分辩率,在高频部分具有较高的时间分辩率和较低的频率分辩率,所以被誉为数学显微镜。正是这种特性,使得小波变换具有对信号的自适应性。 设()t ψ为一平方可积的函数,记作2()()t L R ψ∈,这里2()L R 为平方可积的实

数空间,表示能力有限的信号空间。若其傅立叶变换?()ωψ

满足以下容许条件: 2?()R C d ωωωψψ=<∞?

(8)

时,称()t ψ为一个基本小波或母小波(Mother Wavelet)函数。小波基函数有多种,根据不同需要选择。小波变换分为连续小波变化和离散小波变换。 某一函数()f t 的连续小波变换定义为:

1

(,)()(),()f a t WT a f t dt f t t a a τττ∞

*-∞-??=ψ=ψ????

? (9) 简写为(,)f CWT a τ,其中,a ∈R 且a ≠0,a 为尺度因子,表示与频率相关的伸缩,τ为时间平移因子。

在实际应用中,尤其是在计算机上实现时,连续小波必须加以离散化得到离散小波变换。对小波基函数的尺度、位移因子进行离散化,在离散的尺度和位移栅格下的小波变换,称为离散小波变换(DWT)。

在脑电实验中,采集到的基于想象运动思维脑电信号一维的离散信号,记为 ()x t ,且2()()x t L R ∈,即 2()k

x t <∞∑,()t ψ为小波基函数,,()j k t ψ的二进制

离散形式为:

2,()2(2),

,j j j k t t k j k Z --ψ=ψ-∈ (10)

则()x t 的离散小波变换系数为:

*

2,,,,()()2()(2)j j j k j k j k t D x x t t dt x t t k ∞

---∞=ψ=ψ=ψ-∑? (11) (2)多分辨率分析(MRA)

1988年,S.Mallat 在构造正交小波基时提出了多分辨分析(MRA)的概念,从空间的概念上形象地说明了小波的多分辩率特性,将此之前的所有正交小波基的构造法统一起来,给出了Mallat 正交小波的构造方法以及正交小波变换的快速算法,即Mallat 快速算法,从而使小波变换具有了真正的实用意义。

以一个8层分解为例对多分辩率的理解进行说明,采样频率fs=512Hz ,那么其小波分解树如图14所示,图中cD 为细节信号,cA 为逼近信号。

图14 小波分解示意图(8层多分辩率分解)

从图上可以明显看出,多分辩率分析只是对低频部分进行进一步分解,而高频部分则不予以考虑。分解具有如下关系:

887654321S cA cD cD cD cD cD cD cD cD =++++++++ (12)

图中cA 为逼近信号(低频部分),cD 为细节信号(高频部分)。如果以j V 表示图分解中的低频部分j cA ,j W 表示图分解中的高频部分j cD ,则j W 是j V 在1j V + 中的正交补,即

1j j j V W V j Z +⊕=∈ (13) 如果要进行更多层次的分解,以下依次类推。分解的最终目的是力求构造一个在频率上高度逼近2()L R 空间的正交小波基,这些频率分辩率不同的正交小波基相当于宽带各异的带通滤波器。

正是由于多分辩率分析具有的独特性,非常适合诸如脑电这类非线性信号的分析,所以在研究中,拟主要采用多分辩率分析对思维脑电信号进行分解和重构。图15和图16是对一受试者脑电信号利用小波方法进行7层多分辩率分析得到的结果。 0510152025303540-500

0500D 7细节系数

010203040506070-500

0500D 6020406080100120140-500

0500D 5050100150200250300-500

0500D 40100200300400500600-200

0200D 3020040060080010001200-100

0100D 205001000150020002500

-50050D 1

图15 脑电信号的7层多分辩率分解细节系数

0510152025303540-500

0500C 7近似系数

010203040506070-500

0500C 6020406080100120140-500

0500C 5050100150200250300-500

0500C 40100200300400500600-500

0500C 3020040060080010001200-500

0500C 205001000150020002500

-5000500C 1

图16脑电信号的7层多分辩率分解逼近系数

根据图15和16所示,原始信号经过小波多分辩率分析发现:原始脑电信号经小波分解与重构后,很清楚地看出不同频率波段下的信号分布情况。在高频波段下,主要是噪声,同时发现高频系数的幅值随之分解层次的增加很快地衰减;在低频波段下,特别是第 5、6、7尺度下清晰地反映了原始信号的变化情况。这部分正是我们所要讨论的与思维脑电有关的频率段信号。

(3) 小波系数方法提取思维脑电特征

小波分析在生物医学信号包括脑电、心电、医学图像信号等的分析中得到了广泛的应用。小波变换得到的分解系数(或部分系数)可以作为提取的特征,这些分解系数可以重构出信号,各个小波系数实际上是信号时间-尺度(时频)特征的一种表现;且它们比较完备地描述了信号的主要特征,理论意义清晰,是特征表示的基础,因此可以考虑将小波系数作为信号的特征。

研究表明,与想象运动有关的思维脑电信号主要分布在低频波段,所以在提取特征过程中,主要是针对信号的低频部分进行分解和重构,最后提取需要的小波系数特征值。

本课题拟利用小波变换对原始信号(s )进行分解滤波去噪处理,得到去噪

后信号(y),随后对y进行小波多分辨率分析(MRA)8层分解,选择第 6~8尺度上的细节信号 D6、D7、D8 来重构信号波形。这些尺度上的小波分解系数(cD6、cD7、cD8)可以表征重构信号的主要特征。

由于完成或准备手和脚的运动除了引起大脑对侧脑电信号的去同步现象,辅助运动区附近电极的脑电也出现去同步现象,而Cz电极位于辅助运动区附近。因此,为了能够突出想象左右手运动时,大脑半球两侧初级感觉运动区相对于辅助运动区脑电特征的差异,在研究的过程中应把CZ导联也考虑进来。则构建的脑电信号的特征量应为C3,C4 和 CZ 三个导联的小波系数(或部分小波系数)构建的特征向量集。

3. 希尔伯特黄变换

Hilbert-Huang变换(Hilbert-Huang transform,HHT)是由Huang N等人提出的一种新的针对非平稳非线性信号的时频分析方法。它基于信号的局部特征时间尺度,突破了以Fourier变换全局性空间表示为基础的传统时变信号处理的不足,从信号本身出发,不需要选择窗函数(基函数)等先验条件,不再受Heisenberg测不准原理的约束,能同时在时频域取得很好的聚集性,具有多信号处理能力和良好的自适应性,对信号本身变化信息敏感,非常适合于处理非线性、非平稳信号。该方法已经在生物医学信号、机械故障检测、雷达信号以及地震预测等领域进行了广泛应用。由于脑电信号的频域特征表现比较突出,具有相当强的非平稳性和非线性,因此适合于用希尔伯特黄变换来研究思维脑电信号,对脑电信号进行特征提取,为分类决策提供依据。

三、分类器设计

根据受试者想象思维脑电信号的特征,判别出受试者是作出想象左、右手运动还是脚的想象运动的意图,属于典型的分类判别决策和分类问题。在脑电信号的分类中最常用效果较好的分类器有:Fisher 线性判别、人工神经网络和支持向量机。在研究中拟采用这三种分类器分别对运动思维活动的脑电信号进行分类,然后比较其优劣,选择速度快、分类效果好的分类器作为最终系统的选择。

1. Fisher 线性判别

线性判别函数实现分类是统计模式识别的基本方法之一。采用线性判别函数所产生的错误率或风险虽然可能比贝叶斯分类器来得大,但它简单,容易实现,且计算量和存储量小,是实际应用中最常用的方法之一。线性分类器采用的准则函数可以不同,常用的准则函数有:Fisher 准则、感知器准则、最小错分样本数准则、最小平方误差(MSE)准则和最小错误率线性判别函数准则。拟采用Fisher 线性判别实现运动思维活动的脑电信号进行分类。

假设收集了N 例m 个指标资料,其中A 类有A n 例,B 类有B n 例。Fisher 判别法就是找出一个线性组合

1122m m Y C X C X C X =+++ (14) 通过求解上式中的系数12,,,m C C C 使得A 类综合指标的均数A Y 与B 类该指标的均数B Y 的差异A B Y Y -尽可能大,而两类内该指标的变异22A B

S S +尽可能小,即使 22A B

A B Y Y S S λ-=+ (15)

达到最大。此时称公式(13)为判别函数,12,,

,m C C C 为判别系数。根据数学

推导判别系数可由下列正则方程组解出: 1111221121122222

1122m m m m m m mm m m S C S C S C D S C S C S C D S C S C S C D ++

+=+++=++

+

= (16) 其中:(

)()A B j j j D X X =-,(

)A j X ,(

)B j X 分别是A 类和B 类第j 个指标的均数

(1,2,,)j m =,ij S 是12,,,m X X X 的合并协方差阵的元素。

()

()(

)(

)()(

)()

()()()()()2A A A A B B B B

i i j j i i j j

ij A B X X X X X X X X S n n --+--=+-∑∑ (17) 其中,()()(

)(

),,,A B A B i i j j X X X X 分别为第i 或第j 个指标A 类和B 类的观察值。

建立判别函数后,按式(13)逐例计算判别函数值i Y ,进一步求i Y 的两类均

数,A B Y Y 与总均数Y ,按下式计算判别界值:

,,,2

A B c A B A B Y n n Y Y Y n n ??=?+??,相差较小相差较大 (18)

A ,

,i c i c i c Y Y Y Y Y Y ?>?

(1)神经网络模型

用于模式识别的常用人工神经网络模型有:多层感知器(MLP)、径向基函数(RBF)网络及BP 网络等。基于神经网络的模式识别与传统的模式识别系统相比,表现出下面几个明显的优势:

① 能够识别带有噪声或变形的输入模式;

② 具有很强的自适应学习能力,通过对样本的学习,掌握模式变换内在的规律;

③ 能够把识别处理与若干预处理融合在一起进行;

④ 可完成复杂输入/输出的非线性映射,信息存贮与处理合二为一。

正是由于这些优势,使神经网络在思维任务识别中得到广泛的应用。由于脑电信号是一种非常复杂的非平稳随机信号,基于脑电信号特征分布的特点和神经网络的这种优势,拟选取BP 神经网络作为想象运动的脑电信号的识别。

(2)BP 神经网络分类技术

按误差反向传播算法训练的多层前馈网络通常称为BP 神经网络。这种网络可以通过对简单的非线性函数进行复合实现高度非线性映射来学习系统的特性,且对任一给定的函数总存在一个单隐层网络可以无限逼近它。该特点使得BP 神经网络在非线性系统建模中应用极为广泛。

BP 网络是典型的多层前馈网络,分为输入层、隐层和输出层,层与层之间采用全互连方式,同一层的单元之间则不存在相互连接,输入与输出之间无反馈。一个简单的三层BP 网络如图17所示。

1y 2y 2N y 1z 2

z 3N z ih w h j w 隐含层输出层

输入层x 1

x 2x m

……

图17 三层BP 神经网络示意图

BP 神经网络采用反向传播的误差来调整神经元连接权的学习算法,有效地解决了多层神经网络的学习问题。该算法的学习过程分信息前向传播和误差反向传播两个过程。其基本思路是:当给网络提供一个输入模式时,该模式由输入层传到隐层,经隐层神经元作用函数处理后传送到输出层,再经由输出层神经元作用函数处理后产生一个输出模式。如果输出模式与期望的输出模式有误差,就从输出层反向将误差逐层传送到输入层。把误差“分摊”给各神经元并修改连接权,使网络实现从输入模式到输出模式的正确映射。对于一组训练模式,可以逐个用训练模式作为输入,反复进行误差检测和反向传播过程,直到不出现误差为止。学习完成后,网络可进入工作阶段。当待测样本输入到己学习好神经网络输入端时,根据类似输入产生类似输出的原则,神经网络按内插或外延的方式在输出端产生相应的映射。

(3)基于BP 神经网络的想象运动分类

根据输入变量的个数及隐含层的经验选择方法和输出量的维数,构建BP 神经网络。在想象运动的思维任务分类中,将提取的特征量作为神经网络的输入变量,决定BP 神经网络的输入层,输出层为1个神经元,再根据经验公式确定隐层节点的个数。把离散小波变换提取的特征量加入到BP 神经网络进行学习,最终实现脑电信号的分类和识别。 3. 支持向量机分类

(1)支持向量机简述 支持向量机(SVM)是Vapnik 等人提出的一种基于统计学习理论的机器学习方法,它较好地解决了非线性、高维数、局部极小点等问题,并且对于特征相关

性和稀疏性不敏感,处理高维数问题具有其他机器学习方法不可比拟的优势。目前,SVM 已广泛应用于手写字识别、人脸识别和人脸检测、文本分类、语音识别等,也有不少学者把它应用到脑电信号的分类与识别,并取得了良好的应用效果。

(2)支持向量机分类基本理论

Vapnik 等人依据统计学习理论中的结构风险最小化原则,率先提出了模式分类算法。设训练样本集为{i i y ,x },其中d i R ∈x ,n i ,,2,1 =;对于二分类问题,}1,1{-∈i y 。SVM 分类的思想是使两类无错误地分开,并使两类的分类间隔最大。实际上,该分类问题可归结为下列二次规划问题:

?????≥-≥++∑=)

0(1]),[(),(21min 1i i i i n i i b y C ξξξx w w w (20) 式中 ) , (——2向量之间的内积;i ξ——训练样本线性不可分时引入的一个松弛项;C ——常数,0>C ,控制对错分样本惩罚的程度,实现在最少错分样本数和最大分类间隔之间的折衷;w 、b ——判决函数b f +=),()(x w x 中的权向量和分类阈值。

通过求其对偶问题,可归结为一个二次函数极值问题

???

????==≤≤-∑∑∑===n i y C K y y n i i i i j i j i j n j i i n i i ,,10,,0),(21max 11,1 ααx x ααα (21) 式中 i α——与每个样本对应的Lagrange 乘子,这是一个不等式约束下二次函

数寻优的问题,存在唯一解,且解中i α不为零对应的样本就是支持向量。解上

述问题后得到的最优分类函数即为最优判别函数

]),(sgn[)(1∑=+=s

r r i i b K y f x x αx (22)

式中 )sgn(——符号函数;r x ——第r 个支持向量;),(x x r K ——内积函数。

分类阈值b 可由任一个支持向量通过∑==n

i i i i y 1x αw 和01])[(=-+?b y i i x w 求

得。通过内积函数定义的非线性变换把输入空间变换到一个高维空间,然后在这个新空间中可求取最优分类面。常用的内积函数有多项式、核函数和S 形函数3种类型,径向基核函数)||||exp(),(2x x x x --=r r g K 应用比较多,其中参数。

SVM 最基本的理论是针对二分类问题,二分类方法有清晰的几何含义,算法比较丰富和完善。然而在实际应用中要解决多分类问题,因此需将SVM 进行改进和推广。对于多分类问题,有一对一、一对多、层分类等多种SVM 算法。

(3)支持向量机参数优化

由于支持向量机的关键参数对其分类效果起着决定性作用,所以只有选择合适的参数才能实现最优的分类效果,研究中拟采用模拟退火算法(SAA )对支持向量机的惩罚因子C 和核函数参数σ进行优化。

SAA 借鉴材料统计力学的研究成果,其基本思想是把每种组合状态看成某一物质体系的微观状态,并对原决定性算法引入随机扰动,使得当考察点到达局部极值时,算法过程有一个小的概率“逃出”局部极值。SAA 实现连续变量函数的全局优化的具体步骤如下:

① 确定参数的约束条件、邻域确定法则及可分性判据)(x J ,给出一个较高的初始温度0T (00>T )。

② 在满足参数的约束条件下,随机产生一个初始值)0(x 作为当前的状态,并给出它的邻域)(x N 。

③ 给出温度的下降方式1+→i i T T ,并令0=i ,0=k 。

④ 按照一定的方式在)(k x 的邻域))((k x N 中选择一个状态x ',计算其可分性判据)(x J ',接受x k x '=+)1(的概率如式(23)所示。 ???-'='→}))](()(exp{[1))((i T k x J x J x k x P 其他

若))(()(k x J x J <' (23)

⑤ 在温度i T 下,重复一定次数的扰动和接受过程,即步骤4。

⑥ 检查退火过程是否结束,如果i T 已经满足终止条件则结束,)(k x 即为算法的最优解,否则继续。

⑦ 根据温度下降方式计算新的温度1 i T ,转到步骤4。

SAA 本质上是串行的邻域搜索优化算法,其搜索行为和优化性能受到邻域确定法则、温度下降方式、算法终止条件等影响,因此在实现时要重视这些关键参数的选择。另外,传统SAA 很难保证最终的局部最优解就是全局最优解,因此要使算法具有记忆功能,使之能够记住搜索过的最优结果。

(4)基于支持向量机的想象运动分类

在Matlab 环境下,采用台湾教授林智仁课题组开发的LibSVM 工具箱,实现想象运动脑电信号的分类与识别。把提取的脑电信号的特征量作为支持向量机的输入,把分类结果作为标签,对支持向量分类机进行训练,把新的特征数据输入训练后的网络即可实现对不同运动想象思维任务脑电信号的识别。

四、 结果分析及最优方案选择

尝试采用优化算法选取不同特征量的组合作为同一个分类器的输入参数,构建合适的判别函数,比较不同特征空间时的分类效果,选择分类效果最好的特征量组合作为分类器的输入变量。

采用选取出的最优特征向量作为输入,代入不同的分类器模型,从计算速度和分类准确度两个方面比较分类效果,进一步确定出最终的分类器的模型及参数,为以后的在线分析打下基础。

圆锥曲线齐次式与点乘双根法教学内容

一,圆锥曲线齐次式与斜率之积(和)为定值 例1:12,Q Q 为椭圆22 2212x y b b +=上两个动点,且12OQ OQ ⊥,过原点O 作直线12Q Q 的垂 线OD ,求D 的轨迹方程. 解法一(常规方法):设111222(,),(,)Q x y Q x y ,00(,)D x y ,设直线12Q Q 方程为y kx m =+, 联立22 2212y kx m x y b b =+???+=??化简可得: 22222222(2)42()0b k b x kmb x b m b +++-=,所以 22222221212222222 2()(2),22b m b b m b k x x y y b k b b k b +-==++ 因为12OQ OQ ⊥所以 222222222222 1212222222222()(2)2()2=0222121b m b b m b k m b m b k x x y y b k b b k b k k +---+=+=+++++ 22232(1)m b k ∴=+*L 又因为直线12Q Q 方程等价于为0000()x y y x x y -=--,即2 00000 x x y x y y y =-++对比于y kx m =+,则00200 x k y x y m y ? -=????+=??代入*中,化简可得:22 20023x y b +=.

解法二(齐次式): 设直线12Q Q 方程为1mx ny +=,联立22 22222211 11022mx ny mx ny x y x y b b b b +=+=???? ???+=+-=???? 222 22()02x y mx ny b b +-+=化简可得:22222222202x y m x n y mnxy b b +---= 整理成关于,x y ,x y 的齐次式:2 2 2 22 2 2 (22)(12)40b n y m b x mnb xy -+--=,进而两边同时除以2 x ,则 222 2 2 2 22 1222 12(22)412022m b b n k mnb k m b k k b n ---+-=?=- 因为12OQ OQ ⊥12OQ OQ ⊥所以121k k =-, 22 2212122m b b n -=-- 22232()b m n ∴=+*L 又因为直线12Q Q 方程等价于为0000()x y y x x y -=--,即2 00000 x x y x y y y =-++对比于1mx ny +=,则0 2200022 00 x m x y y n x y ?=?+?? ?=?+?代入*中,化简可得:22 20023x y b +=. 例2:已知椭圆2 214 x y +=,设直线l 不经过点(0,1)P 的直线交于,A B 两点,若直线,PA PB 的斜率之和为1-,证明:直线l 恒过定点.

基于两点乘积及全波傅里叶算法的应用

2.两点乘积算法: 程序: %两点乘积算法,输入正弦波,取得电气角度相隔pi/2的采样时刻的数据值,计算出正弦量的有效值。 clear; N=12; %每周期采12个点 for n=0:48; t=0.02*n/N; y=sin(2*pi*n/N); %输入正弦波量y=sin(w*t) s(1,n+1)=y; %将y采样所得的值赋值给s if n>3 a=s(1,n-3); %输出相差0.5*pi的两点采样值 b=s(1,n); Ym=sqrt(a^2+b^2); Y=Ym/1.414; %输出正弦量的有效值 subplot(211) %绘制t-Y,即正弦量有效值与时间关系的图形 plot(t,Y,'-bo'); pause(0.005); xlim([-0.01,0.08]); ylim([0,1]); hold on end subplot(212); %绘制t-y,输入与时间关系的即图形 plot(t,y,'-bo'); pause(0.005); hold on end

基于两点乘积及全波傅里叶算法的应用 利用全波傅里叶算法和两点乘积算法计算 1.全波傅里叶算法: 程序: %全波傅里叶算法 clear N=24; %每周期采24个点 for n=0:96; t=0.02*n/N; y=sin(2*pi*n/N); %输入正弦波量y=sin(w*t) x1(1,n+1)=y; %将y采样所得的值赋值给x1 if n>24 X1s=0; X1c=0; for k=(n-24):(n-1) a1=x1(1,k); a2=a1*sin(2*k*pi/N); X1s=a2+X1s; end for j=(n-24):(n-1) b1=x1(1,j); b2=b1*cos(2*j*pi/N); X1c=b2+X1c; end X1s=(2/N)*X1s; %输出正弦系数 x1(2,n+1)=X1s; X1c=(2/N)*X1c; %输出余弦系数 x1(3,n+1)=X1c; X=sqrt(0.5*(X1s^2+X1c^2)); %求出基波分量有效值 x1(4,n+1)=X; end if n<24 X=0; end subplot(212); %绘制t-X,即基波分量有效值与时间关系的图形 plot(t,X,'-bo'); xlim([0,0.1]); ylim([0,1]); pause(0.0005); hold on subplot(211); %绘制t-y,即输入与时间关系的图形 plot(t,y,'-ok');

AOPA最新理论题库第7章任务规划

G001、无人机是指根据无人机需要完成的任务、无人机的数量以及携带任务载荷的类型,对无人机制定飞行路线并进行任务分配。 A.航迹规划 B.任务规划 C.飞行规划 正确答案: B(解析:P174) G002、任务规划的主要目标是依据地形信息和执行任务环境条件信息,综合考虑无人机的性能,到达时间、耗能、威胁以及飞行区域等约束条件。为无人机规划出一条或多条自 的,保证无人机高效,圆满的完成飞行任务,并安全返回基地。 A.起飞到终点,最短路径 B.起飞点到着陆点,最佳路径 C.出发点到目标点,最优或次优航迹 正确答案: C(解析:P174) G003、无人机任务规划是实现的有效途径,他在很大程度上决定了无人机执行任务的效率 A.自主导航与飞行控制 B.飞行任务与载荷导航 C.航迹规划与自主导航 正确答案: A(解析:P174) G004、无人机任务规划需要实现的功能包括 A.自主导航功能,应急处理功能,航迹规划功能 B.任务分配功能,航迹规划功能,仿真演示功能 C.自主导航功能,自主起降功能,航迹规划功能 正确答案: B(解析:P174) G005、无人机任务规划需要考虑的因素有、,无人机物理限制,实时性要求 A.飞行环境限制,飞行任务要求 B.飞行赶任务范围,飞行安全限制 C.飞行安全限制,飞行任务要求 正确答案: A(解析:P175) G006、无人机物理限制对飞行航迹有以下限制:,最小航迹段较长度,最低安全飞行高度 A.最大转弯半径,最小俯仰角 B.最小转弯半径,最小俯仰角 C.最小转弯半径,最大俯仰角 正确答案: C(解析:P175) G007、动力系统工作恒定的情况下,限制了航迹在垂直平面内上升和下滑的最大角度 A.最小转弯半径 B.最大俯仰角

圆锥曲线齐次式与点乘双根法

+ = y 圆锥曲线齐次式与点乘双根法 一,圆锥曲线齐次式与斜率之积(和)为定值 x 2 y 2 例 1:Q 1 , Q 2 为椭圆 2b 2 + b 2 线OD ,求 D 的轨迹方程. = 1上两个动点,且OQ 1 ⊥ OQ 2 ,过原点O 作直线Q 1Q 2 的垂 解法一(常规方法):设Q 1 (x 1 , y 1 ),Q 2 (x 2 , y 2 ) , D (x 0 , y 0 ) ,设直线Q 1Q 2 方程为 y = kx + m , ? y = kx + m ? 联立? x 2 ?? 2b 2 y 2 b 2 1 化简可得: (2b 2k 2 + b 2 )x 2 + 4kmb 2 x + 2b 2 (m 2 - b 2 ) = 0 ,所以 x 1x 2 = 2b 2 (m 2 + b 2 ) 2b 2k 2 + b 2 , y 1 y 2 = b 2 (m 2 - 2b 2k 2 ) 2b 2k 2 + b 2 因为OQ 1 ⊥ OQ 2 所以 2b 2 (m 2 + b 2 ) b 2 (m 2 - 2b 2k 2 ) 2(m 2 - b 2 ) m 2 - 2b 2k 2 x 1x 2 + y 1 y 2 = 2b 2k 2 + b 2 + 2b 2k 2 + b 2 = 2k 2 +1 + 2k 2 +1 =0 ∴3m 2 = 2b 2 (1+ k 2 ) * 又因为直线 Q Q 方程等价于为 y - y = - x 0 (x - x x x 2 ) , 即 y = - 0 x + 0 + y 对比于 1 2 0 y 0 y 0

向量 - 向量叉乘 向量点乘

向量- 向量叉乘向量点乘 2010年07月28日星期三14:33 向量(Vector) 在几乎所有的几何问题中,向量(有时也称矢量)是一个基本点。向量的定义包含方向和一个数(长度)。在二维空间中,一个向量可以用一对x和y来表示。例如由点(1,3)到(5,1的向量可以用(4,-2)来表示。这里大家要特别注意,我这样说并不代表向量定义了起点和终点。向量仅仅定义方向和长度。 向量加法 向量也支持各种数学运算。最简单的就是加法。我们可以对两个向量相加,得到的仍然是一个向量。我们有: V1(x1, y1)+V2(x2, y2)=V3(x1+x2, y1+y2) 下图表示了四个向量相加。注意就像普通的加法一样,相加的次序对结果没有影响(满足交换律),减法也是一样的。 点乘(Dot Product) 如果说加法是凭直觉就可以知道的,另外还有一些运算就不是那么明显的,比如点乘和叉乘。点乘比较简单,是相应元素的乘积的和: V1( x1, y1) V2(x2, y2) = x1*x2 + y1*y2 注意结果不是一个向量,而是一个标量(Scalar)。点乘有什么用呢,我们有: A B = |A||B|Cos(θ) θ是向量A和向量B见的夹角。这里|A|我们称为向量A的模(norm),也就是A的长度,在二维空间中就是|A| = sqrt(x2+y2)。这样我们就和容易计算两条线的夹角:Cos(θ) = A B /(|A||B|) 当然你知道要用一下反余弦函数acos()啦。(回忆一下cos(90)=0 和cos(0) = 1还是有好处的,希望你没有忘记。)这可以告诉我们如果点乘的结果,简称点积,为0的话就表示这两个向量垂直。当两向量平行时,点积有最大值 另外,点乘运算不仅限于2维空间,他可以推广到任意维空间。(译注:不少人对量子力学中的高维空间无法理解,其实如果你不要试图在视觉上想象高维空间,而仅仅把它看成三维空间在数学上的推广,那么就好理解了)

数据结构课程设计计算器

数据结构课程设计报告 实验一:计算器 设计要求 1、问题描述:设计一个计算器,可以实现计算器的简单运算,输出并检验结果的正确性,以及检验运算表达式的正确性。 2、输入:不含变量的数学表达式的中缀形式,可以接受的操作符包括+、-、*、/、%、(、)。 具体事例如下: 3、输出:如果表达式正确,则输出表达式的正确结果;如果表达式非法,则输出错误信息。 具体事例如下: 知识点:堆栈、队列 实际输入输出情况: 正确的表达式

对负数的处理 表达式括号不匹配 表达式出现非法字符 表达式中操作符位置错误 求余操作符左右出现非整数 其他输入错误 数据结构与算法描述 解决问题的整体思路: 将用户输入的中缀表达式转换成后缀表达式,再利用转换后的后缀表达式进行计算得出结果。 解决本问题所需要的数据结构与算法: 用到的数据结构是堆栈。主要算法描述如下: A.将中缀表达式转换为后缀表达式: 1. 将中缀表达式从头逐个字符扫描,在此过程中,遇到的字符有以下几种情况: 1)数字 2)小数点 3)合法操作符+ - * / %

4)左括号 5)右括号 6)非法字符 2. 首先为操作符初始化一个map priority,用于保存各个操作符的优先级,其中+ -为0,* / %为1 3. 对于输入的字符串from和输出的字符串to,采用以下过程: 初始化遍历器std::string::iterator it=infix.begin() 在当it!=from.end(),执行如下操作 4. 遇到数字或小数点时将其加入到后缀表达式: case'1':case'2':case'3':case'4':case'5':case'6':case'7':case '8':case'9':case'0':case'.': { to=to+*it; break; } 5. 遇到操作符(+,-,*,/,%)时,如果此时栈顶操作符的优先级比此时的操作符优先级低,则将其入栈,否则将栈中的操作符从栈顶逐个加入到后缀表达式,直到栈空或者遇到左括号,并将此时的操作符加入到栈中,在此过程中需判断表达式中是否出现输入错误: case'+':case'-':case'*':case'/':case'%': { if((it+1)==from.end()) { cout<<"输入错误:运算符号右边缺少运算数"<

简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

齐次式法与圆锥曲线斜率有关的一类问题

“齐次式”法解圆锥曲线斜率有关的顶点定值问题 定点问题是常见的出题形式,化解这类问题的关键就是引进变的参数表示直线方程、数量积、比例关系等,根据等式的恒成立、数式变换等寻找不受参数影响的量。直线过定点问题通法,是设出直线方程,通过韦达定理和已知条件找出k 和m 的一次函数关系式,代入直线方程即可。技巧在于:设哪一条直线如何转化题目条件圆锥曲线是一种很有趣的载体,自身存在很多性质,这些性质往往成为出题老师的参考。如果大家能够熟识这些常见的结论,那么解题必然会事半功倍。下面总结圆锥曲线中几种常见的几种定点模型: 例题、(07山东) 已知椭圆C :13 42 2=+y x 若与x 轴不垂直的直线l 与曲线C 相交于A ,B 两点(A ,B 不是左右顶点),且以AB 为直径的圆过椭圆C 的右顶点。求证:直线l 过定点,并求出该定点的坐标。 解法一(常规法):m kx y l +=:设1122(,),(,)A x y B x y ,由22 3412 y kx m x y =+??+=?得222(34)84(3)0k x mkx m +++-=, 22226416(34)(3)0m k k m ?=-+->,22340k m +-> 2121222 84(3) ,3434mk m x x x x k k -+=-?=++ 222 2 121212122 3(4) ()()()34m k y y kx m kx m k x x mk x x m k -?=+?+=+++=+ 以AB 为直径的圆过椭圆的右顶点(2,0),D 且1AD BD k k ?=-, 1212122 y y x x ∴?=---,1212122()40y y x x x x +-++=, (*) 222222 3(4)4(3)1640343434m k m mk k k k --+++=+++,(**) 整理得:2 2 71640m mk k ++=,解得:1222,7 k m k m =-=- ,且满足22 340k m +-> 当2m k =-时,:(2)l y k x =-,直线过定点(2,0),与已知矛盾; 当27k m =- 时,2 :()7 l y k x =-,直线过定点2(,0)7 综上可知,直线l 过定点,定点坐标为2 (,0).7 ◆方法总结:本题为“弦对定点张直角”的一个例子:圆锥曲线如椭圆上任意一点P 做相互垂直的直 线交圆锥曲线于AB ,则AB 必过定点)) (,)((2 222022220b a b a y b a b a x +--+-。(参考百度文库文章:“圆锥曲线的弦 对定点张直角的一组性质”) ◆模型拓展:本题还可以拓展为:只要任意一个限定AP 与BP 条件(如=?BP AP k k 定值或=+BP AP k k 定值),直线AB 依然会过定点。 此模型解题步骤: Step1:设AB 直线m kx y +=,联立曲线方程得根与系数关系,?求出参数范围; Step2:由AP 与BP 关系(如1-=?BP AP k k ),得一次函数)()(k f m m f k ==或者; Step3:将)()(k f m m f k ==或者代入m kx y +=,得定定y x x k y +-=)(。 方法评估:此方法求解过程中(*)(**)化简整理计算非常繁琐。下面介绍齐次式法。(上述方法改进还有“点乘双根法”) 解法二(齐次式法) 由以AB 为直径的圆过椭圆C 的右顶点P ,知PB PA ⊥,即1-=?PB PA k k 。(??????PB PA k k ?为定值)

微机课设简易计算器

微机课程设计报告 题目简易计算器仿真 学院(部)信息学院 专业通信工程 班级2011240401 学生姓名张静 学号33 12 月14 日至12 月27 日共2 周 指导教师(签字)吴向东宋蓓蓓

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C52芯片、汇编语言、数码管、加减乘除

基于安卓的计算器的设计与实现

安卓应用程序设计 ——简易计算器的实现院(系)名称 专业名称 学生姓名 学生学号 课程名称 2016年6月日

1.系统需求分析 Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android 的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。计算器通过算法实行简单的数学计算从而提高了数学计算的效率,实现计算器的界面优化,使界面更加友好,操作更加方便。基于android的计算器的设计,系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作,即可单机按钮进行操作,即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间。 2.系统概要设计 2.1计算器功能概要设计 根据需求,符合用户的实际要求,系统应实现以下功能:计算器界面友好,方便使用,,具有基本的加、减、乘、除功能,能够判断用户输入运算数是否正确,支持小数运算,具有清除功能。 图2.1系统功能图 整个程序基于Android技术开发,除总体模块外主要分为输入模块、显示模块以及计算模块这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其他的功能。具体的说,总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。 输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及 响应触屏的按键,需要监听手机动作以及用指针事件处理方法处理触屏的单击动作。同时提供了较为直观的键盘图形用户界面。 显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结

计算器制作

VB应用程序的设计方法 ——“简易计算器”教学设计 揭阳第一中学卢嘉圳 教学内容:利用所学知识制作Visual Basic程序“简易计算器” 教学目标:能熟练运用CommandButton控件及TextBox控件进行Visual Basic(以下简称VB)程序的设计,能熟练运用条件语句编写代码 教学重点:运用开发VB程序一般过程的思路来开发“简易计算器” 教学难点:分析得出实现“简易计算器”各运算功能的算法。 教材分析: 当我刚开始进行程序设计的教学时,便感觉比较难教。这是因为程序设计本身枯燥、严谨,较难理解,而且学生大多数都是初学者,没有相应的知识基础。对于《程序设计实例》,我们选用的教材是广东教育出版社出版的《信息技术》第四册,该书采用的程序设计语言是VB,而学生是仅学过了一点点简单的QB编程之后就进入《程序设计实例》的学习的。 教材为我们总结了设计VB程序的一般步骤:创建用户界面;设置控件属性;编写事件程序代码;运行应用程序。我总结了一下,其实VB程序设计可分为设计用户界面及编写程序代码两个环节。 教学过程: 一、引入新课 任务:让学生按照书上提示完成一个非常简单的VB程序——“计算器”(仅包含开方、平方、求绝对值功能)的制作。 目的:加强对CommandButton控件及TextBox控件的掌握,复习对开方、求绝对值函数的使用。 引入本节课的学习任务:设计一个简易计算器,包含加、减、乘、除、开方、平方等运算。程序界面可参考下图。 具体功能为:在Text1中输入一个数值,然后单击代表运算符的按钮则运算结果会在text2中显示出来;比如在text1中输入一个2,然后按“+”按钮,再输入一个3按“-”按钮,再输入一个-4按“*”按钮,则实际为(2-3)*(-4);最后在text2中显示结果为4。

MATLAB与数值分析课程总结

MATLAB与数值分析课程总结 姓名:董建伟 学号:2015020904027 一:MATLAB部分 1.处理矩阵-容易 矩阵的创建 (1)直接创建注意 a中括号里可以用空格或者逗号将矩阵元素分开 b矩阵元素可以是任何MATLAB表达式,如实数复数等 c可以调用赋值过的任何变量,变量名不要重复,否则会被覆盖 (2)用MATLAB函数创建矩阵如:a空阵[] b rand/randn——随机矩阵 c eye——单位矩阵 d zeros ——0矩阵 e ones——1矩阵 f magic——产生n阶幻方矩阵等 向量的生成 (1)用冒号生成向量 (2)使用linspace和logspace分别生成线性等分向量和对 数等分向量 矩阵的标识和引用 (1)向量标识 (2)“0 1”逻辑向量或矩阵标识 (3)全下标,单下标,逻辑矩阵方式引用 字符串数组 (1)字符串按行向量进行储存 (2)所有字符串用单引号括起来 (3)直接进行创建 矩阵运算 (1)注意与数组点乘,除与直接乘除的区别,数组为乘方对应元素的幂

(2)左右除时斜杠底部靠近谁谁是分母 (3)其他运算如,inv矩阵求逆,det行列式的值, eig特征值,diag 对角矩阵 2.绘图-轻松 plot-绘制二维曲线 (1)plot(x)绘制以x为纵坐标的二维曲线 plot(x,y) 绘制以x为横坐标,y为纵坐标的二维曲线 x,y为向量或矩阵 (2)plot(x1,y1,x2,y2,。。。。。。)绘制多条曲线,不同字母代替不同颜色:b蓝色,y黄色,r红色,g绿色 (3)hold on后面的pl ot图像叠加在一起 hold off解除hold on命令,plot将先冲去窗口已有图形(4)在hold后面加上figure,可以绘制多幅图形 (5)subplot在同一窗口画多个子图 三维图形的绘制 (1)plot3(x,y,z,’s’) s是指定线型,色彩,数据点形的字 符串 (2)[X,Y]=meshgrid(x,y)生成平面网格点 (3)mesh(x,y,z,c)生成三维网格点,c为颜色矩阵 (4)三维表面处理mesh命令对网格着色,surf对网格片着色 (5)contour绘制二维等高线 (6)axis([x1,xu,y1,yu])定义x,y的显示范围 3.编程-简洁 (1)变量命名时可以由字母,数字,下划线,但是不得包含空格和标点 (2)最常用的数据类型只有双精度型和字符型,其他数据类型只在特殊条件下使用 (3)为得到高效代码,尽量提高代码的向量化程度,避免使用循环结构

模拟计算器程序-课程设计

模拟计算器 学生姓名:**** 指导老师:**** 摘要本课程设计的课题是设计一个模拟计算器的程序,能够进行表达式的计算,并且表达式中可以包含Abs()和Sqrt()运算。在课程设计中,系统开发平台为Windows ,程序设计设计语言采用C++,程序运行平台为Windows 或*nix。本程序的关键就是表达式的分离和处理,在程序设计中,采用了将输入的中缀表达式转化为后缀表达式的方法,具有可靠的运行效率。本程序做到了对输入的表达式(表达式可以包含浮点数并且Abs()和Sqrt()中可以嵌套子表达式)进行判定表达式是否合法并且求出表达式的值的功能。经过一系列的调试运行,程序实现了设计目标,可以正确的处理用户输入的表达式,对海量级数据都能够通过计算机运算快速解决。 关键词C++程序设计;数据结构;表达式运算;栈;中缀表达式;后缀表达式;字符串处理;表达式合法判定;

目录 1 引言 (3) 1.1课程设计目的 (3) 1.2课程设计内容 (3) 2 设计思路与方案 (4) 3 详细实现 (5) 3.1 表达式的合法判定 (5) 3.2 中缀表达式转化为后缀表达式 (5) 3.3 处理后缀表达式 (7) 3.4 表达式嵌套处理 (8) 4 运行环境与结果 (9) 4.1 运行环境 (9) 4.2 运行结果 (9) 5 结束语 (12) 参考文献 (13) 附录1:模拟计算器源程序清单 (14)

1 引言 本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。利用两个“栈”,一个“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。最后利用后缀表达式来求解表达式的值。该算法的复杂度为O(n),能够高效、快速地求解表达式的值,提高用户的效率。 1.1课程设计目的 数据结构主要是研究计算机存储,组织数据,非数值计算程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习数据结构是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。 模拟计算器程序主要利用了“栈”这种数据结构来把中缀表达式转化为后缀表达式,并且运用了递归的思想来解决Abs()和Sqrt()中嵌套表达式的问题,其中还有一些统计的思想来判定表达式是否合法的算法。 1.2课程设计内容 本次课程设计为计算器模拟程序,主要解决表达式计算的问题,实现分别按表达式处理的过程分解为几个子过程,详细的求解过程如下:1 用户输入表达式。 2 判定表达式是否合法。 3 把中缀表达式转化为后缀表达式。 4 求出后缀表达式的结果。 5 输出表达式的结果。通过设计该程序,从而做到方便的求出一个表达式的值,而不需要一步一步进行运算。

用计算器计算(教案)

课题:用计算器计算 教学内容:三年级下册第48—51页内容 教学目标: 1、在运算中了解计算器的结构和基本功能;能正确、熟练地运用计算器进行一、两步的式题运算。 2、能运用计算器解决一些简单的实际问题,探索一些基本的数学规律。 3、培养观察、比较、分析、归纳、概括等能力。 教学过程: 一、尝试运用 师:开学到现在,我们一直在学习计算,下面这些题,哪些你一眼能看出来答案的,直接说的得数。 1、初步尝试 90+56= 45×99≈ 87546—3469= 42×30= 2102÷30≈ 43×365= 师:最后两道看来有困难,列竖式算算。 师:先不报答案,要你自己检验做的对不对,你准备怎么样?试一试用计算器来验算,你们会吗? 师:谁愿意带上你的竖式计算上来展示意下,向大家演示一下你用计算器验算的过程可以吗?(鼓励和表扬) 师:看来,大家还真的会用计算器!想不想“再显身手”? 2、再次尝试:探索用计算器进行混合运算的方法 ①546×28-4276 ②2940 ÷28+763 ③15021-87×99 ④25120÷(449-289) (1)这4题与上面4题相比,有什么不一样?会做吗?请试一试。 (2)交流操作方法。 (3)你有没有感觉到这4道题在计算过程中有什么不一样? (4)用计算器计算③、④该怎么操作呢?我们以第③题为例,谁来介绍介绍?

(突出“记住中间数”、“使用MR键”、倒减等方法。) (①、②两题只要按顺序依次输入,③、④题要先算后一步,③④可以“记住过程得数”,③还可以倒减等) (5)介绍用存储键计算,尝试用“MR键”计算③④题。 二、解决生活问题 师:通过这几道题计算,你感觉计算器怎么样?你们喜欢用计算器吗?下面我们就发挥计算器的作用,用它来完成一个非常有价值的问题。 1、出示:一个水龙头滴水的动态画面。据统计一个没有关紧的水龙头,每天大约滴18千克的水,这些水就这样白白流掉了。 (1)照这样计算一年(按365天计算)要浪费多少千克水? (2)把这些水分别装在饮水桶中(每桶约重15千克)算算大约能装多少桶? (3)你家每月用几桶水?算算这些水够你家用几个月?大约合多少年? 师:目前我国西南大旱,一些地区粮食因为缺水绝收。云南山区的孩子们喝脏水解渴。联系我们刚才的这些计算数据,你想到什么? 三、探索计算规律: 师:既然人们发明了这么好的计算器,我们就应该更好地运用它。让我们来挑战一下自己,探索计算的规律好不好? 1、找出规律后再填写每组的后2题得数,并用计算器检验。 19+9×9= 118+98×9= 1117+987×9= 11116+9876×9= 111115+98765×9= 学生汇报自己的发现。按这样一种规律写下去,下一题该是什么样的? 2、自己探索规律。 1122÷34= 111222÷334= 11112222÷3334= …… 111…1222…2÷333…34= 2001个1 2001个2 2000个3

圆锥曲线——点乘双根法

圆锥曲线——点乘双根法 适用类型:类似21x x ,21y y ,))((21t x t x ++,))((21t y t y ++或||||,MB MA MB MA ??(其中2121,,,y y x x 是直线与曲线的两个交点的横纵坐标,B A ,直线与曲线的两个交点)以及可转化为上述结构的问题 理论基础:二次函数的双根式,若一元二次方程)0(02 ≠=++a c bx ax 的两根为21,x x ,则) )((212x x x x a c bx ax --=++具体步骤:化双根式→赋值→变形代入 1.(2013天津)设椭圆)0(122 22>>=+b a b y a x 的左焦点为F ,离心率为33,过点F 且与x 轴垂直的直线被椭圆截得的线段长为 334.(1)求椭圆的方程; (2)设B A ,分别为椭圆的左,右顶点,过点F 且斜率为k 的直线与椭圆交于D C ,两点.若8=?+?CB AD DB AC ,求k 的值.

2.(2012重庆)如图,设椭圆的中心为原点O ,长轴在x 轴上,上顶点为A ,左、右焦点分别为21,F F ,线段21,OF OF 的中点分别为21,B B ,且21B AB ?是面积为4的直角三角形. (1)求该椭圆的离心率和标准方程; (2)过1B 作直线l 交椭圆于Q P ,两点,使22QB PB ⊥,求直线l 的方程. 3.(2014辽宁理)圆22 4x y +=的切线与x 轴正半轴,y 轴正半轴围成一个三角形,当该三角形面积最小时,切点为P (如图),双曲线22 122:1x y C a b -=过点P 且离心率为3.(1)求1C 的方程; (2)椭圆2C 过点P 且与1C 有相同的焦点,直线l 过2C 的右焦点且与2C 交于B A , 两点,若以线段AB 为直径的圆心过点P ,求l 的方程.

移动应用开发实验---简单计算器

“移动应用开发”实验报告 1

而受至到众多开发者的欢迎,成为真正意义上的开放式操作系统。计算器通 过算法实行简单的或学计算从而提高了数学计算的效率,实现计算器的界面 优化,使界面更加友好,操作更加方便。基于android的计算器的设计系统具 有良好的界面;必要的英互信息:简约美观的效票,使用人员能快捷简单地 进行操作,即可单机按钮进行操作,即时准确地获得需要的计算的结果,充 分降低了数字计算的难度和节约了时间。 2.系统概要设计 2.1计算器功能概要设计 根据需求,符合用户的实际需求,系统应实现以下功能:计算器界面友好, 方便使用,具有基本的加,减,乘,除功能。能够判断用户输入运算数是否 正确,支持小数运算,具有清除功能。 整个程序基于Android 技术开发,除总体模块外主要分为输入模块、显 示模块以及计算模块这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之 前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算 以及一些其他的功能。具体的说,总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。 输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的 键盘输入以及响应触屏的按键,需要监听手机动作以及用指针事件处理方法 处理触屏的单击动作。同时提供了较为直观的键盘图形用户界面。 显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以 及最终的计算结果,同时负责显示一些其他的信息。 计算器模块主要描述了计算器的整体,实现了计算器的界面,负责用户 2

输入数据,计算,显示,清零等功能。 2.2输入模块设计 系统如果想完成计算器中各种功能,首先用户要能进行数据输入,由于 是在触屏手机上开发计算器程序,所以要求输入可以直接使用触屏进行,所 以在设计的时候就要充分的考虑这一点。正是由于考虑到这个特殊的地方, 所以在进行模块设计中,选择编写输入模块类的时候会特意选取使用可以支 持触屏输入的特殊增强型图形用户界面类。 输入模块主要的任务是描述计算器键盘以及实现键盘的监听,即当用户 点击按键或者屏幕的时候监听会去调用相应的处理办法,本模块还需要为系 统提供一个较为直观的键盘图形用户界面。输入模块的功能图如图 2.3显示模块设计 作为手机计算器系统,显示部分也是必不可少的一部分。没有显示部分 就没有办法显示用户输入的数字是否正确,甚至不能显示计算出的结果,由 此可见显示模块即包括输入的部分(因个人技术原因不能显示表达式的形式)也包括输出的部分。 显示模块主要完成的任务是描述计算器的显示区,该区域用于显示用户 输入的数据以及最终的计算结果和一些其他信息。同时本模块还将提供调用 和设置显示的具体方法。 3

计算器算法原理

计算器算法原理 除法也用类似竖式的方法,从高位到低位逐一得出结果。大概过程如下:(注意,是二进制运算) 1、先左移除数,直到除数不小于被除数,同时记录移动的位数; 2、开始循环,循环次数为前一步移动的位数加1; 3、比较被除数与除数的大小,如果被除数不小于除数,则该位结果为1,否则为0; 4、除数右移一位,继续循环。 这种方法同样可以进行小数运算,根据需要的有效数字位数确定循环次数。 漏了一点,修改一下: 3、比较被除数与除数的大小,如果被除数不小于除数,则该位结果为1,并把被除数减去除数,否则为0 加减乘除求余: #include #include #include #include #define DEF_32 #ifdef DEF_32 typedef unsigned int uint; const uint low_mask = 0xffff; const uint hig_mask = 0xffff0000; #else typedef unsigned long long uint; const uint low_mask = 0xffffffff; const uint hig_mask = 0xffffffff00000000; #endif const uint alignment = 8; struct _DATA_ ...{ size_t capacity;//容量 size_t len;//使用的存储单元 uint *p;//内容 }; typedef struct _DATA_ BigNumber; typedef BigNumber* BigNumberPtr; BigNumberPtr NewBigNumber(size_t len ); BigNumberPtr CopyNewBigNumber(BigNumberPtr p); void CopyBigNumber(BigNumberPtr o,BigNumberPtr n);

计算机中的常用算法

奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)做了一个调查,投票选出32个最重要的算法: 1.A* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一 种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定 次序。算法以得到的次序访问这些节点。因此,A*搜索算法是最佳优先搜索的范例。 2.集束搜索(又名定向搜索,Beam Search)——最佳优先搜索算法的优化。使用启 发式函数评估它检查的每个节点的能力。不过,集束搜索只能在每个深度中发现最 前面的m个最符合条件的节点,m是固定数字——集束的宽度。 3.二分查找(Binary Search)——在线性数组中找特定值的算法,每个步骤去掉一半 不符合要求的数据。 4.分支界定算法(Branch and Bound)——在多种最优化问题中寻找特定最优化解决 方案的算法,特别是针对离散、组合的最优化。 5.Buchberger算法——一种数学算法,可将其视为针对单变量最大公约数求解的欧几 里得算法和线性系统中高斯消元法的泛化。 6.数据压缩——采取特定编码方案,使用更少的字节数(或是其他信息承载单元)对 信息编码的过程,又叫来源编码。 7.Diffie-Hellman密钥交换算法——一种加密协议,允许双方在事先不了解对方的情况 下,在不安全的通信信道中,共同建立共享密钥。该密钥以后可与一个对称密码一 起,加密后续通讯。 8.Dijkstra算法——针对没有负值权重边的有向图,计算其中的单一起点最短算法。 9.离散微分算法(Discrete differentiation) 10.动态规划算法(Dynamic Programming)——展示互相覆盖的子问题和最优子架构 算法 11.欧几里得算法(Euclidean algorithm)——计算两个整数的最大公约数。最古老的 算法之一,出现在公元前300前欧几里得的《几何原本》。 12.期望-最大算法(Expectation-maximization algorithm,又名EM-Training)——在 统计计算中,期望-最大算法在概率模型中寻找可能性最大的参数估算值,其中模型依赖于未发现的潜在变量。EM在两个步骤中交替计算,第一步是计算期望,利用对隐藏变量的现有估计值,计算其最大可能估计值;第二步是最大化,最大化在第一 步上求得的最大可能值来计算参数的值。 13.快速傅里叶变换(Fast Fourier transform,FFT)——计算离散的傅里叶变换(DF T)及其反转。该算法应用范围很广,从数字信号处理到解决偏微分方程,到快速计算大整数乘积。 14.梯度下降(Gradient descent)——一种数学上的最优化算法。 15.哈希算法(Hashing) 16.堆排序(Heaps) 17.Karatsuba乘法——需要完成上千位整数的乘法的系统中使用,比如计算机代数系统 和大数程序库,如果使用长乘法,速度太慢。该算法发现于1962年。 18.LLL算法(Lenstra-Lenstra-Lovasz lattice reduction)——以格规约(lattice)基数 为输入,输出短正交向量基数。LLL算法在以下公共密钥加密方法中有大量使用: 背包加密系统(knapsack)、有特定设置的RSA加密等等。

相关文档