欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 实用文>分数阶傅里叶变换的数值实现

分数阶傅里叶变换的数值实现

2022-11-29 08:57:53 收藏本文 下载本文

“MeridianAtlas”通过精心收集,向本站投稿了10篇分数阶傅里叶变换的数值实现,以下是小编为大家整理后的分数阶傅里叶变换的数值实现,欢迎阅读与收藏。

分数阶傅里叶变换的数值实现

篇1:分数阶傅里叶变换的数值实现

分数阶傅里叶变换的数值实现

信号及其傅里叶变换可以分别反映信号在时频两域内的信息.傅里叶变换是一种常用的数学工具,在数学、物理及工程技术领域都得到了十分广泛的应用.介绍了一种崭新的信号分析工具--分数阶傅里叶变换,并用经典的傅里叶变换的观点对分数阶傅里叶变换进行了解释.对于分数阶傅里叶变换的实现,因一般情况下分数阶傅里叶变换给不出解析表达式,故分数阶傅里叶变换的.数值算法的研究是十分重要的.给出了分数阶傅里叶变换的较准确的数值计算方法.利用此方法对被线性调频函数污染混叠的高斯信号进行了滤波分离.

作 者:陈明杰  作者单位:重庆工商大学,计算机与信息工程学院,重庆,400067 刊 名:重庆大学学报(自然科学版)  ISTIC EI PKU英文刊名:JOURNAL OF CHONGQING UNIVERSITY(NATURAL SCIENCE EDITION) 年,卷(期): 26(5) 分类号:O174.22 关键词:分数阶傅里叶变换   傅里叶变换   滤波   干扰  

篇2:分数阶对流-弥散方程的数值求解

分数阶对流-弥散方程的数值求解

对严格的时间分数阶对流--弥散方程和严格的空间分数阶对流--弥散方程分别建立了差分格式,并用所建立的两个差分格式对同一理想算例进行了求解.通过对分数阶导数取不同的'参数值,得到一系列结果,分析了不同分数阶导数描述的反常扩散现象及其变化规律,并和传统的整数阶对流--弥散方程的求解结果进行了对比.当时间分数阶对流--弥散方程和空间分数阶对流--弥散方程的分数阶导数的参数分别取整数值时,时间分数阶对流--弥散方程、空间分数阶对流--弥散方程和传统整数阶对流--弥散方程的计算结果相同,表明本文提出的对时间分数阶对流--弥散方程和空间对流--弥散方程数值求解方法是可行的,且整数阶对流--弥散方程是分数阶对流--弥散方程的特殊情况.和正常扩散相比,时间分数阶对流--弥散方程中分数阶导数的参数值越小,溶质扩散得越慢,表现为拖尾分布:空间分数阶对流--弥散方程中分数阶导数的参数值越小,溶质扩散得越快,表明空间的非局域性相关性越强.

作 者:夏源 吴吉春 Xia Yuan Wu Ji-Chun  作者单位:夏源,Xia Yuan(南京大学水科学系,南京,210093)

吴吉春,Wu Ji-Chun(南京大学污染控制与资源化研究国家重点实验室,南京,210093)

刊 名:南京大学学报(自然科学版)  ISTIC PKU英文刊名:JOURNAL OF NANJING UNIVERSITY(NATURAL SCIENCES) 年,卷(期): 43(4) 分类号:P641.2 关键词:分数阶对流--弥散方程   反常扩散   时空相关性   数值求解  

篇3:空间-时间分数阶对流扩散方程的数值解法

空间-时间分数阶对流扩散方程的数值解法

本文考虑一个空间-时间分数阶对流扩散方程.这个方程是将一般的对流扩散方程中的时间一阶导数用α(0<α<1)阶导数代替,空间二阶导数用β(1<β<2)阶导数代替.本文提出了一个隐式差分格式,验证了这个格式是无条件稳定的,并证明了它的.收敛性,其收敛阶为O(ι+h).最后给出了数值例子.

作 者:覃平阳 张晓丹 Qin Pingyang Zhang Xiaodan  作者单位:北京科技大学应用科学学院数力系,北京,100083 刊 名:计算数学  ISTIC PKU英文刊名:MATHEMATICA NUMERICA SINICA 年,卷(期): 30(3) 分类号:O24 关键词:对流扩散方程   分数阶导数   隐式差分格式   稳定性   收敛性  

篇4:图像傅里叶变换、反变换的实现

课程名称:数字图像处理

组 长: 王文雄 学号:30590323 年级专业班级:07通信3班 成员一: 庞柱坚 学号:200730590318 年级专业班级:07通信3班 成员二: 王弥光 学号:200730590322 年级专业班级: 07通信3班 成员三: 学号: 年级专业班级:07通信3班

指导教师 邓继忠

报告提交日期

6 月1日

项目答辩日期

20 6 月1日

目 录

1. 项目要求............................................................... 3 2. 项目开发环境........................................................... 3 3. 系统分析............................................................... 3 3.1. 系统的主要功能分析 ............................................... 3 3.2. 系统的关键问题及解决方法(或思路) ............................... 6 4. 系统设计............................................................... 8 4.1. 程序流程图及说明 ................................................... 8 4.2. 程序主要模块(或功能)介绍 ........................................ 10 4.2.1. 一维 FFT 和 IFFT ............................................. 10 4.2.2. 二维图像 FFT 和 IFFT: ....................................... 11 5. 实验结果与分析........................................................ 12 5.1. 实验结果 .......................................................... 12 5.2. 项目的创新之处 .................................................... 13 5.3. 存在问题及改进设想 ................................................ 13 6. 心得体会.............................................................. 14 6.1. 系统开发的体会 .................................................... 14 6.2. 对本门课程的改进意见或建议 ........................................ 14 7. 附件一................................................................ 15

1. 项目要求

1.基本要求:自修教材相关内容(P52-74)或其它参考资料,在CVI下编程对尺寸为2N(N为正整数)的图像进行FFT(快速傅里叶变换)和(快速傅里叶反变换)。 (不能利用CVI下的函数)

2.题目拓展:编程实现任意大小图像的二维傅立叶的变换与反变换。

2. 项目开发环境

项目开发环境主要分为软件环境和硬件环境

软件:Lab Windows/CVI和IMAQ_Vision for LabWindows/CVI。Lab Windows/CVI是美国National Instrument(简称NI)公司开发的基于C语言的虚拟仪器开发平台,适用于自动测试、自动控制、测试仪器通信、测试硬件控制、信号分析及图像处理等软件的开发。经过版本的不断更新,Lab Windows/CVI已经成为测控领域应用最为广泛的软件开发工具之一。而IMAQ_Vision for LabWindows/CVI是NI公司开发的基于LabWindows/CVI的高级图像处理和分析软件包,是进行图像处理和分析的教学和科研的有力工具。软件包提供了3个重要的文件:

硬件:个人PC电脑(主频:2.6GHZ*2 内存:1G*2)

3. 系统分析

3.1. 系统的主要功能分析

傅里叶变换是研究信号频域特性首要数学工具。在数字图像频域处理中,常常要对二维图像做快速傅里叶变换,由于傅里叶变换的可分离性,二维快速傅里叶变可以分解为对行、列两个方向的一维快速傅里叶变换,所以在LabWindows/CVI 集成开发

环境下实现二维图像的快速傅里叶变换的关键是一维傅里叶变换的实现。

在本系统设计过程中,主要分成两个部分完成:

第一部分是一维快速傅里叶变换,该部分所包含的变量函数基本上不依赖于特定的软件平台,仅仅与C语言有关,这部分是为二维快速傅里叶服务的。主要有内容及其作用如表格1所示。

表 1 一维快速傅里叶变换及反变换功能模块列表

第二部分是二维快速傅里叶变换及其反变换,该部分主要是在一维快速傅里叶变换及其反变换的基础上,完成对一幅二维图像的快速傅里叶变换及其反变换,并将结果显示出来。主要函数模块及其功能如表格2所示。

表2 二维快速傅里叶变换及反变换功能模块列表

3.2. 系统的关键问题及解决方法(或思路)

二维图像的快速傅里叶变换及其反变换可以分解成行、列两个方向上的一维快速傅里叶变换及其反变换,由因为快速傅里叶变换和反变换的原理是一致的,所以,在整个系统设计的过程中,最关键的问题就是如何用C语言程序描述模拟整个快第一文库网速傅里叶变换的运算流程。

为了解决这个问题,根据快速傅里叶变换运算流图,将整个变换过程分层描述,共分解为3个层次:“级”、“组”和“个”。一个快速傅里叶变换运算过程分为i个级,每个级包含j个组,每个组又包含k个单个蝶形运算。例如如图1所示的N=8的快速傅里叶变换的运算流图,该流图共分为3个级:第一级包含4个组,每个组又1个单个蝶形运算;第二级包含2个组,每个组有2个单个蝶形运算;第三级包含1个组,每个组有4个蝶形运算。

图1 N=8的快速傅里叶变换蝶形运算流图

在函数fft(int length, complex src[])实现时使用3重for循环来描述,最外

层for循环是对“级”的循环,第二层for循环是对每一级里“组”的循环,最内层for

循环是对每一组里“个“,即单个蝶形运算的'循环。程序代码如下所示:

/*快速傅里叶变换*/

void fft(int length, complex src[]) {

int i=0; int j=0; int k=0;

//1次FFT蝶形运算

int Distance=0; //1个FFT蝶形运算跨越的

//计算一级运算当前已经走过的步长 //FFT蝶形运算级数寄存器 //FFT蝶形运算组数寄存器 //FFT蝶形运算个数寄存器 //1个蝶形运算中间结果寄存器 //1个蝶形运算中间结果寄存器

int grade=0; int group=0; int unit=0; complex up;

complex down;

complex product; //1个蝶形运算中间结果寄存器

/*先对原始数据做

/*计算1次FFT的级数总数grade*/ grade=(int)(log(length)/log(2));

for(i=0;i

/*计算第i级运算包含组数group*/ group=(int)pow(2,(double)(grade-1-i));

/*计算单个蝶形运算跨越距离*/ Distance=1

/*一级蝶形运算*/ for(j=0;j

/*计算一级运算当前已经走过的步长*/ Step=2*Distance*j;

/*计算一组蝶形运算中包含的蝶形运算个数unit*/ unit=(int)pow(2,(double)(i));

/*一组蝶形运算*/ for(k=0;k

/*一个蝶形运算*/

mul(src[Step+k+Distance],W[length*k/2/Distance],&product); add(src[Step+k],product,&up); sub(src[Step+k],product,&down); src[Step+k]=up;

src[Step+k+Distance]=down;

} }

4. 系统设计

4.1. 程序流程图及说明

整体程序流程图如下所示:

图2 整体程序流程图

说明:A.当开始运行程序后,通过点击“打开一幅图像并显示”按钮,在弹出的对话框

中选择一幅格式符合要求的图像并确定,之后程序就会在另一个名为“源图像”的窗口中显示原始图像并在主界面中显示原始图像宽度和高度。按钮“打开一幅图像并显示”左边的指示LED灯亮,表示已经打开一幅图像,并可以开始下面的操作。

B.打开一幅图像后,点击“傅里叶变换”按钮,对原始图像进行二维FFT变换,

得到变换后的数据,并在一个名为“FFT图像”的窗口中显示经过傅里叶变换后的复数图像。

C.点击“傅里叶反变换”按钮,对第二步中二维傅里叶变换变换得到的数据进行

二维傅里叶反变换,恢复原始图像,并在一个名为“IFFT图像”的窗口中显示。

D.如果此时要退出程序,那么就点击“退出”按钮;如果不想退出,想对另外一

幅图像进行1~3步的操作,那么就点击“清除”按钮,程序会重新回到刚运行程序的状态。

4.2. 程序主要模块(或功能)介绍 4.2.1. 一维 FFT 和 IFFT 流程图:

图3 一维FFT 和 IFFT流程图

说明:A.FFT和IFFT的运算及其总体流程图是相同的,均是按以上流程图来实现。

iWNB.首先,先计算 。

C.对输入数据x(n)进行位倒序处理。

D.接着,根据运算流图进行三重for循环运算,最后得出结果。

E.grade是指一次FFT或IFFT运算分级的总数;group是每个级分组的总数;unit是每个组包含蝶形运算的总数。

F.对于得出自然顺序的结果,可以用两种方法去实验,一是输入数据经过位倒序处理后再运算,输出数据为自然顺序。二是不先对输入数据做位倒序处理,运算后在做处理也可以得到自然顺序的结果数据。

4.2.2. 二维图像 FFT 和 IFFT: 流程图:

图4 二维FFT和IFFT流程图

说明:1、二维图像FFT和IFFT的运算流程图是相同的,均是按上图所示。

2、先通过打开图像来获得width和height,并定义二维数组

Buffer[width][height]。

3、width和height分别是原始图像的宽度和高度;Buffer[width][height]是用

来存放原始数据、中间运算数据及最终结果的缓冲区。

4、其实,二维数组的运算就是一维数组的变换运算,对Buffer数组的第一行进

行FFT或IFFT运算,之后对矩阵进行倒置,再对此矩阵的第一行进行FFT或IFFT运算,再进行多一次倒置,进而得出结果。

5、对于最终结果的显示是通过在CVI下用复数图像显示。

5. 实验结果与分析

5.1. 实验结果

(应有实验结果的图片,有结果分析或说明)

下面表格里是3组实验图片,从左到右分别是原始图像、经过快速傅里叶变换后的到的数据转换而来的FFT图像(complex image)以及通过对快速傅里叶变换得到的数据进行快速傅里叶反变换恢复的图像。

从3组实验图片的FFT图片表示中,可以看出图像中央是直流低频成分,四角是高频成分。

从3组图像的源图像与IFFT图像的比较中可知,从快速傅里叶变换结果数据用反变换的来的图像与原始图像几乎是相同的,由此证明程序是正确的。

图5 三组实验结果

5.2. 项目的创新之处

本设计其实并没有创新之处。如果要说做的比较好的地方的话,那就是使用malloc

动态分配内存空间,包括快速傅里叶变换及其反变换的缓冲区,用于数组到图像转换的一维数组空间等。使用动态分配空间可以适应不同大小的图片(图像宽度和高度可以不同,但仍然需要满足2的N次方条件),另外就是动态分配的内存空间使用完后及时回收,节省对内存空间的资源和提高利用率。 5.3. 存在问题及改进设想

对本设计中存在的问题是快速傅里叶变换及其反变换所用的时间比较长,原因可能有

以下两点:一是描述complex数据类型的实部虚部成员使用double类型(64位)过大;二是在快速傅里叶变换及其反变换程序实现时,在一些运算量比较大的地方,例如for循环里,不必要的重复运算过多。

针对上面问题,本组认为可以从选择合适的数据类型和优化程序代码等方面入手,

较少运算时间。

6. 心得体会

6.1. 系统开发的体会

在本设计中,本组成员体会比较深刻的是分层和面向过程的程序设计思想。

首先,对于一个比较复杂的程序可以简化思路,提高代码可读性等等,这是对程序设计的纵向优化。在本系统设计中,主要有两个地方体现了这一思想。一是对于一维快速傅里叶变换及其反变换的实现过程,结合运算流程的特点,将一个运算流程分解成若干级,每个级中包含若干组,每个组中又分成若干个单个的蝶形运算,这样子分层,可以使得程序设计更为清晰,系统化,也便于理解;二是将一维快速福利叶变换及其反变换与二维的分离开。

其次是面向过程程序设计。在系统设计中,把不同功能的程序封装成各个独立的函数,使得代码重用性,可读性提高,也便于以后的修改。例如把一维快速傅里叶变换或反变换封装函数供二维变换调用。 6.2. 对本门课程的改进意见或建议

对本门课程的改进意见或建议:其实,课程的主要目的都是在于提高学生的学习热情和创新意识,这有利于多方面开发学生智力,提高学生的综合素质等。 所以,对于这门课程更有利开展,如果条件允许的话,可以尝试整合课程教学资源,例如包括课程介绍、教学大纲、授课教案、作业习题、实验指导、参考文献目录、授课实况录像等资源,然后整合完毕后都可以发送到每一个学生手上,有了这些资料,学生就可以尝试自己开展课程的学习,更有利于提高学生的积极性与自主性。如学生可以根据课堂讲授,结合在课后对课堂知识进行消化吸收,加深对课堂内容的理解,深入分析试验数据,对实验结果进行论证。其次,课程可以更多结合当今的就业工作所需对学生进行专业性知识讲解,使学生对未来就业某个方向有一定了解,也可以使学生提高自己的知识结构。因为每一个学生最关注的都是未来就业的压力与自己的能力,所以可以适当关注一下这个方向。

附件一

华南农业大学

图像大作业成绩评定表

注:如果小组成员仅仅分工撰写实验报告或制作PPT,没有参与编程,则其成绩要低于编程的同学。

篇5:基于变形分数傅里叶变换的六重密钥图像加密

基于变形分数傅里叶变换的六重密钥图像加密

提出一种利用变形分数傅里叶变换和双随机相位编码对图像加密的方法.对要加密的图像分别进行两次变形分数傅里叶变换和两次随机相位函数调制,使加密图像的密钥由原来两重增加到六重.利用全息元件,可以用光学系统实现这种加密和解密变换.计算机模拟结果表明,只有当六重密钥都完全正确时,才能准确地重建原图像,这种六重密钥加密方法提高了图像信息的.安全保密性.

作 者:王红霞 赵玮 刘长文 张瑜 刘皓淳 WANG Hong-xia ZHAO Wei LIU Chang-wen ZHANG Yu LIU Hao-chun  作者单位:第二炮兵工程学院,物理教研室,西安,710025 刊 名:光子学报  ISTIC PKU英文刊名:ACTA PHOTONICA SINICA 年,卷(期):2007 36(4) 分类号:O438 关键词:信息光学   变形分数傅里叶变换   双随机相位编码   图像加密  

篇6:VB实现PS的自动色阶功能

关于自动色阶,用过PS的人应该都对他有所了解,在调整图像的视觉效果上这个调整滤镜的使用频率也是相当高的,关于其实现原理,网络上亦已经有不少人对其进行了探讨和研究,这里只是再简单的给有兴趣的人复习一下。

首先计算出一副图像的直方图,也就是每个色阶(0~255)所对应的像素点的个数,然后沿0阶->255阶方向找到最小色阶点Min(所谓最小色阶点即第一个在某一阶上有点数出现的阶数,如在0阶时为0点,1阶时为0点,2阶也为0点,3阶为10点,4阶为5点,...,那么最小点应为3阶), 同样最大值则是反方向从255阶开始第一个在某一阶上有点数出现的阶数Max.一般来讲,对以彩色图像最小色阶点=0,而最大色阶点为255。然后从最小色阶点开始选择整个图像总点数的5.5%的那一点做为新的最小点NewMin,再沿相反方向(即255阶->0阶方向)选择整个图像总点数的5.5%的那一点做为新的最大点NewMax,计两者之差为Differ,则每以原始像素点对应的新值可以按如下算法计算:

If Color <= NewMin Then

Color = 0

ElseIf Color >= NewMax Then

Color = 255

Else

Color = (Color - NewMin) * 255 / Differ

End If

这里我们假设你已经加载了一副24位真彩色图像到一个叫做Pic的图像容器中,并且为了方便我们设置其AutoRedraw为True,现在我们要对这副图像进行自动色阶的调整,除此之外,我们还希望处理的速度越快越好,首先我们请VB自带的Point和Pset函数站到一边去,他们处于图像处理的最低层(注意,不是最底层哦),接着,我们还要放弃对SetPixel和GetPixel的钟爱,因为他们和Point之流是一丘之貉。下一步,将目光瞄准GetBitmapBits和SetBitmapBits,哇,好名字,确实,这两个函数功能强大,但是我们不需要他们,因为他们是设备相关的,我不希望在我机器上能正常运行的程序在别人电脑上出现莫名其妙的效果。OK,还是请设备无关的函数GetDIBits,SetDIBits出山吧。关于这两个函数的使用方法,我不想详谈,但是你们可以记住,我们调用他们只是想快速的获得图像的点阵数据而已。

为了大家理解方便,这里我们设置图像的数据为一二维的RGBQUAD结构体,该结构体由四个分量组成,分别表示了颜色空间的Red,Green,Blue,Alpha分量(有的地方最后一个变量名为Reserved,但这不妨碍我们)。其中的Alpha因为VB的StdPicture对象不支持,我们不予以关心。

好了,下面给出获取PictureBox控件中图像数据的函数,以及怎么样把图像数据绘制到PictureBox中去。

模块中的代码:

Option Explicit

'***************************模仿PS魔术棒*********************************

'** 作者 : laviewpbt

'**开发时间 : .7.1

'** 最后修改时间 : 2008.8.28

'** 联系方式 : QQ:33184777

'** E-MAIL : laviewpbt@sina.com

'** All Rights Resered

'***********************************************************************

Public Type BITMAPFILEHEADER

bfType As Integer

bfSize As Long

bfReserved1 As Integer

bfReserved2 As Integer

bfOffBits As Long

End Type

Public Type Bitmap

bmType As Long

bmWidth As Long

bmHeight As Long

bmWidthBytes As Long

bmPlanes As Integer

bmBitsPixel As Integer

bmBits As Long

End Type

Public Type BITMAPINFOHEADER '40 bytes

biSize As Long 'BITMAPINFOHEADER结构的大小

biWidth As Long

biHeight As Long

biPlanes As Integer '设备的为平面数,现在都是1

biBitCount As Integer '图像的颜色位图

biCompression As Long '压缩方式

biSizeImage As Long '实际的位图数据所占字节

biXPelsPerMeter As Long '目标设备的水平分辨率

biYPelsPerMeter As Long '目标设备的垂直分辨率

biClrUsed As Long '使用的颜色数

biClrImportant As Long '重要的颜色数,

如果该项为0,表示所有颜色都是重要的

End Type

Public Type RGBQUAD '只有bibitcount为1,2,4时才有调色板

Blue As Byte '蓝色分量

Green As Byte '绿色分量

Red As Byte '红色分量

Reserved As Byte '保留值

End Type

Public Type BITMAPINFO

bmiHeader As BITMAPINFOHEADER

bmiColors As RGBQUAD

End Type

Public Const BI_RGB = 0&

Public Const DIB_RGB_COLORS = 0&

Public Const IMAGE_BITMAP = 0&

Public Declare Function GetDIBits Lib “gdi32” (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long

Public Declare Function GetGDIObject Lib “gdi32.dll” Alias “GetObjectA” (ByVal hObject As Long, ByVal nCount As Long, ByRef lpObject As Any) As Long

Public Declare Function SetDIBits Lib “gdi32” (ByVal Hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long

篇7:地面雷达数值风洞技术实现方法

地面雷达数值风洞技术实现方法

基于Fluent等软件平台和standard k-e湍流模型,介绍了地面雷达数值风洞技术的实现方法,同时对模型建立、网格划分等关键技术进行了详细介绍,通过实例进行了计算并将计算结果与试验结果进行了对比分析和验证,结果表明,采用数值风洞的理论和方法,实现地面雷达风洞试验的数值化是可行的.,误差是可以接受的,最后对雷达系统数值风洞技术的未来发展作了展望.

作 者:梅启元 胡长明 秦国良 MEI Qi-yuan HU Chang-ming QIN Guo-liang  作者单位:南京电子技术研究所,江苏,南京,210013 刊 名:电子机械工程 英文刊名:ELECTRO-MECHANICAL ENGINEERING 年,卷(期):2008 24(5) 分类号:V211.74 关键词:Fluent   湍流模型   地面雷达   风洞试验   数值风洞  

篇8:海面溢油数值模拟及其可视化实现技术

海面溢油数值模拟及其可视化实现技术

摘要:由于石油工业和石油运输业的迅猛发展,油井井喷和油轮溢油事故频繁发生.积极探索溢油在水环境中的'运动规律,才能为溢油的清理提供强有力的指导.海上溢油数值模拟研究能定量地分析、评估溢油的演变,文章结合采用椭圆扩展模型和油粒子模型对溢油扩散漂移过程进行模拟,为相应的决策提供科学依据.而溢油的可视化技术基于GIS组件COM技术,将溢油数值模型的模拟计算结果以图形的方式,实时、动态地显示在电子海图上,从而实现了溢油漂移扩散过程的可视化.作 者:庄学强    陈坚    孙倩    ZHUANG Xue-qiang    CHEN Jian    SUN Qian  作者单位:武汉理工大学,湖北,武汉,430062 期 刊:中国航海  ISTICPKU  Journal:NAVIGATION OF CHINA 年,卷(期):, (1) 分类号:X5 关键词:环境工程学    溢油    数值模拟    可视化    技术   

篇9:地图投影解析变换的数值实现方法

地图投影解析变换的数值实现方法

系统阐述了地图投影、地图投影变换,以地图投影及其变换为基础,采用Visual C + +6.0作为软件平台,开发了GIS的地图投影变换软件.本系统分为解析正算和解析反算两部分,其中解析反算先用数值变换方法求得相应变换系数,然后再按照解析变换的`方法实现相应功能,这也是本文的主要思想.同时本文以公式较为简单的墨卡托投影和公式较为复杂的圆锥投影为例说明了以上过程.该系统不仅可以单独使用,也可以与其他GIS软件进行接口,增强GIS的地图投影变换功能.

作 者:夏兰芳 胡鹏 黄梦龙 XIA Lan-fang HU Peng HUANG Meng-long  作者单位:武汉大学,资源与环境科学学院,武汉,430079 刊 名:测绘科学  ISTIC PKU英文刊名:SCIENCE OF SURVEYING AND MAPPING 年,卷(期):2007 32(3) 分类号:P28 关键词:地图投影   地图投影变换   解析正算   解析反算  

篇10:C语言默认参数值的实现

C语言中没有参数默认值的概念,可以利用宏来模拟参数默认值:

(对于有多个参数的函数,调用时需要将参数列表中的每个 , 写出来,不过这样就可以把默认参数放在非默认参数之前)

以下代码在c下是不能通过的:

定义fun():

int fun(int a, int b = 10) … …

{ … … … …

return a+b;

}

主函数代码: … …

int main() ……

{

printf(%d ,fun(10));

return 0;

}

……

编译时 fun(10) 调用会出错,注意这个代码在C++并不会错。

……

用宏改进后代码:

#include

#define funi(a) fun( a, 10)

int fun(int a,int b )

{

return a+b;

}

int main()

{

int a = 10;

printf(%d %d ,fun(a,10),funi(a));

return 0;

}

结果: 20 20

[cpp] view plaincopy

#include

#define DEFARG(name, defval) ((#name[0]) ? (name + 0) : defval)

int _f1(int i)

{

return 2*i;

}

#define f1(arg0) _f1(DEFARG(arg0, 0))

int _f2(int i, int j)

{

return i + j;

}

#define f2(arg0, arg1) _f2(DEFARG(arg0, 0), DEFARG(arg1, 1))

int main()

{

printf(%d , f1());

printf(%d , f1(1));

printf(%d , f2(,));

printf(%d , f2(2,));

printf(%d , f2(, 3));

printf(%d , f2(4, 5));

return 0;

}

#include

#define DEFAULT 40 /*默认参数值*/

#define FUN(A) fun(#A##-) /*用于实现默认参数的宏*/

int f(int n) /*用于实验默认参数的函数*/

{

return printf(%d

,n);

}

int fun(const char *a) /*确定函数调用的函数,返回值类型要和实际需要调用的f()函数返回值类型一致*/

{

int n; /*变量的类型要和f()函数参数的类型一样*/

if (a[0]=='-') n=DEFAULT;

else sscanf(a,%d,&n);

return f(n);

}

int main(void)

{

FUN();

FUN(67);

return 0;

}

ps: 如果是有头文件的话: getStr.h #define getStr() _getStr( TestFun.txt );//set default filename in .c

void _getStr(char filename[]);

getStr.c void _getStr(char filename[]){

… } main.c #include getStr.h void main(){ getStr(); }

【分数阶傅里叶变换的数值实现】相关文章:

1.阶段考个人总结报告

2.分数,

3.骨干教师培训阶学习工作总结

4.实现超我

5.微分方程的数值解法

6.数值造句及解释

7.财务经理数值报告范文

8.分数?儿子?

9.分数:0

10.实现的反义词

下载word文档
《分数阶傅里叶变换的数值实现.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

  • 返回顶部