我最近使用Homebrew在我的Mac上安装了GNU Octave,当我输入
octavebash时,它打开了octave-gui窗口.Octave GUI看起来很不吸引人(至少在Mac上)所以我想使用命令行界面.我的修复是要建立一个永久的别名~/.bash_profile这是alias octave='octave --no-gui'.
对此有更持久的解决方案吗?也就是说,如何在不调用GUI而不是CLI的情况下开始使用八度音程?有没有一个解决方案,我不必通过使用别名来做到这一点.(并不是说使用别名是一个大问题,但我只想更好地修复在命令行上启动Octave.)
我注意到seq我的一台计算机上出现了一个奇怪的行为(Ubuntu LTS 14.04):它不使用点作为小数分隔符,而是使用逗号:
seq 0. 0.1 0.2
0,0
0,1
0,2
Run Code Online (Sandbox Code Playgroud)
我的另一台PC上相同版本的seq(8.21)给出了正常点(也是相同的Ubuntu版本).最奇怪的是,当我从第一台机器进入ssh时,我在远程机器上观察到同样的不良行为.即使是从冲突机器提交到远程机器上的作业调度程序(slurm)的bash脚本也存在这个问题.我很迷茫.为什么(以及如何!)发生这种情况?
我一直在想这个问题,它可能已经实现gnuplot但我无法在线查找信息.
当你有一个数据文件时,可以交换轴并将"虚拟变量",比如x,(在gnuplot的帮助术语中)分配给垂直轴:
plot "data" u 1:2 # x goes to horizontal axis, standard
plot "data" u 2:1 # x goes to vertical axis, exchanged axes
Run Code Online (Sandbox Code Playgroud)
但是,当您有一个函数时,您需要求助于参数函数来执行此操作.想象一下你想要绘制x =y²(与y =x²相反),然后(据我所知)你需要做:
set parametric
plot t**2,t
Run Code Online (Sandbox Code Playgroud)

在这种情况下很好用.然而,我认为一种更灵活的方法是可取的,例如
plot x**2 axes y1x1 # this doesn't work!
Run Code Online (Sandbox Code Playgroud)
是上面实现的,还是有一种简单的方法可以使用y作为虚拟变量而不需要set parametric?
我有一个很长的gnuplot脚本.出于调试目的,我希望能够阻止此脚本的注释部分或使用"goto"语句.这可能吗?
我知道我可以用一个if声明:
if (1 == 2) {
commented-out-code
} else {
non-commented-out code
}
Run Code Online (Sandbox Code Playgroud)
这是唯一的解决方案吗?
情况:
我想做的事:
并发症:
如何才能做到这一点?
我有一个由 7 列和超过 800 万行组成的分散数据文件(数据文件)。我想绘制此数据的轮廓。我想绘制的列是第一个,第二个和最后一个(第七个),给出一个 2d 和 3d 绘图如下:
正视图:

边缘视图:
和简单的 3d:

从第二个图中可以看出,第一件事是这些点聚集在 2d 区域的特定位置,在 3d 图中可以看到最小值的同一区域。但是,其次,这些点随机分布在平面(第二个图)中,我想我不能使用矩阵表示来绘制 iso-z 的轮廓。
是否可以使用 gnuplotset contour base并cntrparam levels做到这一点?
有没有一种简单的方法可以在gnuplot中获得带有黑色轮廓的点?我正在使用标准颜色填充点类型,例如:
set style line 3 lc rgb '#4682B4' pt 9 ps 0.65
Run Code Online (Sandbox Code Playgroud)
但我需要确保该剧情在黑白版本中也很容易阅读.黑色轮廓会有所帮助,我该如何添加它们?
我有一个 fortran90 代码,(到目前为止)大部分时间都花在 I/O 上,因为需要读取非常大的数据文件(至少 1GB 及以上)。需要写入包含计算结果的较小但仍然很大的数据文件。相比之下,一些快速傅里叶变换和其他计算很快就能完成。我已经并行化 (OpenMP) 其中一些计算,但考虑到上述 I/O 问题,总体性能增益很小。
我目前的策略是立即读取整个文件:
open(unit=10, file="data", status="old")
do i=1,verylargenumber
read(10,*) var1(i), var2(i), var3(i)
end do
close(10)
Run Code Online (Sandbox Code Playgroud)
然后执行操作var1等。我的问题是是否有一个合适的策略使用(最好是)OpenMP 来加速读取过程,特别是考虑到数据文件(如果有任何区别)都很大。
我可以在 Lustre 文件系统上运行这些计算,原则上这为并行 I/O 提供了优势,尽管常规文件系统的通用解决方案将受到赞赏。
我的直觉是这个问题没有解决办法,但我想确认一下。
我使用epslatex作为输出终端在多时隙模式下创建了两个图.两个图的y轴标记不同.第一个图的y轴范围为[0:45],第二个图的y轴范围为[-5e-008到4e-007].由于y轴标签的宽度不同,第二个图的宽度小于第一个图的宽度.我已经尝试了可用的缩放选项,但它们不起作用.是否可以编辑绘图,以便无论y轴范围如何,我都可以为两个绘图设置相同的宽度?
我想使用该scipy.optimize模块来最小化一个功能.假设我的功能是f(x,a):
def f(x,a):
return a*x**2
Run Code Online (Sandbox Code Playgroud)
对于一个固定的a,我希望尽量减少f(x,a)关于x.
与scipy我可以导入例如fmin功能(I有一个旧SciPy的:v.0.9.0),得到一个初始值x0,然后优化(文档):
from scipy.optimize import fmin
x0 = [1]
xopt = fmin(f, x0, xtol=1e-8)
Run Code Online (Sandbox Code Playgroud)
失败因为f有两个参数并且fmin只传递一个(实际上,我还没有定义a).如果我做:
from scipy.optimize import fmin
x0 = [1]
a = 1
xopt = fmin(f(x,a), x0, xtol=1e-8)
Run Code Online (Sandbox Code Playgroud)
计算也将失败,因为"x未定义".但是,如果我定义x那么没有要优化的变量参数.
如何在此处将非变分参数用作函数参数?
我有一个轮廓图运行得很好,它为不同的值生成相同数量的颜色.
我想要的是在右侧生成标签,使每个块具有正确的颜色.
目前的结果:
我想要的是在每个块上都有这个值:
---- 300
---- 100
---- 70
---- 30
---- 10
---- 1
---- 0
编辑:当我添加此代码时:
set cbtics ('300' 300, '100' 100, '30' 30, '10' 10, '1' 1, '0.5' 0.5, '0.1' 0.1, '0.01' 0.01, '0' 0);
set palette defined (0.1 "#4CAF4F",0.3 "#65B443",0.5 "#7FBA38",0.7 "#98BF2D",0.9 "#B2C521",1.0 "#CBCA16",2 "#E5D00B",3 "#FFD600",4 "#FFC400",5 "#FFB300",6 "#FFA100",7 "#FF9000",8 "#FF7E00",10 "#FF6D00",30 "#F85A00",50 "#F14800",70 "#EA3600",90 "#E32400",100 "#DC1200",300 "#D50000")
Run Code Online (Sandbox Code Playgroud)
结果是不平衡的:
我希望刻度是均匀的,但无法成功.