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/