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)
可能我需要指定一个固定的窗口大小,并且
缩放轴。当第一个这样的展示窗口
将显示一个正确的正方形。一个豪华的解决方案将使窗户
(或其内容)
不可交互调整大小
备注:
轴相等之前放置您的体形窗口并进行所有更改。我几乎没有运气多次调用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])