matlab2tikz是用于将matlab / octave图形转换为tikz代码的出色软件包。

但是,如果图中包含很多点,则产生的tikz代码对于乳胶排版非常繁琐。有时编译甚至会失败,并显示以下消息:TeX capacity exceeded, sorry

有没有办法解决这个问题?

最佳答案

在转换为tikz-pgf的过程中,matlab2tikz有一个非常聪明的选择来对数字进行下采样。它称为minimumPointsDistance。在大多数情况下,这确实可以纠正这种情况。

但是,有时,当实际保留的点数下降得很低时,它可能会使曲线的某些“硬”区域变形。下图对此进行了说明



蓝色曲线(1184点)是原始曲线,红色曲线(117点)是原始曲线。失真是明显的。

为了解决这个问题,同时保持较低的点数,我编写了一种新的点减少算法,该算法效果更好(但有时会更慢)。结果(红色曲线为116点)



显然,失真消失了。

但是仍然有

另一个缺点

两种算法中都存在当人们将一批图形转换为tikz时,他们通常希望所有简化图的质量统一。但是有时这是不可能的(至少无需额外的努力),因为通常对于每个图,必须分别设置minimumPointsDistance,结果实际上取决于间隔[min_y,max_y]和[min_x,max_x]的大小。以及图中的点数。

因此,为了克服该问题并使minimumPointsDistance能够为所有图形统一设置为特定值,产生统一质量的简化版本,请使用归一化,现在minimumPointsDistance指的是“内部”的实际大小纸上印刷的图形。

您可以从here下载修改的matlab2tikz.m文件以及说明。

注意,没有进行详尽的测试,所以要小心!

关于matlab - matlab2tikz产生沉重的排版tikz代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11992397/

10-10 06:34