![]() |
1
3
继续讨论dislin作为一个解决方案,并给出一个不适合评论的答案… @M.S.B.-你好。我很抱歉在你的回答中写到,但是这些评论太短了,以回答的形式回答问题是…总之… dislin有一个快速的绘图特性——例程qplot只需要三个参数就可以绘制一条曲线:x数组、y数组和n号。参见手册第16章。再加上几个额外的调用来选择输出设备和标记轴。我没有用过这个,所以我不知道自动缩放有多好。 是的,我知道QuickPlot,它是相关的例程,但是它对于我的需求来说太固定了(不能改变任何东西),而且是的,它的自动缩放有点奇怪。另外,涂鸦内部的空白太大。 或者,如果您想使用graf的强大功能来设置图形框,那么有一个子例程gaxpar来自动生成建议的值。-2作为labdig的第一个参数,自动确定刻度线标签中的位数。 你试过常规程序了吗? 抱歉,我在dislin的索引中找不到您要引用的gaxpar例程。你确定这个名字和那个完全一样吗? M.S.B.的回答 :是的,我对gaxpar的拼写有把握。这是dislin 9.5 pdf手册第4章中的最后一个例程。也许这是一个新的惯例?另外还有一种自动缩放的方法:setscl——见第6章。 到目前为止,我所做的(除了一些“duck tape”解决方案)是
这将把极端值放在轴上。你知道吗,也许我怎么能在外面有一个“主要的刻度线”,在曲线和轴之间放置一些区域(同时仍然保持setscl的效果)? 即使您不喜欢内置的自动缩放,如果您已经使用dislin,滚动您自己的自动缩放将比从matlab调用fortran更容易。您可以使用fortran内部函数minval和maxval来查找数据中的最小值和最大值,而不是编写一个子例程向外取整为“漂亮”的取整值。类似地,决定刻度线间距的子程序。 这其实不是那么容易做到的(而且证明我错了的想法会得到很好的赞赏)。或者我应该说,如果你知道你的价值观所处的大致范围,这很容易。但如果你不知道,你也不知道 无论您的值是在13-34范围内还是在1330-3440范围内,那么… …如果我完全走错了方向,请解释一下,如果你有什么不同。我的英语有点欠缺,所以我只能希望上面的内容可以理解。 在子例程中,要确定圆图的起始/结束值,可以将实际的最小/最大值缩放为始终介于1和10之间,然后有一个表来选择好的圆值,然后取消缩放到正确的范围。 —— |
![]() |
2
4
最简单的方法是让您的Fortran程序写入文件,并让您的matlab程序读取这些文件以获取您想要绘制的信息。我在Linux上处理大部分的数字运算,所以我不完全确定Windows是如何处理一个进程同时写入文件和读取文件的。 不过,这有点笨拙,所以您可能需要考虑使用matlab来调用fortran程序(或其部分),并直接获取用于绘图的数据。在这种情况下,你需要调查 创建Fortran MEX文件 在matlab文档中。如果您愿意使用matlab来驱动进程,并使用fortran作为计算服务,那么这是相对简单的,并且可以满足您的需求。我将在用matlab发布的示例中查找简单的fortran mex文件。 最后,您可以从fortran程序调用matlab,在文档中搜索 调用matlab引擎 . 这对我来说有点困难,因为我不太熟悉这一点。 如果你再发一篇更详细的文章,我可能会提供更具体的提示,但你可能应该开始卷起袖子,潜入MEX文件。 |
![]() |
3
2
转储matlab是因为它的专有、昂贵、膨胀/缓慢和代码不容易并行化。 你应该做的是在dislin、plplplot、gino、gnuplotfortran等行中使用一些东西。 |
![]() |
Fib · 查找R包中使用的Fortran文件 2 年前 |
![]() |
Holmz · 使用ifort 2020和OneAPI更改字符串行为? 2 年前 |
![]() |
imronuke · nvfortran编译器有用标志的建议 2 年前 |
![]() |
R. N · gfortran指针过程类型问题 6 年前 |
![]() |
ptb · 将Torvalds的“好品味”应用于Fortran链表 6 年前 |