当前位置:文档之家› DTW算法原理分析与源码

DTW算法原理分析与源码

DTW算法原理分析与源码
DTW算法原理分析与源码

引言

随着时代的发展,人们越来越注重生活的品质。便捷时尚成为当代人们的追求目标。现在,语音信号处理的技术趋于完善,语音识别技术的应用有两个发展方向:一个是大词汇量连续语音识别系统,主要应用于计算机的听写输入等;另一个是小型化﹑便携式语音模块的应用,如手机的拨号﹑汽车设备的语音控制等方面的应用,这些应用大多都需要使用硬件实现。

在此次课程设计中,我们引用现今较为成熟的语音信号处理技术,设计一个简单的非实时语音信号识别系统。其主要技术指标是识别率和计算量,其关键是特征参数的提取和模式识别方法。测试模板将预先录制好的0-9的语音文件用按键方式输入,经过A/D转换芯片0809后转化为数字信号,在单片机AT89C52中,先用端点检测将语音中有用的语音部分提取出来(即将头部和尾部的静音部分除掉),然后用LPC算法提取语音信号的特征参数,进行动态归整(DTW算法)后与模板库里面的标准语音作比较,最后将识别结果进行D/A转化后播放出来。在本部分的设计中,则主要完成语音识别的模式匹配算法部分的软件实现。

1 为什么要用DTW算法

孤立词识别方案主要有:

(1)采用动态规划(Dynamic Programming)的方法。这是一种运算量较大,但技术上较简单,正识率也较高的方法。其中的失真测度可以用欧氏距离(适于短时谱或倒谱参数),也可以用对数似然比距离(适于LPC参数).决策方法可用最近邻域准则.

(2)采用矢量量化(VectorQuantization)的方法.它既可用于语音通信中的波形或参数的压缩,也可用于语音识别.尤其有限状态矢量量化(FSVQJ)方法,对于语音识别更为有效。决策方法一般用最小平均失真准则。

(3)采田隐马尔柯夫横型(HMM)的方法,该模型的参数既可以用离散概率分布函数,也可以用最新的连续概率密度函数(如:正态高斯密度,高斯自回归密度等)。决策方法则用最大后验概率准则.

(4)采用混合技术的方法。例如:用矢量量化作为第一级识别(作为预处理,从而得出若干候选的识别结果),然后,再用DTW或HMM方法做最后的识别,因此,可有VQ/DTW和VQ/HMM等识别方法.

目前,语音识别的匹配主要应用HMM和DTW两种算法。DTW算法由于没有一个有效地用统计方法进行训练的框架,也不容易将低层和顶层的各种知识用到语音识别算法中,因此在解决大词汇量、连续语音、非特定人语音识别问题时较之HMM算法相形见绌。HMM是一种用参数表示的,用于描述随机过程统计特性的概率模型。而对于孤立词识别,HMM算法和DTW算法在相同条件下,识别效果相差不大, 又由于DTW算法本身既简单又有效,但HMM算法要复杂得多。它需要在训练阶段提供大量的语音数据,通过反复计算才能得到参数模型,而DTW算法的训练中几乎不需要额外的计算。鉴于此,DTW更适合本系统的要求。

2 DTW算法原理

在孤立词语音识别中,最为简单有效的方法是采用DTW(Dynamic Time Warping,动态时间归整)算法,该算法基于动态规划(DP)的思想,解决了发音长短不一的模板匹配问题,是语音识别中出现较早、较为经典的一种算法。用于孤立词识别,DTW算法与HMM算法在训练阶段需要提供大量的语音数据,通过反复计算才能得到模型参数,而DTW算法的训练中几乎不需要额外的计算。所以在孤立词语音识别中,DTW算法仍然得到广泛的应用。

无论在训练和建立模板阶段还是在识别阶段,都先采用端点算法确定语音的起点和终点。已存入模板库的各个词条称为参考模板,一个参考模板可表示为R={R(1),R(2),……,R(m),……,R(M)},m为训练语音帧的时序标号,m=1为起点语音帧,m=M为终点语音帧,因此M为该模板所包含的语音帧总数,R(m)为第m帧的语音特征矢量。所要识别的一个输入词条语音称为测试模板,可表示为T={T(1),T(2),……,T(n),……,T(N)},n为测试语音帧的时序标号,n=1为起点语音帧,n=N为终点语音帧,因此N为该模板所包含的语音帧总数,T(n)为第n帧的语音特征矢量。参考模板与测试模板一般采用相同类型的特征矢量(如MFCC,LPC系数)、相同的帧长、相同的窗函数和相同的帧移。

假设测试和参考模板分别用T和R表示,为了比较它们之间的相似度,可以计算它们之间的距离 D[T,R],距离越小则相似度越高。为了计算这一失真距离,应从T和R中各个对应帧之间的距离算起。设n和m分别是T和R中任意选择的帧号,d[T(n),R(m)]表示这两帧特征矢量之间的距离。距离函数取决于实际采用的距离度量,在DTW算法中通常采用欧氏距离。

若N=M则可以直接计算,否则要考虑将T(n)和R(m)对齐。对齐可以采用线性扩张的方法,如果N

如果把测试模板的各个帧号n=1~N在一个二维直角坐标系中的横轴上标出,把参考模板的各帧号m=1~M在纵轴上标出,通过这些表示帧号的整数坐标画出一些纵横线即可形成一个网络,网络中的每一个交叉点(n,m)表示测试模式中某一帧的交汇点。DP算法可以归结为寻找一条通过此网络中若干格点的路径,路径通过的格点即为测试和参考模板中进行计算的帧号。路径不是随意选择的,首先任何一种语音的发音快慢都有可能变化,但是其各部分的先后次序不可能改变,因此所选的路径必定是从左下角出发,在右上角结束,如图2-1所示。

图2-1 DTW算法搜索路径

为了描述这条路径,假设路径通过的所有格点依次为(n ,m ),……,(n ,m ),……,(n ,m ),其中(n ,m )=(1,1),(n ,m )=(N,M)。路径可以用函数m =?(n )描述,其中n =i,i=1,2,……,N,?(1)=1,?(N)=M。为了使路径不至于过倾斜,可以约束斜率在0.5~2的范围内,如果路径已经通过了格点(n ,m ),那么下一个通过的格点(n ,m )只可能是下列三种情况之一:

(n ,m )=(n +1,m +2)

(n ,m )=(n +1,m +1)

(n ,m )=(n +1,m )

用r表示上述三个约束条件。求最佳路径的问题可以归结为满足约束条件r时,求最佳路径函数m =?(n ),使得沿路径的积累距离达到最小值,即:

搜索该路径的方法如下:搜索从(n ,m )点出发,可以展开若干条满足?的路径,假设可计算每条路径达到(n ,m )点时的总的积累距离,具有最小累积距离者即为最佳路径。易于证明,限定范围的任一格点(n ,m )只可能有一条搜索路径通过。对于(ni,mi),其可达到该格点的前一个格点只可能是(n ,m )、(n ,m -1)和(n ,m -2),那么(n ,m )一定选择这3个距离之路径延伸而通过(n ,m ),这时此路径的积累距离为:

D[(n ,m )]=d[T(n ),R(m )]+D[(n , m )]

其中的n = n -1 ,m -1由下式决定:

D[(n ,m )]=min{D[(n , m )],D[(n , m -1)],D[(n , m -2)]}

这样可以从(n ,m )=(1,1)出发搜索(n ,m ),再搜索(n ,m ),……,对每一个(n ,m )都存储相应的前一格点(n ,m )及相应的帧匹配距离d[n ,m ]。搜索到(n ,m )时,只保留一条最佳路径。如果有必要的话,通过逐点向前寻找就可以求得整条路径。这套DP算法便是DTW算法。

DTW算法可以直接按上面的描述来实现,即分配两个N×M的矩阵,分别为积累距离矩阵D 和帧匹配距离矩阵d,其中帧匹配距离矩阵d(i,j)的值为测试模板的第i帧与参考模板的第j帧间的距离。D(N,M)即为最佳匹配路径所对应的匹配距离。

3 Matlab程序的实现

3.1 DTW的一般算法

实现DTW算法的函数Dtw.m

function dist = dtw(t,r)

n = size(t,1);

m = size(r,1);

% 帧匹配距离矩阵

d = zeros(n,m);

for i = 1:n

for j = 1:m

d(i,j) = sum((t(i,:)-r(j,:)).^2);

end

end

% 累积距离矩阵

D = ones(n,m) * realmax;

D(1,1) = d(1,1);

% 动态规划

for i = 2:n

for j = 1:m

D1 = D(i-1,j);

if j>1

D2 = D(i-1,j-1);

else

D2 = realmax;

end

if j>2

D3 = D(i-1,j-2);

else

D3 = realmax;

end

D(i,j) = d(i,j) + min([D1,D2,D3]); end

end

dist = D(n,m);

程序中,首先申请两个n×m的距阵D和d,分别为累积距离和帧匹配距离。这里n和m为测试模板与参考模板的帧数。然后通过一个循环计算两个模板的帧匹配距离距阵d。接下来进行动态规划,为每个格点(i,j)都计算其三个可能的前续格点的累积距离D1、D2和D3。考虑到边界问题,有些前续格点可能不存在,因此要加入一些判断条件。

最后利用最小值函数min,找到三个前续格点的累积距离的最小值作为累积距离,与当前帧的匹配距离d(i,j)相加,作为当前格点的累积距离。该计算过程一直达到格点(n,m),并将D (n,m)输出,作为模板匹配的结果。

3.2 DTW的高效算法

由于匹配过程中限定了弯折的斜率,因此许多格点实际上是到达不了的,如图3-1所示。因此菱形之外的格点对应的帧匹配距离是不需要计算的。另外也没有必要、保存所有的帧匹配距离距阵和累积距阵,因为每一列各格点上的匹配计算只用到了前一列的三个网格。充分利用这两个特点可以减少计算量和储存空间的需要。

如图3-1所示,把实际的动态弯折分为三段,(1,Xa),(Xa+1,Xb)和(Xb+1,N),其中:

图3-1 匹配路径约束示意图

Xa和Xb都取相近的整数。由此也得出对M和N长度的限制条件:

当不满足以上条件时,认为两者差别实在太大,无法进行动态弯折匹配。

在X轴上的每一帧不再需要与Y轴上的每一帧进行比较,而只是与Y轴上[y ,y ]间的帧进行比较,y 和y 的计算如下式:

也可能会出现Xa>Xb的情况,此时弯折匹配的三段为(1,Xb),(Xb+1,Xa)和(Xa+1,N)。

对于X轴上每前进一帧,虽然所要比较Y轴上的帧数不同,但弯折特性是一样的,累积距离的更新都是用下式实现的:

由于X轴上每前进一帧,只需要用到前一列的累积距离距阵。每前进一帧都进行更新,即按上式利用前一列的累积距离D和当前列的所有帧匹配的距离d(x,y),求出当前帧的累积距离,保存于矢量d中,再把更新的距离d赋值给D,作为新的累积距离,供下一列使用。如图3-2所示。这样一直前进到X轴上最后一列,矢量D的第M个元素即为两个模板动态弯折的匹配距离。

图3-2 累积距离矢量的动态更新

用这种方法实现的另一种DTW算法的代码如下:function dist = dtw(test, ref)

global x y_min y_max

global t r

global D d

global m n

t = test;

r = ref;

n = size(t,1);

m = size(r,1);

d = zeros(m,1);

D = ones(m,1) * realmax;

D(1) = 0;

% 如果两个模板长度相差过多,匹配失败

if (2*m-n<3) | (2*n-m<2)

dist = realmax;

return

end

% 计算匹配区域

xa = round((2*m-n)/3);

xb = round((2*n-m)*2/3);

if xb>xa

%xb>xa, 按下面三个区域匹配

% 1 :xa

% xa+1:xb

% xb+1:N

for x = 1:xa

y_max = 2*x;

y_min = round(0.5*x);

warp

end

for x = (xa+1):xb

y_max = round(0.5*(x-n)+m); y_min = round(0.5*x);

warp

end

for x = (xb+1):n

y_max = round(0.5*(x-n)+m); y_min = round(2*(x-n)+m);

warp

end

elseif xa>xb

%xa>xb, 按下面三个区域匹配 % 0 :xb

% xb+1:xa

% xa+1:N

for x = 1:xb

y_max = 2*x;

y_min = round(0.5*x);

warp

end

for x = (xb+1):xa

y_max = 2*x;

y_min = round(2*(x-n)+m);

warp

end

for x = (xa+1):n

y_max = round(0.5*(x-n)+m); y_min = round(2*(x-n)+m);

warp

end

elseif xa==xb

%xa=xb, 按下面两个区域匹配 % 0 :xa

% xa+1:N

for x = 1:xa

y_max = 2*x;

y_min = round(0.5*x);

warp

end

for x = (xa+1):n

y_max = round(0.5*(x-n)+m); y_min = round(2*(x-n)+m); warp

end

end

%返回匹配分数

dist = D(m);

function warp

global x y_min y_max

global t r

global D d

global m n

d = D;

for y = y_min:y_max

D1 = D(y);

if y>1

D2 = D(y-1);

else

D2 = realmax;

end

if y>2

D3 = D(y-2);

else

D3 = realmax;

end

d(y) = sum((t(x,:)-r(y,:)).^2) + min([D1,D2,D3]);

end

D = d;

程序中首先进行两个模板长度的比较,如果长度差别太大,将返回一个很大的数realmax,表示匹配失败。按下来计算Xa和Xb,根据两者大小的比较,将匹配区域划分为二段或三段。对每一帧分别计算出y_min和y_max,调用函数warp进行匹配。最后的结果保存在D中,而D(m)就是整个模板匹配的总累积距离。

3.3 测试程序Testdtw.m

用测试程序Testdtw.m测试Dtw.m,其代码在下面。

disp('正在计算参考模板的参数...')

for i=1:10

fname = sprintf('d:\\matlab6p5\\work\\%da.wav',i-1);

x = wavread(fname);

[x1 x2] = vad(x);

m = lpc(x);

m = m(x1-2:x2-2,:);

ref(i).lpc = m;

end

disp('正在计算测试模板的参数...')

for i=1:10

fname = sprintf(' d:\\matlab6p5\\work\\%db.wav',i-1);

x = wavread(fname);

[x1 x2] = vad(x);

m = lpc(x);

m = m(x1-2:x2-2,:);

test(i).lpc = m;

end

disp('正在进行模板匹配...')

dist = zeros(10,10);

for i=1:10

for j=1:10

dist(i,j) = dtw(test(i).lpc, ref(j).lpc);

end

end

disp('正在计算匹配结果...')

for i=1:10

[d,j] = min(dist(i,:));

fprintf('测试模板%d 的识别结果为:%d\n', i, j);

end

程序中用到了20个wav文件,分别是0a.wav、1a.wav、……、9a.wav以及0b.wav、1b.wav、……、9b.wav,分别保存数码0到9的发音。其中a结尾的10个文件作为参考模板,b结尾的0个文件作为测试模板。

首先用wavread函数读入wav文件,用lpc函数获得其lpc参数,用vad函数对其进行端点检测,并保存语音部分的lpc参数到参考模板的结构数组ref(i).lpc中或测试模板的结构数组test(i).lpc 中。

模板匹配阶段,计算所有测试模板和参考模板之间的距离,保存到距阵dist中,将最后的匹配分数用min 函数找到最小值对应的模板。

在Matlab上运行后,输出的结果为:

>> Testdtw

正在计算参考模板的参数...

正在计算测试模板的参数...

正在进行模板匹配...

正在计算匹配结果...

测试模板 1 的识别结果为:1

测试模板 2 的识别结果为:2

测试模板 3 的识别结果为:3

测试模板 4 的识别结果为:4

测试模板 5 的识别结果为:5

测试模板 6 的识别结果为:6

测试模板7 的识别结果为:7

测试模板8 的识别结果为:8

测试模板9 的识别结果为:9

测试模板10 的识别结果为:10

>>

从输出的结果看,识别得到了正确的结果,为了进一步验证识别的正确性,看一下匹配距离距阵dist的数据:

>> dist

dist =

1.0e+004 *

0.5741 1.8575 3.7164 2.7567 3.2732 2.4946 2.1208 1.8565 3.4530 1.7783

1.6183 0.6201 5.4711 4.0024 4.5169 3.8422 3.0256 1.4398 5.5660 3.4090

3.5879 5.2763 0.4147 1.4435 2.4924 3.1520 2.5371 3.5035 1.0029 2.9692

2.2657

3.6250 1.0511 0.5487 2.1223 2.2573 1.8405 2.5638 1.0303 2.0788

2.4052

3.9130 2.1418 1.8048 0.4234 2.9629 2.6261 2.5600 2.1139 2.2589

2.2896

3.2425 3.0996 2.7853 3.0529 0.5002 2.2229 3.2317 2.7873 1.9719

2.1692

3.8311 3.1997 2.6173 2.9306 2.4412 0.6207 2.9675 2.6489 1.5591

1.9428

2.2470 4.0326 2.6934

3.1362 3.6682 3.4982 0.7567

4.3060 2.6786

3.2084

4.7374 1.0319 1.4739 2.2992 2.9104 2.2509 3.8464 0.4946 2.5945

2.2231 4.4386 2.9113 2.5731 2.7994 2.2883 1.3779

3.6557 2.2412 0.3803

>>

距离距阵的对角线上是正确匹配模板的对应分数,可见对角线上的10个数值都是在本行中最小的,由此验证了识别结果的正确性。

4 DTW算法的研究和改进

4.1 动态规划存在下列问题

(1)运算量大。由于要找出最佳匹配点,因此要考虑多种可能的情况.虽然路径限制减少了运算晕,但运算量仍然很大,因而使识别速度减慢.这在大词汇量的识别中是一个严重缺点。

(2)识别性能过分依赖于端点检测.端点检测的精度随着不同音素而有所不同,有些音素的瑞点检测精度较低.由此影响识别率的提高.

(3)没有充分利用语音信号的时序动态信息。观已提出多种方法来克服这一缺点.

4.2 对端点检测算法的改进

对端点检测精度的敏感性是DTW 算法主要缺陷之一。解决的办法无非是两个,一个是从DTW 算法本身出发,例如采用对前后端点的放松来降低其对端点的敏感性;另一个是从DTW算法的外界出发,能够尽量精确地检测语音的端点。笔者通过对短时窗函数和窗长的研究,提出一种能够比较精确检测端点的方法。

在检测语音信号的端点时,一般采用平均能量或平均幅度值与过零率相乘的方法来判断。如果所取窗长度较小,显然能够比较精确地检测到语音的端点,但会使运算量加大识别速度减慢,同

时会把一些短时的脉冲噪音误认为语音,从而产生错误的识别。如果所取窗长较大,可以加快语音处理的速度,会跳过一些短时噪音,但是端点的检测误差增加,对DTW这种端点非常敏感的算法几乎是致命的。窗长取一合适的中间值固然可以减少窗长过短和过长的消极影响,但毋庸置疑也减弱了其积极的一面。笔者提出一种策略能够比较精确地检测端点,同时能避免窗长过短引起的弊端,并在实现的系统中采用了这一策略,取得了良好的效果。

窗长可变的语音策略及算法如图4-1所示

图4-1 变窗长端点检测程序框图

4.3 端点检测的抗噪性

考虑到计算机的工作环境在室外,因此在程序调试时特别增加了白噪声,结果发现加噪之后对端点检测影响比较大。例如:在一定强度的白噪声下,调好了作为端点检测的过零率和能量值,端点检测准确率达90%&以上(与人直接观察语音波形检测端点相比),但当改变环境噪声后,端点的检测准确率则只有82%这样就提出了如何能适应环境的变化,改变因环境不同造成端点检测误差的问题。

经过研究,采用了如下方法,比较好地解决了这一问题。单纯用过零率和能量值作为检测端点的手段,由于没有考虑到背景噪声,有不可避免的缺点。采用当前帧与前一帧的过零率和能量值的差作为检验端点的标准就能很好地解决了背景噪声的问题。

4.4 对孤立词算法的改进

传统的DTW算法虽然解决了语音识别中说话不均匀造成的语音信号非平稳特性,但还存在着许多问题,可以从以下几个方面加以改进。

4.4.1 改进局部路径限制

局部路径的限制主要是解决畸形匹配的问题,传统DTW算法对路径限制较严格。这样实现的系统对训练与测试时语音均匀度变化比较剧烈情况的处理不大合理。笔者提出了一种局部路径限制的方法,对处理均匀度变化较剧烈的情况有比较明显的优势。如图4-2所示,将匹配的跳变间隔增大为3。

图4-2 改进的局部路径限制

4.4.2 改进DTW算法的效率

DTW虽然算法简洁,对硬件资源的要求也较小,但运算量仍然很大,能否减少运算量而又不降低识别率,对DTW 通常的实际应用,特别是应用于廉价低档的系统中则是非常关键的。

对DTW算法全局路径限制不但可以减少语音的畸形匹配,而且可以减少大约2/3(的运算量。即使这样,运算量仍然非常大,而且由于是用待识别语音序列与模板库中的每一个模板依次匹配,所以运算量会随着模板库中词汇的增加成比例的增大。

假设某个待识别语音序列实际表达的词汇是X,则与训练阶段放入模板中的其它词汇相比,该语音序列和模板库中词汇X的模板之间的失真度应为最小。这样就可以设想,如果设立一个合理的阈值,如果在待识别语音序列与模板库中某个模板匹配过程中,一旦计算出的部分失真度超过阈值,表示最终识别结果肯定不是该模板所代表的词汇,则可立即终止对该模板的继续计算,转入对下一个模板的匹配。由于是中途停止对某一模板的匹配运算,因此可以节约大量的计算开销。

5 Matlabe程序的C语言实现

5.1 流程图

5.2 算法的实现

参见附录。

6 C程序功能调试与检测

虽然Matlab程序与C程序比较类似,但为了使C程序更简化,高效率,C程序的编写过程中在某些地方采用了和Matlab程序不同的编写思想。

由于C语言中的数组的容量的原因,在进行调试Dtw的过程中采用了6×6的数组,采用了一个t[6][4]的测试值,一个r[6][4]的参考值,经调试后实现的功能与matlab的一样。在对testdtw进行调试的时候,用了一个100×100的数组,采用了2个测试模板,10个参考模板。对其调试后,正确地实现了其功能。

对Dtw测试后输出的结果为:

This is ......

D1[1][1]=0.000000 D1[1][2]=62.000000

D1[1][3]=53.000000 D1[1][4]=72.000000

D1[1][5]=22.000000 D1[1][6]=84.000000

D1[2][1]=4.000000 D1[2][2]=50.000000

D1[2][3]=39.000000 D1[2][4]=60.000000

D1[2][5]=14.000000 D1[2][6]=56.000000

D1[3][1]=16.000000 D1[3][2]=46.000000

D1[3][3]=33.000000 D1[3][4]=56.000000

D1[3][5]=14.000000 D1[3][6]=36.000000

D1[4][1]=36.000000 D1[4][2]=50.000000

D1[4][3]=35.000000 D1[4][4]=60.000000

D1[4][5]=22.000000 D1[4][6]=24.000000

D1[5][1]=64.000000 D1[5][2]=62.000000

D1[5][3]=45.000000 D1[5][4]=72.000000

D1[5][5]=38.000000 D1[5][6]=20.000000

D1[6][1]=256.000000 D1[6][2]=190.000000

D1[6][3]=165.000000 D1[6][4]=200.000000

D1[6][5]=182.000000 D1[6][6]=84.000000

dist=211.000000

经验证,结果正确。

对Testdtw调试后输出的结果如下:

The min diference of eath files and c:\ww.txt is .....

dist[ 1] = 9.000000e-04 dist[ 2] = 4.000000e-04

dist[ 3] = 9.999996e-05 dist[ 4] = 0.000000e+00

dist[ 5] = 5.654213e-03 dist[ 6] = 3.999998e-04

dist[ 7] = 9.000000e-04 dist[ 8] = 1.600000e-03

dist[ 9] = 9.573492e-03 dist[10] = 4.633213e-02

The result is

The c:\ww.txt and c:\q4.txt is min and its v alue dist[4] is 0.000000e+00 The min diference of eath files and c:\ee.txt is .....

dist[ 1] = 4.878967e+01 dist[ 2] = 4.878877e+01

dist[ 3] = 4.878727e+01 dist[ 4] = 4.878757e+01

dist[ 5] = 4.878936e+01 dist[ 6] = 4.878717e+01

dist[ 7] = 4.878727e+01 dist[ 8] = 4.878757e+01

dist[ 9] = 4.901000e-03 dist[10] = 4.905051e+01

The result is

The c:\ee.txt and c:\q9.txt is min and its v alue dist[9] is 4.901000e-03

经验证,结果正确。

7 误差分析

由上一步调试结果可看出,对数组类型的定义会使它的计算结果的精确度产生影响,由于C 语言本身对数组的容量的限制,使得我所选的数组不能超过130×130,所以我用了10×10,即每组有100个数据来验证程序的准确性,在调试的过程中尽量优化程序。

语音信号的特征参数求出之后,可根据该参数的特点,选取或设计合适的距离测度,同时选取合适的语音识别算法,最终形成识别系统.

该识别系统所采用的语音训练集为汉语数字0~9。如果发音为较标准的普通话,则该语音识别系统的正确识别率可达到98%以上.实验结果表明,在小词汇量情况下(即词汇量不大于300),系统的最大识别延迟为2~3s.

8 总结

(1)这次课程设计,我所做的工作主要侧重于软件使用的方面。虽然在学习课程中已经对C语言有过一定的理论学习,但是要读懂MATLAB的程序还需要找相关的书来看,所以花了很长的时间在学MATLAB,并且我还从未真正的将C语言运用到工程设计实践中去,不过通过这次实践,我更深刻的理解了C语言在编程上的思想。

(2)要实现这个Dtw与Testdtw的算法,主要是弄懂它的帧匹配距离的由来和累积距离的计算公式。经过不断的调试修改,最终实现了算法的要求。

(3)由于此课题难度较大,由六人组成小组一同完成,期间团队合作精神和交涉力都有了进一步的提高,相信在将来的工作和学习中受益匪浅。

谢辞

在这次课程设计的过程中,虽然题目难度较大,但经过我们六个人的努力最终实现了课程要求,这次课程设计,培养了我们独立分析问题和解决问题的能力。

最后感谢晋良念老师辛勤的指导和帮助以及学院、系给提供和创造了的优越的条件,使自己

的课设得以很好的完成。

参考文献

[1] 陈尚勒等.近代语音识别.成都:电子科技大学出版社,1991

[2] 陈水彬等.语言信号处理.合肥;中国科技大学出版社.1990

[3] 胡征等.矢量量化原理及应用.西安:西安电子科技大学出版社,1988

[4] 古井贞熙著.数字声音处理朱家新等译.北京:人民邮电出版社.1993

[5] 杨行畦等.语音信号数字处理.北京:电子工业出版社,1995

[6] 万旺根,余小清.一种二阶差分耳蜗模型.电子学报,1995,23(7):6~9

[7] 余小清,万旺根等.基于听觉谱特征的语音识别新方法.中国学术期刊文摘,1998,4(3):374~375

[8] 谭浩强.C语言程序设计[M].北京:清华大学出版社,1998.

[9] 数据结构用C语言描述[M]. 北京:高等教育业出版社,2002.

附录

附录1 DTW算法C语言程序

/*……………………………………………………

function dist=dtw(t,r)

……………………………………………………*/

#include "stdio.h"

#include

#define m 4

#define n 6

#define realmax 9.9e38

void main()

{

float zmin(float,float,float);

float t[6][4]={

{1.0,2.0,3.0,4.0},{2.0,3.0,4.0,5.0},{3.0,4.0,5.0,6.0}, {4,5.0,6.0,7.0},{5.0,6.0,7.0,8.0},{9.0,10.0,11.0,12.0} }; /*测试值*/

float r[6][4]={

{1.0,2.0,3.0,4.0},{8.0,2.0,6.0,2.0},{7.0,2.0,7.0,3.0}, {9.0,2.0,1.0,6.0},{2.0,6.0,5.0,3.0},{8.0,3.0,6.0,9.0} }; /*参考值*/

int i,j,g,k;

float sum1,D3,D4,D5,dist;

float D1[n][m],sum=0.0;

float D2[n][m];

clrscr();

printf("\nThis is ...... \n\n");

for (i=0;i

for (j=0;j

D1[i][j]=0;

for (i=0;i

{

for (j=0;j

{

sum1=0.0;

for(g=0;g

{ x=t[i][g];

y=r[j][g];

sum1+=(x-y)*(x-y);

}

D1[i][j]=sum1; /*帧匹配距离*/

printf("D1[%d][%d]=%f\t\t\t",i+1,j+1,D1[i][j]); }

}

putchar('\n');

for (i=0;i

for (j=0;j

D2[i][j]=realmax;

D2[0][0]=D1[0][0];

putchar('\n');

for(i=1;i

for(j=0;j

{ D3=D2[i-1][j];

if(j>0)

D4=D2[i-1][j-1];

else

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

Rudin数学分析原理第一章答案

The Real and Complex Number Systems Written by Men-Gen Tsai email:b89902089@https://www.doczj.com/doc/983529259.html,.tw 1. 2. 3. 4. 5. 6.Fix b>1. (a)If m,n,p,q are integers,n>0,q>0,and r=m/n=p/q,prove that (b m)1/n=(b p)1/q. Hence it makes sense to de?ne b r=(b m)1/n. (b)Prove that b r+s=b r b s if r and s are rational. (c)If x is real,de?ne B(x)to be the set of all numbers b t,where t is rational and t≤x.Prove that b r=sup B(r) where r is rational.Hence it makes sense to de?ne b x=sup B(x) for every real x. (d)Prove that b x+y=b x b y for all real x and y. 1

Proof:For(a):mq=np since m/n=p/q.Thus b mq=b np. By Theorem1.21we know that(b mq)1/(mn)=(b np)1/(mn),that is, (b m)1/n=(b p)1/q,that is,b r is well-de?ned. For(b):Let r=m/n and s=p/q where m,n,p,q are integers,and n>0,q>0.Hence(b r+s)nq=(b m/n+p/q)nq=(b(mq+np)/(nq))nq= b mq+np=b mq b np=(b m/n)nq(b p/q)nq=(b m/n b p/q)nq.By Theorem1.21 we know that((b r+s)nq)1/(nq)=((b m/n b p/q)nq)1/(nq),that is b r+s= b m/n b p/q=b r b s. For(c):Note that b r∈B(r).For all b t∈B(r)where t is rational and t≤r.Hence,b r=b t b r?t≥b t1r?t since b>1and r?t≥0.Hence b r is an upper bound of B(r).Hence b r=sup B(r). For(d):b x b y=sup B(x)sup B(y)≥b t x b t y=b t x+t y for all rational t x≤x and t y≤y.Note that t x+t y≤x+y and t x+t y is rational. Therefore,sup B(x)sup B(y)is a upper bound of B(x+y),that is, b x b y≥sup B(x+y)=b(x+y). Conversely,we claim that b x b r=b x+r if x∈R1and r∈Q.The following is my proof. b x+r=sup B(x+r)=sup{b s:s≤x+r,s∈Q} =sup{b s?r b r:s?r≤x,s?r∈Q} =b r sup{b s?r:s?r≤x,s?r∈Q} =b r sup B(x) =b r b x. And we also claim that b x+y≥b x if y≥0.The following is my proof: 2

(完整版)电力系统分析理论(刘天琪)课后思考题答案

第一章 1、电力系统的额定电压是如何定义的?电力系统中各元件的额定电压是如何确定的? 答:电力系统的额定电压:能保证电气设备的正常运行,且具有最佳技术指标和经济指标的电压。 电力系统各元件的额定电压:a.用电设备的额定电压应与电网的额定电压相同。b.发电机的额定电压比所连接线路的额定电压高5%,用于补偿线路上的电压损失。c.变压器的一次绕组额定电压等于电网额定电压,二次绕组的额定电压一般比同级电网的额定电压高10%。 2、电力线路的额定电压与输电能力有何关系? 答:相同的电力线路,额定电压越高,输电能力就越大。在输送功率一定的情况下,输电电压高,线路损耗少,线路压降就小,就可以带动更大容量的电气设备。 3、什么是最大负荷利用小时数? 答:是一个假想的时间,在此时间内,电力负荷按年最大负荷持续运行所消耗的电能,恰好等于该电力负荷全年消耗的电能。 第二章 1、分裂导线的作用是什么?分裂导线为多少合适?为啥? 答:在输电线路中,分裂导线输电线路的等值电感和等值电抗都比单导线线路小,分裂的根数越多,电抗下降也越多,但是分裂数超过4时,电抗的下降逐渐趋缓。所以最好为4分裂。 2、什么叫变压器的空载试验和短路试验?这两个试验可以得到变压

器的哪些参数? 答:变压器的空载试验:将变压器低压侧加电压,高压侧开路。此实验可以测得变压器的空载损耗和空载电流 变压器的短路试验:将变压器高压侧加电压,低压侧短路,使短路绕组的电流达到额定值。此实验可以测得变压器的短路损耗和短路电压。 3、对于升压变压器和降压变压器,如果给出的其他原始数据都相同,它们的参数相同吗?为啥? 答:理论上只要两台变压器参数一致(包含给定的空载损耗,变比,短路损耗,短路电压),那么这两台变压器的性能就是一致的,也就是说可以互换使用,但是实际上不可能存在这样的变压器,我们知道出于散热和电磁耦等因数的考虑,一般高压绕组在底层(小电流),低压绕组在上层(大电流,外层便于散热)。绕组分布可以导致一二次绕组的漏磁和铜损差别较大,故此无法做到升压变压器和降压变压器参数完全一致。 4、标幺值及其特点是什么?电力系统进行计算式,如何选取基准值?答:标幺值是相对于某一基准值而言的,同一有名值,当基准值选取不同时,其标幺值也不同。它们的关系如下:标幺值=有名值/基准值。其特点是结果清晰,计算简便,没有单位,是相对值。电力系统基准值的原则是:a.全系统只能有一套基准值 b.一般取额定值为基准值 c.电压、电流、阻抗和功率的基准值必须满足电磁基本关系。 5、什么叫电力线路的平均额定电压?我国电力线路的平均额定电压有哪些?

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 2016年 4 月 8 日

y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

运筹学与系统分析

《运筹学与系统分析》课程习题集【说明】:本课程《运筹学与系统分析》(编号为02627)共有单选题,多项选择题,计算题,判断题等多种试题类型 一、单选题 1.一个线性规划问题(P)与它的对偶问题(D)不存在哪一个关系【】 A.(P)可行(D)无解,则(P)无有限最优解 B.(P)、(D)均有可行解,则都有最优解 C.(P)有可行解,则(D)有最优解 D.(P)(D)互为对偶 2.当线性规划问题的一个基本解满足下列哪项要求时称之为一个基本可行解 【】 A.大于0 B.小于0 C.非负 D.非正 3.在用对偶单纯形法解最大化线性规划问题时,每次迭代要求单纯形表中 【】 A.b列元素不小于零 B.检验数都大于零 C.检验数都不小于零 D.检验数都不大于零 4.若运输问题已求得最优解,此时所求出的检验数一定是全部【】 A.大于或等于零 B.大于零 C.小于零 D.小于或等于零 5.在线性规划模型中,没有非负约束的变量称为【】

A.多余变量 B.松弛变量 C.自由变量 D.人工变量 6.在产销平衡运输问题中,设产地为m个,销地为n个,那么解中非零变量的个数【】 A.不能大于(m+n-1) B.不能小于(m+n-1) C.等于(m+n-1) D.不确定 7.箭线式网络图的三个组成部分是 【】A.活动、线路和结点 B.结点、活动和工序 C.工序、活动和线路 D.虚活动、结点和线路 8.在系统工程方法分析方法中,霍尔三维结构的核心内容是 【】 A.定量分析 B.优化分析 C.比较学习 D.认识问题 9.若原问题中x i为自由变量,那么对偶问题中的第i个约束一定为【】 A.等式约束 B.“≤”型约束 C.“≥”约束 D.无法确定 10.线性规划一般模型中,自由变量可以代换为两个非负变量的【】 A.和 B.差 C.积 D.商 11.总运输费用最小的运输问题,若已得最优运输方案,则其中所有空格的改进指数【】 A.大于或等于0 B.小于或等于0 C.大于0 D.小于0 12.下列不属于系统分析的基本要素的是【】 A.问题 B.模型 C.方案 D.技术

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

系统分析师整理论

系统分析师整理论文 【摘要】 随着焦作公安局业务的不断发展和信息化建设的深入应用,通过多轮的信息化建设,目前已经实现了业务处理的网络化、办公事务的自动化以及决策支持的智能化。公安信息系统种类、数量不断激增,对公安信息系统的信息处理能力提出了巨大的挑战。另一方面,由于缺乏统一的标准、规范,各类专业系统之间的兼容性不容乐观,导致“信息孤岛”现象长期存在,影响了各类公安信息的共享交换,难以有效提升各部门协同办公的效率。数据集中、信息集中成为公安信息化建设的方向,焦作公安局在信息化建设发展中主要面临如下挑战: 1、信息安全管控难度高:工作人员对于电脑的专业知识和技能有限,经常发生电脑中病毒、软件无法正常使用等故障,同时对于每个人电脑中的机密信息,主要通过制度来约束和管理,保证安全的同时降低了工作效率,安全和效率无法兼顾。 2、PC分布广泛,运维效率低下,安全性差:PC如果发生故障需要维护人员现场开机箱维修,这期间无法进行正常办公,耽误了大量的宝贵时间,影响工作开展,PC都安装独立的系统和软件,各类材料,特别是内部材料等绝密信息都保存在本地,这样就造成了极大的信息安全隐患。同时,由于PC由使用者自行控制,难以集中管理与控制,用户可以任意外接设备,也容易受到各种网络攻击,从而导致保存在办公PC上的数据容易泄密。单位领导和IT技术负责人一直在苦于寻求解决方案。

3、PC换代快、能耗高,投资浪费:由于PC生命周期短而且能耗高,每年局里都花费大量资金买电脑升级换代,同时消耗大量电缆,投资回报率很低,浪费资源,不符合国家节能减排的政策。 4、运维成本高,资源利用率低 单位办公PC机分布在各个办公地点,无法进行统一维护管理,因此每次出现PC故障,或者需要对软件进行比较大的变更时,都需要维护人员到用户工位去进行操作,这种模式维护效率低下,相应成本也就比较高。同时PC桌面也面临着资源利用率低的问题。 【正文】 对于焦作公安内网的办公人员来说,安全隔离性以及个性化的需求较强,所以桌面云方案可以对每个人都建立一个域帐号、对应一台TC、一台虚拟机。每台虚拟机有单独的系统盘与用户盘,保证安全机要与用户的个性化操作。 与华为达成了“先将办公系统云化(即虚拟化)”的合作意向,决定采用华为Fusion系列软件:FusionCompute作为虚拟化操作系统,FusionAccess提供虚拟桌面能力,FusionManager提供虚拟化平台资源以及桌面的管理和运维能力。 在安全性方面,华为桌面云提供了从办公终端接入、用户权限认证、用户行为审计、数据传输加密、内容加密、到权限管理等端到端的解决方案,所有办公数据集中存放在后端的数据中心,办公终端无硬盘,从而最大限度的保障了数据安全性,实现了焦作公安局

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

二、系统分析的基本方法

1 学习目标: 1.能够理解系统分析的含义,了解系统分析在生活中的作用。 2.在分析案例的过程中可以充分理解系统分析的步骤和其原则性。 3.能根据其原则性做出正确的决策。 学习过程 1.系统的分析 1.过河游戏(1) (1)系统的整体目标是 (2)系统分析后的方案: 结论: 系统分析的含义:为了发挥系统的功能,实现系统的 ,运用科学的方法对系统进行周详的考察、分析、比较、试验,并在此基础上拟定一套有效的处理方案,或对原有的系统提出改进方案的过程。 系统分析特点: 的处理问题,考虑各种变化因素及其相互影响, 思考解决问题。 借助系统分析,可以正确的提出 ,恰当的选择 ,科学的确定行动的方略。 2.系统分析的一般步骤 (1.明确问题,设立目标) 解决的问题: (2.收集资料,制定方案) 已经条件:船只每次最多允许乘坐两个人或者一个人和一只熊或者两只熊,且河岸的任意一侧若熊的数量多于人数量,人就会被熊吃掉,人与熊均会划船。 方案1:

(3.分析计算,评价比较)分析推理:联系已知条件,分析思考(科学分析),选取了合适的方案过河。 (4.检验核实,作出决策)检验核实:学生按照预定方法上台实践,验证方案。 结论: ①明确问题,设定 ②收集资料,制定 ③分析计算,评价 ④检验核实,做出 3.系统分析的原则 ①性原则:即先整体,后部分;先全局,后局部;先全程,后阶段;先长远,后当前。 ②性原则:系统分析一方面要有严格的工作步骤,另一方面应尽可能地运用科学方法和数学工具进行定量分析,使决策的过程和结果更具有说服力。 ③性原则:系统分析总是为实现系统目标服务的。当系统存在若干个目标时,应将目标排出优先次序,首先选取最优先目标,其次尽可能在不损害第一目标的情况下完成下一个目标。这就需要综合分析,统筹兼顾,不可顾此失彼,因小失大。 ●案例:湖北省的孝襄高速公路总投资额达72亿元人民币,是“十五”期间该省投资规模最大、建设里程最长的一条高速公路。按照设计方案,孝襄高速公路要穿越占地面积达19km2的“洛阳银杏保护区”,2万多棵树龄在百年以上的古银杏树将面临毁灭性的破坏。银杏树的成长周期特别长,移栽成活率极低,一旦被毁损,势必破坏当地的生物多样性。如果更改最初的设计方案,绕避保护区1.4km,工程指挥部就要为此增加投资4200万元。 ●根据以上内容,你认为孝襄高速公路的设计的矛盾在哪里? 附件:课后作业设计: 装修设计 请同学们根据生活所需,设计一个厨房,画出草图,并阐述其中运用的系统分析的知识 思考的问题:①生活所需的物件有哪些? ②这些物件的大小尺寸与空间的尺寸是多少?(带着数据考察,寻找数据信息) ③厨房空间有限,只能放置必需物件,此时应如何取舍?物件摆放要符合使用者的要求,考虑人际关系和科学性原则,如冰箱和微波炉不能放在一起,微波炉不能放在洗手盆附近。 ④根据相应的尺寸比例画草图,在这个过程中还要考虑美观、方便和实用等,学生会根据自己的分析不断反复的与实施者和决策者对话,修改自己的方案直到获得最佳方案。 2

数值分析实验报告1

实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

系统分析原理与方法

系统分析原理与方法 Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】

系统分析的概念 系统是系统分析的最基础的概念。按照一般系统论的创立者贝塔朗菲(L· von Bertalanffy)的观点,系统是处于一定的相互关系并与环境发生关系的各个组成部分(要素)的总体(集)。我国着名科学家钱学森则主张把“极其复杂的研究对象称为系统,即相互作用和相互依赖的若干组成部分合成的具有特定功能的有机整体,而且这个系统本身又是它所从属的一个更大系统的组成部分。”因此,我们可以一般地将系统界定为是由若干处于相互联系并与环境发生相互作用的要素或部分所构成的整体。 世界上的一切事物都是作为系统而存在的,是若干要素按一定的结构和层次组成的,并且具有特定的功能。系统普遍存在于自然界和人类社会之中。它是要由素所构成的整体,离开要素就无所谓的系统,因而要素是系统存在的基础;系统的性质一般是由要素所决定的(有什么的要素,就具有什么样的系统及其功能),但系统又具有各要素所没有的新功能;各种要素在构成系统时,具有一定的结构与层次,没有结构层次的要素的胡乱堆积构不成系统;系统的性质取决于要素的结构,而在一个动态结构的系统中,结构的好坏直接是由要素之间的协调体现出来;系统与环境之间也存在密切的联系,每个系统都是在一定的环境中存在与发展的,它与环境发生物质、能量和信息的交换(这是开放系统的一个基本特点)。系统的各要素之间,要素与整体之间,整体与环境之间存在着一定的有机联系,从而在系统内外形成一定的结构与秩序,使得系统呈现出整体性、有机关联性、结构层次性、环境适应性(开放性)和有序性等特征,这些特征就是所谓的系统的同构性。 系统分析或系统方法,就其本质而言,是一种根据客观事物所具有的系统特征,从事物的整体出发,着眼于整体与部分,整体与结构及层次,结构与功能、系统与环境等的相互联系和相互作用,求得优化的整体目标的现代科学方法以及政策分析方法。拉兹洛认为,系统论为我们提供一种透视人与自然的眼光,“这是一种根据系统概念,根据系统的性质和关系,把现有的发现有机地组织起来的模型。”贝塔朗菲则将系统方法描述为:提出一定的目标,为寻找实现目标的方法和手段就要求系统专家或专家组在极复杂的相互关系网中按最大效益和最小费用的标准去考虑不同的解决方案并选出可能的最优方案。我国学者汪应洛在《系统工程导论》一书中则认为,系统分析是一种程序,它对系统的目的、功能、费用、效益等问题,运用科学的分析工具和方法,进行充分调查研究,在收集、分析处理所获得的信息基础上,提出各种备选方案,通过模型进行仿真实验和优化分析,并对各种方案进行综合研究,从而为系统设计、系统决策、系统实施提出可靠的依据。 系统分析的作用 系统分析主要作用是:鼓励人们对系统的不同部分进行同时的研究;使人们注意系统中的结构和层次的特点;开拓新的研究领域,增加新的知识;突出未知东西的探索,使人们从过去和现在的基础上了解未来;使人们转换视角,从不同的角度或侧面看问题;迫使人们在考虑目标和解决问题的要求时,也同时注意考虑协调、控制、分析水平和贯彻执行的问题;诱导新的发现,注意进行从目的到手段的全面调查等等。系统分析的内容 根据系统的本质及其基本特征,可以将系统分析的内容相对地划分为系统的整体分析、结构分析、层次分析、相关分析和环境分析等几个方面。 一、整体分析 二、整体性是系统的最基本的属性或特征之一。因而,整体分析也就构成系统分析的一个主要内容。根据系统论的原理,任何系统都是由众多的子系统所构成的,子

数值分析实验报告

实验五 解线性方程组的直接方法 实验5.1 (主元的选取与算法的稳定性) 问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。 实验内容:考虑线性方程组 编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。 实验要求: (1)取矩阵?? ? ?? ?? ?????????=????????????????=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。取n=10计算矩阵的 条件数。让程序自动选取主元,结果如何? (2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。 (3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。 (4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。 思考题一:(Vadermonde 矩阵)设 ?? ??????????????????????=? ? ? ?????????????=∑∑∑∑====n i i n n i i n i i n i i n n n n n n n x x x x b x x x x x x x x x x x x A 0020 10022222121102001111 ,, 其中,n k k x k ,,1,0,1.01 =+=, (1)对n=2,5,8,计算A 的条件数;随n 增大,矩阵性态如何变化? (2)对n=5,解方程组Ax=b ;设A 的最后一个元素有扰动10-4,再求解Ax=b (3)计算(2)扰动相对误差与解的相对偏差,分析它们与条件数的关系。 (4)你能由此解释为什么不用插值函数存在定理直接求插值函数而要用拉格朗日或牛顿插值法的原因吗? 相关MATLAB 函数提示: zeros(m,n) 生成m 行,n 列的零矩阵 ones(m,n) 生成m 行,n 列的元素全为1的矩阵 eye(n) 生成n 阶单位矩阵 rand(m,n) 生成m 行,n 列(0,1)上均匀分布的随机矩阵 diag(x) 返回由向量x 的元素构成的对角矩阵 tril(A) 提取矩阵A 的下三角部分生成下三角矩阵

二、系统分析的基本方法

学习目标: 1.能够理解系统分析的含义,了解系统分析在生活中的作用。 2.在分析案例的过程中可以充分理解系统分析的步骤和其原则性。 3.能根据其原则性做出正确的决策。 学习过程 1.系统的分析 1.过河游戏(1) (1)系统的整体目标是 (2)系统分析后的方案: 结论: 系统分析的含义:为了发挥系统的功能,实现系统的 ,运用科学的方法对系统进行周详的考察、分析、比较、试验,并在此基础上拟定一套有效的处理方案,或对原有的系统提出改进方案的过程。 系统分析特点: 的处理问题,考虑各种变化因素及其相互影响, 思考解决问题。 借助系统分析, 可以正确的提出 ,恰当的选择 ,科学的确定行动的方略。 2.系统分析的一般步骤 (1.明确问题,设立目标) 解决的问题: (2.收集资料,制定方案) 已经条件:船只每次最多允许乘坐两个人或者一个人和一只熊或者两只熊,且河岸的任意一侧若熊的数量多于人数量,人就会被熊吃掉,人与熊均会划船。 方案1:

(3.分析计算,评价比较)分析推理:联系已知条件,分析思考(科学分析),选取了合适的方案过河。 (4.检验核实,作出决策)检验核实:学生按照预定方法上台实践,验证方案。 结论: ①明确问题,设定 ②收集资料,制定 ③分析计算,评价 ④检验核实,做出 3.系统分析的原则 ①性原则:即先整体,后部分;先全局,后局部;先全程,后阶段;先长远,后当前。 ②性原则:系统分析一方面要有严格的工作步骤,另一方面应尽可能地运用科学方法和数学工具进行定量分析,使决策的过程和结果更具有说服力。 ③性原则:系统分析总是为实现系统目标服务的。当系统存在若干个目标时,应将目标排出优先次序,首先选取最优先目标,其次尽可能在不损害第一目标的情况下完成下一个目标。这就需要综合分析,统筹兼顾,不可顾此失彼,因小失大。 ●案例:湖北省的孝襄高速公路总投资额达72亿元人民币,是“十五”期间该省投资规模最大、建设里程最长的一条高速公路。按照设计方案,孝襄高速公路要穿越占地面积达19km2的“洛阳银杏保护区”,2万多棵树龄在百年以上的古银杏树将面临毁灭性的破坏。银杏树的成长周期特别长,移栽成活率极低,一旦被毁损,势必破坏当地的生物多样性。如果更改最初的设计方案,绕避保护区1.4km,工程指挥部就要为此增加投资4200万元。 ●根据以上内容,你认为孝襄高速公路的设计的矛盾在哪里? 附件:课后作业设计: 装修设计 请同学们根据生活所需,设计一个厨房,画出草图,并阐述其中运用的系统分析的知识 思考的问题:①生活所需的物件有哪些? ②这些物件的大小尺寸与空间的尺寸是多少?(带着数据考察,寻找数据信息) ③厨房空间有限,只能放置必需物件,此时应如何取舍?物件摆放要符合使用者的要求,考虑人际关系和科学性原则,如冰箱和微波炉不能放在一起,微波炉不能放在洗手盆附近。 ④根据相应的尺寸比例画草图,在这个过程中还要考虑美观、方便和实用等,学生会根据自己的分析不断反复的与实施者和决策者对话,修改自己的方案直到获得最佳方案。

数值计算方法实验报告

差值法实验日志 实验题目:插值法 实验目的: 1.掌握拉格朗日插值、牛顿插值、分段低次插值和样条插值的方法。 2.对四种插值结果进行初步分析。 实验要求: (1)写出算法设计思想; (2)程序清单; (3)运行的结果; (4)所得图形; (5)四种插值的比较; (6)对运行情况所作的分析以及本次调试程序所取的经验。如果程序未通过,应分析其原因。 实验主要步骤: 1.已知函数) f满足: (x x0.0 0.1 0.195 0.3 0.401 0.5 f(0.39894 0.39695 0.39142 0.38138 0.36812 x ) 0.35206 (1)用分段线性插值; 打开MATLAB,按以下程序输入: x0=-5:5; y0=1./(1+x0.^2); x=-5:0.1:5; y=1./(1+x.^2); y1=lagr(x0,y0,x); y2=interp1(x0,y0,x); y3=spline(x0,y0,x);

for k=1:11 xx(k)=x(46+5*k); yy(k)=y(46+5*k); yy1(k)=y1(46+5*k); yy2(k)=y2(46+5*k); yy3(k)=y3(46+5*k); end [xx;yy;yy2;yy3]' z=0*x; plot(x,z,x,y,'k--',x,y2,'r') plot(x,z,x,y,'k--',x,y1,'r') pause plot(x,z,x,y,'k--',x,y3,'r') 回车得以下图形:

(2) 拉格朗日插值。 创建M 文件,建立lagr 函数: function y=lagr1(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end 新建一个M 文件,输入: x0=[0.0 0.1 0.195 0.3 0.401 0.5]; y0=[0.39894 0.39695 0.39142 0.38138 0.36812 0.35206]; x=0.0:0.01:0.5; y1=lagr1(x0,y0,x); 00.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

系统分析的基本方法教案

普通高中通用技术课程《技术与设计Ⅱ》第二章第2节 《系统分析的基本方法》 【教学对象】高中二年级 【授课教师】刘忠 【教材分析】 “系统分析的基本方法”在高中通用技术课程《技术与设计Ⅱ》《系统与设计》章节中起承上启下的作用,是在学生学习掌握“系统基本属性”后要转向“系统优化”学习的桥梁,这个章节的学习理解也是至关重要的,它是系统基本属性的深入,也是系统的结构和系统概念的综合,又是系统设计的基础。这节知识的学习重点是培养学生整体分析和综合使用技术的水平,关键是要树立学生系统分析的理念和使用系统分析的方法解决问题的水平。 【学情分析】 学生在生活中其实已经初步掌握了系统分析的方法,并能够加以使用,只不过他们缺少一定的理论依据,并不了解自己之所以有这样或那样的决定是因为什么,所以需要我们通过讲解把系统分析从他们的生活中提炼出来,使他们能够区别经验决策与科学决策的区别和优缺点,进而掌握系统分析的方法,用系统的观点分析事物。 【教学设计思路】 本课程内容以“体验式教学”为引领,基于体验式的通用技术课堂教学主要是使学生亲历、体验技术设计的全过程。我在教学中安排:学生以情景剧形式完成“重庆一日游”系统设计任务,激发学生学习兴趣,让学生体验系统分析需要经历的一般步骤;在实践操作阶段,通过让学生亲自体验改进学校学生就餐排队时间,来总结和巩固系统分析基本方法的相关知识。

学生在具体分析过程中往往会局限在具体问题的深入探究上,不能使用系统的思想和定性、定量相结合的方法实行系统分析,要即时对学生实行指导,协助学生从宏观上把握系统分析和系统优化的全过程,注重学生的体验和感悟。 【教学目标】 1.知识与技能: ⑴通过简单的系统案例分析,能够理解系统分析的含义,了解系统分析在生活中的广泛应用。 ⑵在分析案例的过程中能够充分理解系统分析的步骤及其原则性。 ⑶能根据其原则性做出准确的决策。 2.过程与方法: 经历从生活中的实例理解系统分析的含义,通过讨论、案例分析,使学生懂得用所学的系统分析知识解决相关问题,发展使用全面、综合和联系的观点看待事物和解决问题的思维方法。 3.情感态度与价值观: 通过实践、体验系统分析的过程,引导学生将系统分析的思想使用于生活和学习当中,并形成认真、严谨、有条理的做事态度。 【教学重、难点】 1.教学重点 ⑴了解系统分析的概念 ⑵初步掌握系统分析的基本方法 2.教学难点 能实行简单的系统分析,并做出决策,总结出系统分析的一般步骤。 【教法与学法】

系统分析的基本方法教学设计

教学设计

师生活动教学过程 通过具体实例更容易进行理解一、系统的基本特性 (1)整体性 系统是一个整体,它不是各个要素(部分)的简单相力卩,系统的整体功能是各要素(部分)在孤立状态所没有的例如:一堆沙子,钢材,水泥和绳索散放在一起没有什么意义,但如果将它们按照一定的结构形成一个整体,如迁成一座悬索桥,就具有了交通的功能,而若蒜根绳索出现故障,就可能影响整座桥正常使用 系统的整体功能大于组成系统的各部分的功能之和,这就是我们常说的2> 1+1 例如:一个企业是由管理部门、生产部门、营销部门、供诮部门各部门组成的整体,任何一个部门都不可能单独实现企业的目标 人的双眼视觉功能大大超过两只眼视觉功能简单的相 加的部和 (2)相关性 相关性是指组成系统的各要素之间或系统整体与部分之间相互作用、相互联系 例如:建筑物通过结构来承受重力,古代建 筑多采用“梁柱结构”,当柱与柱之间的梁的跨度增大时,则梁的厚度要相应地加大,否则就不足以承受设计所需的重力,梁的跨度与梁的厚度之间的关系就反映了这一系统内部要素之间的相关性 举例:厨具安装,各个厨具之间的关系,与 整体之间的关系? (3)目的性 任何系统都具有某种目的,都要实现一定的 功能 例如:一个企业的目的是实现企业利润的最 大化,成本和能源使用的最小化等 一个钟表的目的是为了满足人们对 计时功能的需要 (4)动态性 “太阳每天都是新的”这说明任何事物都是不断变化的,任何系统都是一个动态的系统,外在运动变化和发展之中例如:机械转动系统的零件之间都会有磨损,雷达天线24小时转动以搜索目标;看病和生病的过程体现了一个系统的动态性(5)环境适应性 一个系统与其所处的环境之间通常都有物质,

相关主题
文本预览
相关文档 最新文档