导航:首页 > 源码编译 > 信号处理三点中心差分算法

信号处理三点中心差分算法

发布时间:2022-04-04 11:06:09

‘壹’ 显式差分算法

问题求解期望能找出一个静态解,然而在有限差分公式中包含有动力方程。这样,可以保证在被模拟的物理系统本身是非稳定的情况下,有限差分数值计算仍有稳定解。对于非线性材料,物理不稳定的可能性总是存在的。

质量守恒定律要求一个网格块中地下水的流入或流出净流量等于存储于网格块的地下水的变化量。图2-2表示了一个具有Δx,Δy和Δz维的网格块。图中也表示了网格块的6个相邻块中心处的节点,分别表示为x,x+,y,y+,z和z+。通过该块的面流到中心节点的流量为正,且分别表示为Q(x-),Q(x+),Q(y-),Q(y+),Q(z-)和Q(z+)

图2-2 网格块示意图

在该网格块中的地下水源汇项包括抽水井、排水,或者补给量。排泄到块的流量满足下列方程:

典型煤矿地下水运动及污染数值模拟:Feflow及Modflow应用

式中:h为中心节点的水头;S为中心块体的储水系数。

在有限差分中,偏导数可近似用有限差分形式表示,因此,方程可变为

典型煤矿地下水运动及污染数值模拟:Feflow及Modflow应用

式中:t为当前时刻;t-Δt为上一时间步长的时刻;h为中心节点的水头。

注意上述公式中所有的Q为在t时间步长处的流量。

现在考虑从临近节点来的典型流Q(x+)。该流量与处在中心节点和x+节点之间的水头差值有关,即

典型煤矿地下水运动及污染数值模拟:Feflow及Modflow应用

式中:h(x+)为x+节点处的水头;h为中心节点处的水头;C(x+)为导水系数,其值取决于中心节点和x+节点处的维数及Kx值。从其他方向的流量可简单定义为

典型煤矿地下水运动及污染数值模拟:Feflow及Modflow应用

式中:C(x-),C(y+),…为其他导水系数,h(x-),h(y+),…,为其他相邻节点的水头。将方程(2-20)和方程(221)代入到方程(219)中,则某节点的有限差分方程变为

典型煤矿地下水运动及污染数值模拟:Feflow及Modflow应用

该方程可概化为

典型煤矿地下水运动及污染数值模拟:Feflow及Modflow应用

其中D1~D8可用以下方法量化:

(1)中心网格块体和其6个直接相邻的块体的物理性质;

(2)中心网格块体的内在源项QS;

(3)在中心阶段h(t-Δt)上一个时间步长的水头;

(4)上一个时间步长的大小。

对于稳定流模型,h(t)-h(t-Δt)=0,且在每个节点方程中的储存项可以忽略不计。

假定中心块体和x+块体在3个方向中具有同一方向,大多数有限差分软件诸如modf-low允许这些方向因不同块体的不同而不同,且当块体中水位在块体中变化时,Δz方向的水头也随之变化。

假定在x方向上为一维流,利用达西定律计算流量Q(x+)为:

典型煤矿地下水运动及污染数值模拟:Feflow及Modflow应用

式中:Kx(→x+)为中心节点和x+节点之间的水力传导系数。和公式(2-20)对比,显然导水系数为

典型煤矿地下水运动及污染数值模拟:Feflow及Modflow应用

当中心节点和x+节点具有同样的Kx值,中心节点和x+节点之间的水力传导系数可简化为Kx(→x+)=Kx=Kx(x+)

‘贰’ 王秉中的学术专着

1、王秉中,《计算电磁学》,科学出版社,2002年。本书在论述计算电磁学的产生背景、现状和发展趋势的基础上,系统地介绍了电磁仿真中的有限差分法、人工神经网络在电磁建模中的应用,遗传算法在电磁优化中的应用,涉及电磁场工程cad中的三个核心问题,即电磁场问题的数值仿真、高效建模和优化设计。
本书可供在计算电磁学、电磁场理论、电磁场工程等领域从事研究和开发工作的科技人员参考,也可作为高等院校相关专业高年级本科生和研究生的教学用书。全书目录如下:
第一章绪论1.1计算电磁学的产生背景1.2电磁场问题求解方法分类1.3当前计算电磁学中的几种重要方法1.4电磁场工程专家系统第一篇电磁仿真中的有限差分法第二章有限差分法2.1差分运算的基本概念2.2二维电磁场泊松方程的差分格式2.3差分方程组的求解2.4工程应用举例2.5标量时域有限差分法第三章时域有限差分法Ⅰ——差分格式及解的稳定性3.1fdtd基本原理3.2解的稳定性及数值色散3.3非均匀网格及共形网格3.4三角形网格及平面型广义yee网格<br/>3.5半解析数值模型3.6良导体中的差分格式第四章时域有限差分法Ⅱ——吸收边界条件.4.1bayliss-turkel吸收边界条件4.2engquist-majda吸收边界条件4.3廖氏吸收边界条件4.4梅-方超吸收边界条件4.5berenger完全匹配层(pml)4.6gedney完全匹配层第五章时域有限差分法Ⅲ——若干实用技术5.1激励源技术5.2集总参数电路元件的模拟5.3近区场到远区场的变换5.4数字信号处理技术5.5应用举例第六章基于交变隐式差分方向方法的时域有限差分法——adi-fdtd方法6.1adi-fdtd基本原理6.2解的稳定性与数值色散6.3吸收边界条件6.4应用举例第二篇人工神经网络在电磁建模中的应用第七章人工神经网络模型7.1生物神经元7.2人工神经元模型7.3多层感知器神经网络7.4多层感知器的映射能力7.5多样本输入并行处理第八章用回传算法训练多层感知器8.1神经网络的学习能力8.2误差回传算法8.3训练模式8.4回传算法的改进8.5将受控学习看做函数最优化问题8.6网络推广第九章神经网络与电磁建模9.1正交试验设计9.2中心组合试验设计9.3随机组合试验设计第十章知识人工神经网络模型10.1外挂式知识人工神经网络模型10.2嵌入式知识人工神经网络模型第三篇遗传算法在电磁优化中的应用第十一章遗传算法基本原理11.1基本的遗传算法11.2遗传算法的特点及数学机理第十二章遗传算法在电磁优化中的应用12.1天线及天线阵的优化设计12.2平面型带状结构的优化设计
参考文献

‘叁’ 进化算法的差分算法

差分进化算法(Differential Evolution, DE)是一种新兴的进化计算技术,或称为差分演化算法、微分进化算法、微分演化算法、差异演化算法。它是由Storn等人于1995年提出的,最初的设想是用于解决切比雪夫多项式问题,后来发现DE也是解决复杂优化问题的有效技术。DE与人工生命,特别是进化算法有着极为特殊的联系。
差分进化算法是基于群体智能理论的优化算法,通过群体内个体间的合作与竞争产生的群体智能指导优化搜索。但相比于进化算法,DE保留了基于种群的全局搜索策略,采用实数编码基于差分的简单变异操作和一对一的竞争生存策略,降低了遗传操作的复杂性。同时,DE特有的记忆能力使其可以动态跟踪当前的搜索情况,以调整其搜索策略,具有较强的全局收敛能力和鲁棒性,且不需要借助问题的特征信息,适于求解一些利用常规的数学规划方法所无法求解的复杂环境中的优化问题。
差分进化算法是一种基于群体进化的算法,具有记忆个体最优解和种群内信息共享的特点,即通过种群内个体间的合作与竞争来实现对优化问题的求解,其本质是一种基于实数编码的具有保优思想的贪婪遗传算法。
DE是一种用于优化问题的启发式算法。本质上说,它是一种基于实数编码的具有保优思想的贪婪遗传算法 。同遗传算法一样,DE包含变异和交叉操作,但同时相较于遗传算法的选择操作,DE采用一对一的淘汰机制来更新种群。由于DE在连续域优化问题的优势已获得广泛应用,并引发进化算法研究领域的热潮。
DE由Storn 以及Price提出,算法的原理采用对个体进行方向扰动,以达到对个体的函数值进行下降的目的,同其他进化算法一样,DE不利用目标函数的梯度信息,因此对目标的可导性甚至连续性没有要求,适用性很强。同时,算法与粒子群优化有相通之处 ,但因为DE在一定程度上考虑了多变量间的相关性,因此相较于粒子群优化在变量耦合问题上有很大的优势。算法的实现参考实现代码部分。

‘肆’ 请问在信号处理中对信号进行一阶差分的作用是什么,特别是在进行奇异点检测时

【1】离散信号的一阶差分类同于连续信号的一阶微分。连续函数在奇异点处的微分值常有剧烈波动。离散信号处理中正是根据这一特点利用差分实现奇异点检测。

【2】信号处理:信号处理 在事件变化过程中抽取特征信号,经去干扰、分析、综合、变换和运算等处理,从而得到反映事件变化本质或处理者感兴趣的的信息的过程。分模拟信号处理和数字信号处理。

‘伍’ excle中心差分法

用Excel进行矩阵计算

一、Excel的数组、数组名和矩阵函数的设置
1�矩阵不是一个数,而是一个数组。在Excel里,数组占用一片单元域,单元域用大括号表示,例如{A1:C3},以便和普通单元域A1:C3相区别。设置时先选定单元域,同时按Shift+Ctrl+Enter键,大括号即自动产生,数组域得以确认。
2�Excel的一个单元格就是一个变量,一片单元域也可以视为一组变量。为了计算上的方便,一组变量最好给一个数组名。例如A={A1:C3}、B= {E1:G3}等。数组名的设置步骤是:选定数组域,点“插入”菜单下的“名称”,然后选择“定义”,输入数组名如A或B等,单击“确定”即可。
3�矩阵函数是Excel进行矩阵计算的专用模块。常用的矩阵函数有MDETERM(计算一个矩阵的行列式)、MINVERSE(计算一个矩阵的逆矩阵)、MMULT(计算两个矩阵的乘积)、SUMPRODUCT(计算所有矩阵对应元素乘积之和)……函数可以通过点击“=”号,然后用键盘输入,可以通过点击“插入”菜单下的“函数”,或点击fx图标,然后选择“粘贴函数”中相应的函数输入。
二、矩阵的基本计算
数组计算和矩阵计算有很大的区别,我们用具体例子说明。
已知A={3 -2 5,6 0 3,1 5 4},B={2 3 -1,4 1 0,5 2 -1},将这些数据输入Excel相应的单元格,可设置成图1的形状,并作好数组的命名,即第一个数组命名为A,第二个数组命名为B。计算时先选定矩阵计算结果的输出域,3×3的矩阵,输出仍是3×3个单元格,然后输入公式,公式前必须加上=号,例如=A+B、=A-B、=A*B等。A+B、A-B数组运算和矩阵运算没有区别,“=A*B”是数组相乘计算公式,而“=MMULT(A,B)”则是矩阵相乘计算公式,“=A/B”是数组A除数组B的计算公式,而矩阵相除是矩阵A乘B的逆矩阵,所以计算公式是“=MMULT(A,MINVERSE(B))”。公式输入后,同时按Shift+Ctrl+Enter 键得到计算结果。图1中的数组乘除写作A*B、A/B,矩阵乘除写作A·B、A÷B,以示区别。
三、矩阵计算的应用
下面让我们来计算一个灰色预测模型。
灰色预测是华中理工大学邓聚龙教授创立的理论,其中关键的计算公式是计算微分方程+B1x=B2的解,{B1,B2}=(XTX)-1(XTY),式中:XT是矩阵X的转置。
作为例子,已知X={-45.5 1,-79 1,-113.5 1,-149.5 1} Y={33,34,35,37}
在Excel表格中,{B2:C5}输入X,{E2:H3}输入X的转置。处理转置的方法是:选定原数组{B2:C5},点“编辑”菜单的“复制”,再选定数组转置区域{E2:H3},点“编辑”菜单的“选择性粘贴”,再点“转置”即可。{J2:J5}输入Y,然后选取{L2:L3}为B1、B2的输出区域,然后输入公式:
=MMULT(MINVERSE(MMULT(E2:H3,B2:C5)),MMULT(E2:H3,J2:J5))
公式输入完毕,同时按Shift+Ctrl+Enter键,B1、B2的答案就出来了,如图2。
如果计算的矩阵更复杂一些,就必须分步计算。不过,使用Excel也是很方便的。
POWERPOINT 演示文档 http://web.ntpu.e.tw/~ccw/manage_math/array.ppt EXCEL矩阵运算(繁体中文)

‘陆’ 数字信号处理 已知差分方程求 递推法求输出序列y(n)后面为什么要加u(n)

你没有把题目给拍摄出来,所以不知道前提条件是什么,从解答过程来看,应该是把这个序列定义为因果信号,也就是说只考虑 N>等于0之后的序列。

‘柒’ 差分算法是什么

在数值计算中,常用差分近似微分.
最简单的差分格式有向前、向后和中心3种.
向前差分:f'(n)=f(n+1)-f(n)
向后差分:f'(n)=f(n)-f(n-1)
中心差分:f'(n)=[f(n+1)-f(n-1)]/2

‘捌’ 数字信号处理 计算题 求解

这个太专业了,我一点都看不懂!

‘玖’ 四象限光电探测器的信号处理算法

为束斑在四象限上的位置。图中四象限探测器光敏面的半径为R。四象限中心与直角坐标的零点O重合。图中四象限的对称轴分别与坐标的x、y轴重合。束斑中心为O?。当O?位于四象限中心时,四个象限上接收到的光信号强度相等,经计算处理后得到的误差信号为零。当O?逐渐偏离O时,Er逐渐增大。Ex、Ey分别代表Er在x、y方向上的分量。为消除束斑光强(光能量或功率)波动对Er的影响,通常要对Er进行归一化处理。即在Er计算过程中除以一个与束斑光强度相关的量值。根据不同的应用目的,束斑半径r相对于四象限光敏区半径R存在一个最佳值ropt。对大多数应用场合ropt取1/2R。

‘拾’ 什么是三帧差分法

三帧差分算法是相邻两帧差分算法的一种改进方法,它选取连续三帧视频图像进行差分运算,消除由于运动而显露背景影响,从而提取精确的运动目标轮廓信息。该算法的基本原理是是先选取视频图像序列中连续三帧图像并分别计算相邻两帧的差分图像,然后将差分图像通过选取适当的阈值进行二值化处理,得到二值化图像,最后在每一个像素点得到的二值图像进行逻辑与运算,获取共同部分,从而获得运动目标的轮廓信息。

三帧差法的具体算法如下。

提取连续的三帧图像,I(k-1),I(k),I(k+1) 。

(1) d(k,k-1) [x,y] = | I(k)[x,y] - I(k-1)[x,y] |;

d(k,k+1)[x,y] = | I(k+1)[x,y] - I(k)[x,y] |;

(2) b(k,k-1)[x,y] = 1; if d(k,k-1) [x,y] >= T;

b(k,k-1)[x,y] = 0; if d(k,k-1) [x,y] < T;

b(k+1,k)[x,y] = 1 if d(k+1,k) [x,y] >= T;

b(k+1,k)[x,y] = 0 if d(k+1,k) [x,y] < T;

(3) B(k)[x,y] = 1 ; if b(k,k-1)[x,y] && b(k+1,k)[x,y] == 1 ;

B(k)[x,y] = 0 ; if b(k,k-1)[x,y] && b(k+1,k)[x,y] ==0 ;

比较关键的就是第2步的阈值T的选取问题,单纯用otsu算法分割貌似效果不太好,如果手动设置一个较小的值(如10)效果还行。

用otsu取阈值实现的一个三分差法代码。效果不是很好。

运行环境 VS2008+OpenCV2.0+windows XP .

[cpp] view plainprint?#include "highgui.h"
#include "cv.h"
#include "cxcore.h"
#include "cvaux.h"
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <vector>
#include <windows.h>
using namespace std;

#pragma comment(lib, "highgui200.lib")
#pragma comment(lib, "cv200.lib")
#pragma comment(lib, "cxcore200.lib")
#pragma comment(lib, "cvaux200.lib")

#define GET_IMAGE_DATA(img, x, y) ((uchar*)(img->imageData + img->widthStep * (y)))[x]
int T = 10;
int Num[300];
int Sum[300];

void InitPixel(IplImage * img, int &_low, int &_top)
{
memset(Num,0,sizeof(Num));
memset(Sum,0,sizeof(Sum));
_low = 255;
_top = 0;
for(int i = 0;i < img->height;i++)
{
for(int j = 0;j < img->width;j++)
{
int temp = ((uchar*)(img->imageData + img->widthStep*i))[j];
if(temp < _low)
_low = temp;
if(temp > _top)
_top = temp;
Num[temp] += 1;
}
}
for(int i = 1 ; i < 256 ; i++)
{
Sum[i] = Sum[i-1]+ i*Num[i];
Num[i] += Num[i-1];
}
}
int otsu (IplImage *img)
{
int _low,_top,mbest=0;
float mn = img->height*img->width;
InitPixel(img,_low,_top);
float max_otsu = 0;
mbest = 0;
if( _low == _top)
mbest = _low;
else
{
for(int i = _low; i< _top ; i++)
{
float w0 = (float)((Num[_top]-Num[i]) / mn);
float w1 = 1 - w0;
float u0 = (float)((Sum[_top]-Sum[i])/(Num[_top]-Num[i]));
float u1 = (float)(Sum[i]/Num[i]);
float u = w0*u0 + w1*u1;
float g = w0*(u0 - u)*(u0 - u) + w1*(u1 - u)*(u1 - u);
if( g > max_otsu)
{
mbest = i;
max_otsu = g;
}
}
}
return mbest;
}
int main()
{
int ncount=0;
IplImage *image1=NULL;
IplImage *image2=NULL;
IplImage *image3=NULL;
IplImage *Imask =NULL;
IplImage *Imask1=NULL;
IplImage *Imask2=NULL;
IplImage *Imask3=NULL;
IplImage *mframe=NULL;
CvCapture *capture = cvCreateFileCapture("E:\\Motion\\IndoorGTTest2.avi");
//CvCapture *capture = cvCreateCameraCapture(0);
cvNamedWindow("src");
cvNamedWindow("dst");
cvNamedWindow("Imask1");
cvNamedWindow("Imask2");
cvNamedWindow("Imask3");
//cvCreateTrackbar("T","dst",&T,255,0);
while(mframe=cvQueryFrame(capture))
{
DWORD start=GetTickCount();
if(ncount>1000000000)
ncount=100;
ncount+=1;
if(ncount==1)
{
image1=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1);
image2=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1);
image3=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1);
Imask =cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1);
Imask1=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1);
Imask2=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1);
Imask3=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1);

cvCvtColor(mframe,image1,CV_BGR2GRAY);
}
if(ncount==2)
cvCvtColor(mframe,image2,CV_BGR2GRAY);

if(ncount>=3)
{
if(ncount==3)
cvCvtColor(mframe,image3,CV_BGR2GRAY);
else
{
cvCopy(image2,image1);
cvCopy(image3,image2);
cvCvtColor(mframe,image3,CV_BGR2GRAY);
}

cvAbsDiff(image2,image1,Imask1);
cvAbsDiff(image3,image2,Imask2);

//cvShowImage("Imask1",Imask1);
//cvShowImage("Imask2",Imask2);

int mbest1 = otsu(Imask1);
cvSmooth(Imask1, Imask1, CV_MEDIAN);
cvThreshold(Imask1,Imask1,mbest1, 255, CV_THRESH_BINARY);

int mbest2 = otsu(Imask2);
cvSmooth(Imask2,Imask2, CV_MEDIAN);
cvThreshold(Imask2,Imask2,mbest2, 255, CV_THRESH_BINARY);

cout<<mbest1<<" "<<mbest2<<endl;

cvAnd(Imask1,Imask2,Imask);

/*cvErode(Imask, Imask);
cvDilate(Imask,Imask);*/

DWORD finish=GetTickCount();
// cout<<finish-start<<"ms"<<endl;

cvShowImage("src",image2);
cvShowImage("dst",Imask);
}
char c = cvWaitKey(30);
if(c==27)
break;
}

return 0;
}

阅读全文

与信号处理三点中心差分算法相关的资料

热点内容
高速哪个app比较准确 浏览:203
王者荣耀安卓怎么购买转移号 浏览:950
改变自己pdf 浏览:958
php自动安装程序 浏览:418
linux命令行开机 浏览:422
程序员图鉴刷屏 浏览:643
vector源码java 浏览:75
中文编程网页 浏览:782
文件加密如何进行比对 浏览:555
阿里云服务器计算型通用型区别 浏览:945
夜嗨app怎么不能更新 浏览:538
qd65y压缩机参数配置 浏览:940
中级会计教材pdf 浏览:477
弱签名算法md5 浏览:364
进行系统硬件设置的文件夹是 浏览:756
dwrg什么文件夹 浏览:677
小米电视如何加密wifi 浏览:343
java私钥解密 浏览:959
犯过罪还能当程序员吗 浏览:986
参数名称java 浏览:17