matlab2tikz产生重到排版的tikz代码

matlab2tikz产生重到排版的tikz代码,matlab,latex,octave,Matlab,Latex,Octave,是将matlab/octave图形转换为tikz代码的一个很棒的软件包 然而,如果图中包含很多点,那么对于latex的排版来说,生成的tikz代码非常重。有时编译甚至会失败,并显示以下消息:TeX容量已超出,抱歉 有没有办法解决这个问题?matlab2tikz有一个非常聪明的选项,可以在转换为tikz pgf的过程中对图形进行下采样。它被称为minimumPointsDistance。在大多数情况下,这确实可以纠正这种情况 然而,当实际点数下降得非常低时,有时它会扭曲曲线的某些“僵硬”区域。下图

是将
matlab
/
octave
图形转换为tikz代码的一个很棒的软件包

然而,如果图中包含很多点,那么对于latex的排版来说,生成的tikz代码非常重。有时编译甚至会失败,并显示以下消息:
TeX容量已超出,抱歉


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

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

然而,当实际点数下降得非常低时,有时它会扭曲曲线的某些“僵硬”区域。下图对此进行了说明

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

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

很明显,失真已经消失了

但还是有

还有一个缺点

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

因此,为了克服这个问题,并使所有图形的
最小点距离
能够统一设置为特定值,从而产生统一质量的简化版本,使用了归一化,现在
最小点距离
“内部”指的是打印在纸上图形的实际大小

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

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

(评论有点长)

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


示例:

+1向上投票,这是我使用过的策略,效果很好。我更喜欢tikz图形的感觉。