fortran中批处理实现

合集下载

FORTRAN程序调用MATLAB引擎实现计算可视化

FORTRAN程序调用MATLAB引擎实现计算可视化

收稿日期:2000-05-29作者简介:聂万胜(1969-),男,内蒙古人,博士,主要研究方向:航空推进理论的科学计算和可视化、飞行器测试发射的科学计算和可视化.文章编号:1001-9081(2000)11-0060-02FORTRAN 程序调用MATLAB 引擎实现计算可视化聂万胜,庄逢辰,黄玲,邹勤(装备指挥技术学院,北京怀柔101416)摘要:探索了FORTRAN 程序调用MATLAB 函数的基本原理,用实例介绍了调用MATLAB 引擎函数,实现FORTRAN 程序计算结果的可视化过程。

并给出如何编译带有MATLAB 引擎函数的FORTRAN 程序的具体技术。

关键词:FORTRAN ;MATLAB ;引擎;可视化中图分类号:TP311.52文献标识码:A1概述FORTRAN 和C 等高级语言使人们无需直接对计算机硬件资源进行操作。

而被称为第四代计算机语言的MATLAB ,则利用其丰富的函数资源,代替了C 语言和FORTRAN 的冗长代码,给用户带来了最直观、最简洁的程序开发环境。

在欧美很多高校,MATLAB 已经成为自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;在设计研究单位和工业部门,MATLAB 被广泛地用于研究和解决各种具体问题。

其最主要的特点有:语言简洁,使用方便灵活,程序书写形式自由,库函数极其丰富,图形功能强大。

由于不管是C 语言还是FORTRAN 语言,其图形和可视化功能的实现都需要较为专业的编程水平,所以本文旨在充分发掘MATLAB 的功能,利用MATLAB 所提供的接口函数实现FORTRAN 程序的计算结果可视化,充分综合了FORTRAN 程序的执行速度快而MATLAB 可视化处理简单方便,开发周期短的优点。

2FORTRAN 调用MA TLAB 函数的原理由于FORTRAN 程序和MA TLAB 的运算单位不同,前者以数为运算单位,后者以矩阵为基本的运算单位,所以数据类型不能直接匹配。

FORTRAN简明教程

FORTRAN简明教程

FORTRAN简明教程
一、FORTRAN简介
FORTRAN,指程序设计语言,由IBM在1956年发明,主要用于科学计算、数值运算等。

它将汇编语言中的功能集成在一个简单的命令语句中,
减少了汇编语言的繁琐的编译过程。

它也是目前世界上最古老的计算机程
序设计语言。

FORTRAN由“Formula Translating System”派生而来,主要用于工
程和科学计算,非常适用于此领域的算法及数学公式的应用。

基于这种语言,开发者可以轻松描述数字问题,并同时检测、审核、维护和优化此代码。

二、FORTRAN的优缺点
1、优点
a.FORTRAN是一种很容易上手的程序设计语言,它的语言规范很容易
理解,而且简单易用。

b.FORTRAN支持大量数值操作,所以它在计算机科学和工程领域有广
泛的应用。

c.FORTRAN程序非常高效,它的优化程序可以提高程序运行效率,而
且运算速度很快。

d.FORTRAN支持很多的数据类型,这样可以更有效地操作和管理数据。

2、缺点
a.FORTRAN不支持图形用户界面(GUI),这样用户需要熟悉命令行,才能完成程序的编写。

Fortran进行批处理地方法

Fortran进行批处理地方法

Fortran中批量处理文件的方法总结—循环读取目录下的所有符合条件的文件=====================一、简单的介绍在一年之前,我写过一个程序,主要是对Micaps资料进行批量处理,将逐日资料处理为旬、月的数据,在那个程序中,始终有一个问题困扰我,就是如何自动生成该读取的下一个文件名,这使我真正开始关注fortran中的批处理,时隔一年,决定写下这些文字,将我用到的一些fortran批处理的方法和大家共享,交流。

对于那些只要会用程序,不求其中原理的朋友,请马上跳过这些文字,直接去下载附件吧!程序里有使用说明,但是,如果你不懂原理,估计现成的程序你使用起来也会碰壁哦!这里所说的批处理是指对某一个目录下的指定后缀的文件的批量读取和处理。

我总结的批处理方法大概可以用下面这个示意图来说明:|||将文件目录写入一个文本文件,供fortran循环读取|————手动输入文件名|————运行程序之前命令行工具导出文件名|————程序运行后,未开始计算之前,生成文件名| ————调用CMD命令生成| ————GETFILEINFOQQ方法生成| ————调用WIN32API生成||在程序运行时动态生成文件名||对于第一种方法,我将主要介绍如何将目录写入文件,然后举出一个小的示例来验证。

第二种方法主要是说明其思路。

二、方法的介绍1、将文件目录写入一个文本文件,供fortran循环读取1.1、手动输入文件名这是最基本的方法啦,如果文件个数不多,而且文件名中包含了空格等特殊字符的话,建议使用这种方法,在这里就不多说啦,至于在fortran中的处理,等几个小方法介绍完之后会有一个例子来说明。

1.2、运行程序之前命令行工具导出文件名这是一个既高效又保险的方法,主要思路就是通过强大的CMD命令列出目录下的文件到一个指定的文件中,然后由fortran去循环读取该文件中的文件名信息,从而批量处理。

a、从运行工具打开你的CMD窗口;b、转到要处理的当前目录(可省略):CD /d 路径,如:CD /d e:\test这样可以快速到达e:\test目录c、使用DIR命令列出文件目录信息到指定的文件,通常使用的Dir *.*>新文件名这个命令在这里已经不能满足要求,因为会列出一堆对于我们处理而言无用的信息,现在要使用的命令是:DIR /b filter>newfile注意,其中的filter为文件筛选,必须自己修改为所需的,比如你可以把它改成*.txt,这样,就会列出当前目录下的所有txt结尾的文件了。

FORTRAN常用命令

FORTRAN常用命令

FORTRAN常⽤命令FORTRAN 77语句形式表ASSIGN S TO i BACKSPACE u BACKSPACE (alist) BLOCK DA TA [sub] CALL sub CHARACTER COMMON COMPLEX CONTINUEDA TA DIMENSIONDODOUBLE PRECISION ELSE IF (e) THEN ENDFILE u ENDFILE (alist) ENTRYEQUIV ALENCE EXTERNAL Proc FORMA T fs[typ]FUNCTION fun () GO TO iGO TO sGO TO 标号赋值语句回退语句数据块⼦程序语句引⽤⼦程序语句字符型说明语句公共语句复型说明语句继续语句数据初值语句数组说明语句循环语句双精度型说明语句ELSE IF语句⽂件结束语句⽂件结束语句⼊⼝语句等价语句外部语句格式语句函数⼦程序语句赋值GOTO语句⽆条件GOTO语句计算GOTO语句IF (e) stIF (e) S1,S2,S3 IF (e) THEN IMPLICIT typ INQUIRE INQUIRE INTEGER INTRINSIC LOGICAL OPEN PARAMETER PAUSE PRINT PROGRAM READREADREAL RETURN REWIND REWINDSA VESTOP SUBROUTINE WRITE 逻辑IF语句算术IF语句块IF语句类型隐含说明语句按⽂件询问语句按设备询问语句整型说明语句内部语句逻辑型说明语句⽂件打开语句参数语句暂停语句打印语句程序语句读语句实型说明语句返回语句反绕语句反绕语句保存语句停⽌语句⼦例⾏⼦程序语句输出语句。

fortran循环结构及基本语句

fortran循环结构及基本语句

fortran循环结构及基本语句Fortran中的循环结构包括DO循环和DO WHILE循环。

基本语句包括赋值语句、条件语句和IO语句。

1.DO循环结构:DO循环结构用于重复执行一段代码块,语法如下:DO variable = start, end, step!代码块ENDDO在循环开始前,将变量初始化为start的值,然后执行代码块。

然后将变量增加step的值,并检查是否达到end的值,如果没有达到则继续执行代码块,直到达到end的值为止。

2.DOWHILE循环结构:DOWHILE循环结构用于在满足条件时重复执行一段代码块,语法如下:DO WHILE (condition)!代码块ENDDO在每次循环开始前,检查condition是否为真,如果为真则执行代码块,然后再次检查condition。

只有当condition为假时,循环才会结束。

3.赋值语句:赋值语句用于将一个值赋给一个变量,语法如下:variable = expression可以使用算术运算符和函数来计算expression的值,并将结果赋给变量。

4.条件语句:条件语句用于根据条件选择执行不同的代码块,常用的条件语句有IF语句和SELECTCASE语句。

-IF语句的语法如下:IF (condition) THEN!代码块1ELSE IF (condition) THEN!代码块2ELSE!代码块3ENDIF根据condition的值选择执行代码块1、代码块2或代码块3-SELECTCASE语句的语法如下:SELECT CASE (expression)CASE (value1)!代码块1CASE (value2)!代码块2CASEDEFAULT!代码块3ENDSELECT根据expression的值选择执行相应的代码块,如果没有匹配的值,则执行默认的代码块。

5.IO语句:IO语句用于输入和输出数据,常用的IO语句有WRITE和READ语句。

如何用Fortran批量读取文件

如何用Fortran批量读取文件
enddo
复杂的方法可以是:自己写个子程序,进行自己需要的转换。(略
1. 如何加大Stack size?
选Project => Settings => Link => Category: Output =>
Stack allocations
Reserve: 这里填新值(默认为1M,若需要10M,则填10000000)
open(12,file=FILENAME(L))
read(12,*) .......
enddo
法2
do i=1,number of files
file_name=ቤተ መጻሕፍቲ ባይዱhar(i+48)//'.dat'
file_number=i+100
open(fileid=file_number,file=file_name)
write(form,*) "(",num,"f10.3)"
write(*,form) data
stop
end
4. 如何用F90/95生成随机数?
注意:
现在计算机产生的随机数都是伪随机数。
random_number(x) 产生一个0到1之间的随机数(x可以是向量),但是每次总是那几个数。
read(fileid=file_number,*) vars
close(fileid)
enddo
需要读取大批量的数据,文件有一定的规律,特别是按照数字的顺序排列的,现给出读取文件名的方法:
简单方法:
Character*40 fname
integer m

fortran语言语法

fortran语言语法

FORTRAN是世界上最早出现的高级编程语言,是工程界最常用的编程语言,它在科学计算中(如航空航天、地质勘探、天气预报和建筑工程等领域)发挥着极其重要的作用。

经过40多年的发展,伴随着FORTRAN语言多次版本的更新及相应开发系统的出现,其功能不断完善,最新版本的开发系统几乎具备了VC、VB的所有特点,如图形界面编程、数据库等。

目前,工科院校开设的计算机编程语言课首选仍然是FORTRAN :<说实话,从科技发展的趋势来说这不是好事。

您可以设想一下,如果需要用鹅毛笔抄写大量的古籍是什么感受!强烈建议阅读《发掘C#特性赋予科学计算项目以威力》1 FORTRAN77四则运算符+ - * / ** (其中**表示乘方)在表达式中按优先级次序由低到高为:+或-→*或/→**→函数→()2 FORTRAN77变量类型2.1隐含约定:I-N规则凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。

2.2用类型说明语句确定变量类型:可以改变I-N规则2.3用IMPLICIT语句将某一字母开头的全部变量指定为所需类型如IMPLICIT REAL (I,J)三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。

2.4数组的说明与使用使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例:DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3) REAL IA(10),ND(80:99)使用隐含DO循环进行数组输入输出操作:例如WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2)10FORMAT(1X,5(A2,I2,1X,A2,I4))2.5使用DATA语句给数组赋初值变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如DATA A,B,C/-1.0,-1.0,-1.0/DATA A/-1.0/,B/-1.0/,C/-1.0/DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)DATA CHN/10*' '/INTEGER NUM(1000)DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/3 FORTRAN77程序书写规则•程序中的变量名,不分大小写;•变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效;•一行只能写一个语句;•程序的第一个语句固定为PROGRAM 程序名称字符串•某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容;•某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容;•某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行;•某行的第7至72字符位为语句区,语句区内可以任加空格以求美观;•某行的第73至80字符位为注释区,80字符位以后不能有内容。

fortran常见问题解决

fortran常见问题解决

为了减少重复回答问题,特编此帖,并不定期添加和更新内容。

错误难免,欢迎讨论,仅供参考。

很多人问哪里可以找到Fortran 编译器,有不少热心学友提供网址,检验过这些链接,但是它们不一定总有效。

Fortran 编译器下载:CVF特汇集在这里。

虽然俺FTN95 (License: Free for personal use)以下操作,如无特别说明,都是以为例。

1. 如何加大Stack size?选Project => Settings => Link => Category: Output Stack allocationsReserve: 这里填新值(默认为1M若需要10M则填)2. 如何用Fortran 批量生成文件?设要生成4000个文件,文件名为AA1-AA4000,如何写循环生成文件命令呢?用内部文件:character(len=80) :: filename,forminteger :: ido i=1,4000select case (i)case (1:9)write(form,'(i1)') icase (10:99)write(form,'(i2)') i=>, 而不用写4000 次writecase (100:999)write(form,'(i3)') icase (1000:9999)write(form,'(i4)') iend selectwrite(filename,*) "AA",trim(form),".TXT"open(10,file=filename)write(10,*) iclose(10)end dostopend3.如何用Fortran 动态生成输出格式?设有一个数组data(100),输出时,希望每行输出num个数,而num由用户输入,如何实现?用内部文件:character(len=80) :: formreal :: data(100)integer :: i,numdata = (/ (i,i=1,100) /)/read(*,*) numwrite(form,*) "(",num,""write(*,form) data stopend4.MS 是不是很垃圾?是垃圾,其中Bug 太多,多到不可用的地步!在这个主题里,换了CVF后问题就没了的人已有相当的数目。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档