![]() |
使用MATLAB的绘图功能作为Fortran程序的交互部分
尽管你们中的许多人对我的目标都有一个不错的主意,但仅通过阅读标题,还是请给我一个简单的介绍。
我有一个Fortran程序-它包含一个程序,一些内部子例程,带有自己的程序的7个模块,以及...就是这样。 无需赘述,因为我认为目前没有必要, [B][I]将MATLAB的绘图功能(主要是带有一些自定义的plot(x,y))用作程序的交互式部分的最简单方法是什么?[/I][/B]现在,我正在使用一些自己的自定义绘图例程(基于HPGL和Calcomp的例程),但是作为我自己的一部分练习,我想看看它可以在哪里以及如何工作(甚至可能是我的建议?)。另外,我需要付出多少努力? [I]我知道这个主题已经在网上的许多“教程”中得到了广泛的描述,但是由于某些原因,我很难找到真正简单但说明性的入门主题。因此,如果任何人都可以发表一个或两个简单的示例,我将不胜感激。或者只是牵着我的手,引导我完成一个工作示例。[/I] [I]平台:Win XP SP2,Matlab 2008b上的IVF 11.something :)[/I] [B]回答:[/B] 继续讨论DISLIN作为解决方案,并给出不适合评论的答案... [I]@MSB-您好。很抱歉写出您的答案,但这些评论太短了,无论如何,以答案的形式回答问题是……[/I] DISLIN具有快速绘图功能-例程QPLOT仅需要三个参数即可绘制曲线:X数组,Y数组和数字N。请参见手册的第16章。再加上几个额外的调用即可选择输出设备并标记轴。我没有用过,所以我不知道自动缩放的效果如何。 [I]是的,我知道Quickplot及其相关的例程,但是它对于我的需求来说太固定了(无法更改任何内容),是的,它的自动缩放有些古怪。此外,graf内部的边距过大。[/I] 或者,如果您想使用GRAF的功能来设置图形框,则可以使用子例程GAXPAR自动生成推荐值。 -2作为LABDIG的第一个参数自动确定刻度标记标签中的位数。 你有没有试过套路? [I]抱歉,在dislin的索引中找不到您要引用的GAXPAR例程。您确定它的名称完全一样吗?[/I] [B]MSB的回复[/B] :是的,我敢肯定GAXPAR的拼写。这是DISLIN 9.5 PDF手册第4章中的最后一个例程。也许这是一个新的惯例?自动缩放的另一条途径是:SETSCL-参见第6章。 [I]到目前为止,我一直在做的事情(除了一些“鸭子磁带”解决方案)[/I] use dislin; implicit none real, dimension(5) :: & x = [.5, 2., 3., 4., 5.], & y = [10., 22., 34., 43., 15.] real :: xa, xe, xor, xstp, & ya, ye, yor, ystp call setpag('da4p'); call metafl('xwin'); call disini(); call winkey('return'); call setscl(x,size(x),'x'); call setscl(y,size(y),'y') call axslen(1680,2376) !(8/10)*2100 and 2970, respectively call setgrf('name','name','line','line') call incmrk(1); call hsymbl(3); call graf(xa, xe, xor, xstp, ya, ye, yor, ystp); call curve(x,y,size(x)) call disfin() end [I]这会将极值正确地放在轴上。您是否知道我该如何在外面设置一个“大刻度线余量”,以便在曲线和轴之间放置一些区域(同时仍保持setcl的效果)?[/I] 即使您不喜欢内置的自动缩放功能,但是如果您已经在使用DISLIN,滚动自定义缩放功能也比从MATLAB调用Fortran容易。您可以使用Fortran内在函数minval和maxval查找数据中的最小和最大值,而不是编写一个子例程以将其向外舍入为“ nice”个舍入值。类似地,子程序决定刻度线的间距。 [I]这实际上不是那么容易实现(并且证明我错了的想法将很受赞赏)。或者我应该说,如果您知道价值观的大致范围,那很容易。但是,如果您不这样做,并且您不知道自己的值是在13-34范围内还是在1330-3440之间,那么...[/I] [I]...如果我在这里完全走错了路,请解释一下您是否提出了不同的建议。我的英语有点缺乏,所以我只能希望以上内容可以理解。[/I] 在确定圆图开始/结束值的子例程中,您可以将实际的最小/最大值定标为始终在1到10之间,然后有一个表来选择合适的取整值,然后不定标回到正确的范围。 - [url=https://stackoverflow.com/questions/2946525]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 10:59。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.