我正在使用 Windows 7 64 位。每次,我使用绘图功能,绘图窗口都会显示并成功绘制,但之后它会停止响应并且必须关闭它。
例如 :
x = linspace(0,1,10)
y = x.^2
plot(x,y);
奇怪的是,当绘图窗口冻结并且我必须关闭八度音阶窗口时,它们也会无响应。如果我不使用绘图功能,这不会发生。
我不知道为什么。是不是因为我使用的是 64 位版本?请告诉我如何解决这个问题。
问题可能是您安装 Octave 时使用的图形工具包。
要检查这一点,请输入graphics_toolkit
Octave 命令行。
如果响应是fltk
并且您的绘图窗口正在冻结,则将默认工具包切换为 gnuplot:graphics_toolkit('gnuplot')
测试问题是否已解决:x=1:10; y=x.^2; plot(x,y)
在您的 Octave 安装目录中的 octave.rc 文件中进行永久更改:
On Windows: \Octave\share\octave\site\m\startup\octaverc
On Linux: ~/.octaverc
如果响应为qt
,请尝试其中一个fltk
或gnuplot
(其中一个可能比另一个更快)。
如果上述方法不起作用,您可能需要安装/重新安装 gnuplot。(感谢 lukas 和 saurabh 的这种极端情况)。
正如 Assad Ebrahim 所写,问题出在工具包上。我在 3.8.2 版中遇到了另一个问题。gnuplot 根本不起作用。没有显示绘图窗口,我需要关闭 Octave。如果有人有同样的问题,解决方案是下载 gnuplot 并将其安装到 Octave 文件夹。它取代了旧的 gnuplot 并且新的 gnuplot 正在工作。
我感谢你的建议。
哦。我的朋友向我展示了这个命令,它工作正常:
pkg rebuild -noauto oct2mat
该命令重新安装包,但将其标记为在启动时默认不加载。此行为现已更改,默认情况下不会加载新版本的 Forge 软件包。
问题是永远不应该加载包 oct2mat 。它掩盖了 Octave 核心的几个功能,所以它开始表现得很奇怪。除非您真的需要此软件包,否则最好将其删除。
oct2mat 的目的是为了弥补 Matlab 中缺少的功能,使为 Octave 编写的代码在 Matlab 中运行。如果您不需要 oct2mat,请将其删除。没有人需要安装所有的软件包,它实际上会使您的 Octave 安装变得更糟,例如 oct2mat。
所以在 Windows 上,这对我有用:
第 1 步:
将 gnuplot 安装到C:\Program Files (x86)\gnuplot
:
下载链接:
第 2 步: 转到给定目录下面(考虑到您已经在 C:\ root 中安装了 Octave):
C:\Octave\share\octave\site\m\startup
在记事本中打开octaverc
该目录中的文件。
第 3 步:
将以下行添加到文件末尾。
gnuplot_binary 'C:\Program Files (x86)\gnuplot\bin\gnuplot.exe'
graphics_toolkit('gnuplot')
第4步:
保存文件并退出记事本。如果Octave
打开也请关闭它。
第 5 步:
打开Octave
并在其中输入以下命令进行检查:
plot([1,2,3],[4,5,6]);
请注意,第一次渲染图表可能需要
gnuplot
5 分钟。因此,请不要尝试关闭应用程序。随后的简单绘图渲染得非常快,通常不到 1 秒。
阿萨德给出的答案是绝对正确的,对我也很有效。
这只是一个例外情况。
在您输入 Octave 命令行后:graphics_toolkit
如果答案qt
不是fltk
,那么您的 PC 可能需要与 SourceForge 分开安装gnuplot ,因为 Octave 在 W8/10 中安装时会出现一些错误。
这是附加的链接。 https://sourceforge.net/projects/gnuplot/?source=directory
您无需更改任何安装文件。
这应该工作
当我第一次测试绘制示例图形时,图形窗口出现但一到两分钟没有响应,然后图形出现了。更多的情节立即出现。操作系统:Windows 7 64 位 Octave 4.0.3 64 位。
运行代码时,我使用 octave 4.2 有类似的症状(无法关闭绘图窗口,绘图需要时间才能出现)。当语句不以分号 (;) 结尾时,命令和结果将在命令窗口中打印。在我看来,命令窗口停止解释代码并等待用户按下有效键 (f,b,q) 以继续或中止执行。停止点取决于先前执行的代码和命令窗口的大小,因此这些症状的间歇性。
解决方案:
选项 1:转到命令窗口并按住 f(前进)
选项 2:使用分号终止语句
x = linspace(0,1,10);
y = x.^2;
plot(x,y);
选项 3:摆弄一些命令窗口设置
希望能帮助到你
我在 4.0.3 版中遇到了同样的问题,并且正如Assad Ebrahim 所说,将默认工具包切换到 gnuplot对我不起作用。然后我在Octave for Microsoft Windows中找到了一些东西:
当前的 octave for windows 提供了一个功能不全的 gnuplot。因此,您不能使用 gnuplot 图形工具包的全部功能
并且有如何下载和安装 gnuplot 的说明。希望对您有所帮助。
以下是从 Emacs 中运行 Octave时绘图窗口冻结的解决方案,归功于John Lawrence Aspden和user2699来自问题How to get Octave's plot to work under emacs? . 它被带到这里是因为这个问题更容易找到。
该问题可能是由 Emacs octave-mode 的--no-line-editing
开关引起的,您可以通过将其修复M-x customize-variable RET inferior-octave-startup-args RET
并更改--no-line-editing
为--line-editing
.
我遇到了同样的问题,有时 linspace 会在命令窗口中向您显示所有结果并等待您的交互。在命令后添加;
,或q
在命令窗口中点击退出
x = linspace(0,10,100);
more off
通过放入八度命令窗口来禁用屏幕输出的分页。这将防止代码等到您看到所有行。
如果您想重新打开它,请使用more on