首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab2tikz生成繁重的排版tikz代码

matlab2tikz生成繁重的排版tikz代码
EN

Stack Overflow用户
提问于 2012-08-17 01:22:55
回答 2查看 3K关注 0票数 2

matlab2tikz是一个用于将matlab/octave图形转换为tikz代码的很好的包。

但是,如果图中包含很多点,那么生成的tikz代码将非常繁重,latex无法排版。有时,编译甚至会失败,并显示以下消息:TeX capacity exceeded, sorry

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-17 01:22:55

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

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

蓝色曲线(1184点)是原始曲线,红色曲线(117点)是简化曲线。这种扭曲是显而易见的。

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

很明显,失真已经消失了。

但还是有

还有一个缺点

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

因此,为了克服这个问题并使minimumPointsDistance能够被统一地设置为所有图形的特定值,从而产生统一质量的缩小版本,使用了归一化,并且现在minimumPointsDistance“内部”指的是打印在纸上的图形的实际尺寸。

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

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

票数 4
EN

Stack Overflow用户

发布于 2012-08-17 02:19:55

(评论有点长)

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11992397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档