2

matlab2tikz是将matlab/octave数字转换为 tikz 代码的绝佳软件包。

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

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

4

2 回答 2

4

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

但是,有时当实际点数下降非常低时,它会扭曲曲线的某些“僵硬”区域。如下图所示

在此处输入图像描述

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

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

在此处输入图像描述

很明显,失真消失了。

但是还是有

另一个缺点

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

因此,为了克服这个问题,使minimumPointsDistance所有图形能够统一设置为特定值,产生统一质量的简化版本,使用标准化,现在minimumPointsDistance“内部”指的是打印在纸上的实际尺寸数字。

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

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

于 2012-08-16T17:22:55.347 回答
2

(评论有点长)

您可以使用matlabfrag,它将您的图形转换为 eps 并在编译 LaTeX 时,将字符串数据替换为乳胶字符串。这样您就不会遇到样本数量过多的问题。二次采样很糟糕(除非你当然有 100k 点),因为你想保留高分辨率矢量图。

示例:http ://www.mediafire.com/view/?atstyyu4bj198wp

于 2012-08-16T18:19:55.270 回答