74

我正在使用 Windows 7 64 位。每次,我使用绘图功能,绘图窗口都会显示并成功绘制,但之后它会停止响应并且必须关闭它。

例如 :

x = linspace(0,1,10)
y = x.^2
plot(x,y);

奇怪的是,当绘图窗口冻结并且我必须关闭八度音阶窗口时,它们也会无响应。如果我不使用绘图功能,这不会发生。

我不知道为什么。是不是因为我使用的是 64 位版本?请告诉我如何解决这个问题。

4

10 回答 10

130

问题可能是您安装 Octave 时使用的图形工具包。

要检查这一点,请输入graphics_toolkitOctave 命令行。

如果响应是fltk并且您的绘图窗口正在冻结,则将默认工具包切换为 gnuplotgraphics_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,请尝试其中一个fltkgnuplot(其中一个可能比另一个更快)。

  • 如果上述方法不起作用,您可能需要安装/重新安装 gnuplot。(感谢 lukas 和 saurabh 的这种极端情况)。

于 2014-09-08T21:22:46.477 回答
14

正如 Assad Ebrahim 所写,问题出在工具包上。我在 3.8.2 版中遇到了另一个问题。gnuplot 根本不起作用。没有显示绘图窗口,我需要关闭 Octave。如果有人有同样的问题,解决方案是下载 gnuplot 并将其安装到 Octave 文件夹。它取代了旧的 gnuplot 并且新的 gnuplot 正在工作。

我感谢你的建议。

于 2014-11-03T17:14:53.153 回答
13

哦。我的朋友向我展示了这个命令,它工作正常:

pkg rebuild -noauto oct2mat

该命令重新安装包,但将其标记为在启动时默认不加载。此行为现​​已更改,默认情况下不会加载新版本的 Forge 软件包。

问题是永远不应该加载包 oct2mat 。它掩盖了 Octave 核心的几个功能,所以它开始表现得很奇怪。除非您真的需要此软件包,否则最好将其删除。

oct2mat 的目的是为了弥补 Matlab 中缺少的功能,使为 Octave 编写的代码在 Matlab 中运行。如果您不需要 oct2mat,请将其删除。没有人需要安装所有的软件包,它实际上会使您的 Octave 安装变得更糟,例如 oct2mat。

于 2012-08-20T05:12:43.407 回答
11

所以在 Windows 上,这对我有用:

第 1 步: 将 gnuplot 安装到C:\Program Files (x86)\gnuplot

下载链接:

https://sourceforge.net/projects/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]);

请注意,第一次渲染图表可能需要gnuplot5 分钟。因此,请不要尝试关闭应用程序。随后的简单绘图渲染得非常快,通常不到 1 秒。

于 2017-01-22T09:03:53.147 回答
8

阿萨德给出的答案是绝对正确的,对我也很有效。

这只是一个例外情况。

在您输入 Octave 命令行后:graphics_toolkit

如果答案qt不是fltk,那么您的 PC 可能需要与 SourceForge 分开安装gnuplot ,因为 Octave 在 W8/10 中安装时会出现一些错误。

这是附加的链接。 https://sourceforge.net/projects/gnuplot/?source=directory

您无需更改任何安装文件。

这应该工作

于 2016-06-29T08:53:28.087 回答
2

当我第一次测试绘制示例图形时,图形窗口出现但一到两分钟没有响应,然后图形出现了。更多的情节立即出现。操作系统:Windows 7 64 位 Octave 4.0.3 64 位。

于 2016-10-04T05:53:31.973 回答
0

运行代码时,我使用 octave 4.2 有类似的症状(无法关闭绘图窗口,绘图需要时间才能出现)。当语句不以分号 (;) 结尾时,命令和结果将在命令窗口中打印。在我看来,命令窗口停止解释代码并等待用户按下有效键 (f,b,q) 以继续或中止执行。停止点取决于先前执行的代码和命令窗口的大小,因此这些症状的间歇性。

解决方案:

选项 1:转到命令窗口并按住 f(前进)

选项 2:使用分号终止语句

x = linspace(0,1,10);
y = x.^2;
plot(x,y);

选项 3:摆弄一些命令窗口设置

希望能帮助到你

于 2016-11-23T10:15:38.850 回答
0

我在 4.0.3 版中遇到了同样的问题,并且正如Assad Ebrahim 所说,将默认工具包切换到 gnuplot对我不起作用。然后我在Octave for Microsoft Windows中找到了一些东西:

当前的 octave for windows 提供了一个功能不全的 gnuplot。因此,您不能使用 gnuplot 图形工具包的全部功能

并且有如何下载和安装 gnuplot 的说明。希望对您有所帮助。

于 2017-02-10T00:12:27.010 回答
0

以下是从 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.

于 2018-10-23T10:31:47.083 回答
0

我遇到了同样的问题,有时 linspace 会在命令窗口中向您显示所有结果并等待您的交互。在命令后添加;,或q在命令窗口中点击退出 x = linspace(0,10,100);

在此处输入图像描述

永久解决方案,已编辑

more off通过放入八度命令窗口来禁用屏幕输出的分页。这将防止代码等到您看到所有行。

如果您想重新打开它,请使用more on

文件

相关问题

防止用户交互命令窗口换八度

无法在 gui 命令窗口中停止执行

于 2020-11-16T12:04:05.897 回答