Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何以八度音阶绘制和显示正方形?_Matlab_Gnuplot_Octave - Fatal编程技术网

Matlab 如何以八度音阶绘制和显示正方形?

Matlab 如何以八度音阶绘制和显示正方形?,matlab,gnuplot,octave,Matlab,Gnuplot,Octave,我无法画出八度的正方形。 我无法强制等比缩放的轴,因此我得到一个矩形: 以下试验不起作用: x = [0, 1, 1, 0, 0]'; y = [0, 0, 1, 1, 0]; plot(x, y), axis equal, axis([-1,2, -1,2]) % figure('Position', [10,10,100,100]); %[startx,starty,width,height] % plot(x, y) 可能我需要指定一个固定的窗口大小,并且 缩放轴。当第一个这样的展示窗

我无法画出八度的正方形。 我无法强制等比缩放的轴,因此我得到一个矩形:

以下试验不起作用:

x = [0, 1, 1, 0, 0]';
y = [0, 0, 1, 1, 0];
plot(x, y), axis equal, axis([-1,2, -1,2])
% figure('Position', [10,10,100,100]); %[startx,starty,width,height]
% plot(x, y)
可能我需要指定一个固定的窗口大小,并且 缩放轴。当第一个这样的展示窗口 将显示一个正确的正方形。一个豪华的解决方案将使窗户 (或其内容) 不可交互调整大小

备注:

  • 我在Windows XP上有Octave 3.2.4
  • 中的建议 不起作用
  • 这对我很有用(Linux上的Octave):

    然而,这只在你调整图形窗口的大小之前有效,所以我承认这有点烦躁。因此,为了获得您想要的倍频程,我想您必须在调用
    轴相等之前放置您的体形窗口并进行所有更改。我几乎没有运气多次调用axis equal

    我猜这与GnuPlot中的限制有关(但我没有支持这一说法的硬数据),因此您可以尝试其他绘图库,以查看是否显示相同的行为

    编辑: 为确保完整性,请绘制代码生成的图形(如果我不调整图形窗口的大小)


    如果没有任何工作,可以尝试调试正在调用的倍频程代码。在MATLAB中,您可以通过键入
    edit axis
    来检查相应的代码,但在Octave中,我想您必须给出
    axis.m
    文件的完整路径(在
    help axis
    中提到过)。

    我认为这是Gnuplot的
    windows
    输出设备的问题。将其与
    wxt
    设备进行比较:

    Gnuplot 4.4.3,WinXP

    请注意,对于“win终端”,大小会影响图形大小,包括窗口标题栏和状态栏,而对于“wx终端”,则仅设置内部绘图区域


    八度音阶3.4.2,WinXP 不幸的是,当我在中尝试这一点时,它仍然不是这两种终端类型所应该的。事实上,使用
    set(gcf,'position',[…])
    调整图形大小没有效果:

    # Octave, backend=Gnuplot, terminal=wxt/windows
    graphics_toolkit gnuplot     # backend gnuplot
    setenv('GNUTERM','wx')       # wx/windows
    figure, set(gcf,'position',[100 100 200 400])
    plot(-10:10, -10:10, 'r'), legend('x')
    axis([-10 10 -10 10])
    axis equal                   # axis square
    
    因此,我必须使用鼠标手动调整图形的大小,使其达到指定的大小
    (200400)
    (是的,我实际上拉了一个箭头并测量了像素!)。最后调用
    refresh
    命令来replot:

    好消息是,一旦正确设置了图形大小,
    axis equal
    将适用于这两种终端类型

    另一方面,新的FLTK后端运行正常,没有任何黑客攻击,因此您可能希望切换到它:

    # Octave, backend=FLTK
    graphics_toolkit fltk        # backend fltk
    figure, set(gcf,'position',[100 100 200 400])
    plot(-10:10, -10:10, 'r'), legend('x')
    axis([-10 10 -10 10])
    axis equal
    


    MATLAB 以下是MATLAB输出,供参考:

    %# MATLAB
    figure, set(gcf,'position',[100 100 200 400])
    plot(-10:10, -10:10, 'r'), legend('x')
    axis equal
    axis([-10 10 -10 10])
    

    奇怪的是,在Ubuntu上,我得到了一个很好的正方形(正如预期的那样…)@Bart:所以,很可能是Windows问题(再次)。谢谢
    axis square
    曾在我的八度音阶(winXP)上工作,但自从上次尝试后就停止了。上次我更新到新版本时出现了一些问题……我在Octave 3.4.2中也遇到了同样的问题。幸运的是,我仍然有3.0.3并行版本,并且它在那里工作。不幸的是,这在Windows上不起作用。事实上,这与我的方法是一致的。不过还是要谢谢你!您是否有一些特定的绘图库?在使用Octave 3.2.4的Ubuntu上,它可以简单地工作,而不必调整窗口大小……嗯,我没有任何绘图库(或Octave)的经验,但是上面提到的那些可能会有所帮助?@Egon On On Octave您也可以编辑axis.m
    。由于此文件是只读的,它实际上会编辑一份副本,除非您首先键入
    editinplace true
    或将其放入
    中。octaverc
    感谢您的深入调查(+1)。你知道我如何安装八度音阶的FLTK吗?我没有发现任何有用的东西,只有2005年的旧东西。如果有困难,我会离开它并手动调整窗口大小。@Jiri:按照我之前发布的内容,转到“1.2.Octave-3.4.2-mingw+octaveforge pkgs”部分,下载两个7zip文件,然后按照有关如何提取的说明进行操作。这个3.4.x版本包括新的FLTK引擎,不需要外部依赖项。另一个途径是使用Cygwin(类似Linux的Windows环境)。您可以从Cygwin安装程序本身获得Octave 3.4.2。说明可在同一页上找到。我建议你先试试上一个……再次谢谢!我想知道为什么下载需要“ilivid下载管理器”。我不太想在我的电脑上安装这样的软件。为什么不能用普通的zip文件下载呢?@Jiri:如果你有这方面的知识,你可以自己从源代码中编译Octave,尽管我怀疑它在Windows上有点复杂。如果没有,您可以使用我建议的社区贡献的构建之一。目前,它是Windows3.4.x版本中唯一提供的一个,并且托管在一个公共文件共享网站上。官方安装程序仅适用于3.2.x分支。您还应该知道Octave是一个可移植的应用程序,因此使用简单的ZIP文件而不是安装程序是完全安全的。
    # Octave, backend=FLTK
    graphics_toolkit fltk        # backend fltk
    figure, set(gcf,'position',[100 100 200 400])
    plot(-10:10, -10:10, 'r'), legend('x')
    axis([-10 10 -10 10])
    axis equal
    
    %# MATLAB
    figure, set(gcf,'position',[100 100 200 400])
    plot(-10:10, -10:10, 'r'), legend('x')
    axis equal
    axis([-10 10 -10 10])