如果您已经使用Mathematica一段时间,您可能已经加入了文档中心.在这些页面中总会找到新的东西.让它成为一个函数的选项,或者只是一些在某些时候似乎对你没用的例子.
您可能已经编写了包含您始终使用的专用函数的软件包.有时您可能会想到一个与您的功能一起使用的简洁示例,但很可能它最终被遗忘在硬盘中的某个地方.如果您在考虑它的那一刻就将其写入文档,那么您可能不会在以后拼命寻找它.
出于这个原因,我想知道如何以编程方式将Mathematica文档中心的文档集成到您自己的函数中.这个问题是为了探索如何调整文档.如果您有编写的脚本可以帮助您执行此操作,请与社区分享.
对于这个问题,Wolfram的Workbench不是一个可接受的解决方案.一切都必须通过Mathematica的简单安装完成.解决方案应涵盖以下几点:
?SymbolSearch: Symbol这是一个非常广泛的主题,我有1,2和3的解决方案.我缺少第4点.那么请告诉我们,您如何使用文档中心记录您的功能?
我添加了另一个答案.希望这个答案对于Mathematica的用户用他们的包编写文档页面更令人鼓舞.我认为编写文档页面对应用程序编写者以及应用程序的用户都是有益的.如果你下载我写的软件包,我建议你按照教程进行操作,这样你就可以看到每一步都会发生什么.这将为您未来的项目提供宝贵的经验.
自从我写这个软件包以来,有几个人对这个软件包很感兴趣.我已将软件包上传到Github:https://github.com/jmlopez-rod/ApplicationMaker.如果您想成为存储库的贡献者,请与我联系.
我已经浪费了很多时间处理字符串(由其他来源生成),我发现问题是字符串具有不可打印的字符.今天我正在处理javascript.有谁知道如何在javascript中替换不可打印的unicode字符?
我发现类似的东西:
my_string.replaceAll("\\p{C}", "?");
和这里:
filename.replace(/[^a-z0-9\.]+/gi, "");
最后一个选项替换括号中没有的所有字符.无论我正在使用什么语言,这总是让我在后端咬我的东西,我已经厌倦了弄清楚什么字符弄乱了我的代码.出于这个原因,我希望能够将所有那些不可见的字符替换为可见的东西,以便我以后可以完全删除它们.
有时候导出到pdf图像简直很麻烦.如果您绘制的数据包含许多点,那么您的数字将会很大,您选择的pdf查看器将花费大部分时间来渲染这个高质量的图像.因此,我们可以将此图像导出为jpeg,png或tiff.从某个视图来看图片会很好但是当你放大时它看起来会变形.对于我们正在绘制的图形,这在某种程度上是很好的,但如果您的图像包含文本,那么此文本将看起来像素化.
为了尝试两全其美,我们可以将这个图分成两部分:带标签的轴和3D图片.因此,轴可以导出为pdf或eps,3D图形可以导出为栅格.我希望我知道后来如何将这两者结合在Mathematica中,所以目前我们可以使用矢量图形编辑器(如Inkscape或Illustrator)来组合这两者.
我设法实现了这个我在出版物中制作的情节,但这促使我在Mathematica中创建例程以自动化这个过程.这是我到目前为止:
SetDirectory[NotebookDirectory[]];
SetOptions[$FrontEnd, PrintingStyleEnvironment -> "Working"];
Run Code Online (Sandbox Code Playgroud)
我喜欢通过将工作目录设置为notebook目录来启动笔记本.由于我希望我的图像具有我指定的大小,因此我将打印样式环境设置为工作,请查看此信息以获取更多信息.
in = 72;
G3D = Graphics3D[
AlignmentPoint -> Center,
AspectRatio -> 0.925,
Axes -> {True, True, True},
AxesEdge -> {{-1, -1}, {1, -1}, {-1, -1}},
AxesStyle -> Directive[10, Black],
BaseStyle -> {FontFamily -> "Arial", FontSize -> 12},
Boxed -> False,
BoxRatios -> {3, 3, 1},
LabelStyle -> Directive[Black],
ImagePadding -> All,
ImageSize -> 5 in,
PlotRange -> All,
PlotRangePadding -> None,
TicksStyle -> Directive[10],
ViewPoint -> {2, -2, 2}, …Run Code Online (Sandbox Code Playgroud) 这很可能是Mathematica 8.0.1中的一个错误,也可能是其他版本.让我们尝试以下方法:
Table[
Export[
"Res_" <> ToString[r] <> ".png", Rasterize[
Style[x^2 + y^2, 40],
Background -> None,
ImageResolution -> r
],
Background -> None],
{r, {20, 40, 100, 300, 400, 500, 600}}
]
Run Code Online (Sandbox Code Playgroud)
这是我获得的屏幕截图:

首先要注意的是,最后两张图片的尺寸错误.这在某种程度上是好的,因为我对300或以上的分辨率感到满意.现在看看这个:
in = 72;
G3D = Graphics3D[AspectRatio -> 0.925, Axes -> {True, True, True},
AxesEdge -> {{-1, -1}, {1, -1}, {-1, -1}}, AxesStyle -> Directive[10, Black],
BaseStyle -> {FontFamily -> "Arial", FontSize -> 12}, Boxed -> False,
BoxRatios -> {1, 1, 1}, LabelStyle -> Directive[Black],
ImagePadding …Run Code Online (Sandbox Code Playgroud) Mathematica可用于编写非常好的文档.有谁知道是否可以写2列文件?如果是这样,您是否可以提供一些示例或指向显示此样式的其他笔记本的链接.
我无法理解如何numpy存储其数据.考虑以下:
>>> import numpy as np
>>> a = np.ndarray(shape=(2,3), order='F')
>>> for i in xrange(6): a.itemset(i, i+1)
...
>>> a
array([[ 1., 2., 3.],
[ 4., 5., 6.]])
>>> a.flags
C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
Run Code Online (Sandbox Code Playgroud)
这表示a列major(F_CONTIGUOUS)因此在内部a应如下所示:
[1, 4, 2, 5, 3, 6]
Run Code Online (Sandbox Code Playgroud)
这正是本词汇表中所述的内容.令我困惑的是,如果我尝试以a线性方式访问数据而不是我得到:
>>> for i in xrange(6): print a.item(i)
...
1.0
2.0
3.0 …Run Code Online (Sandbox Code Playgroud) Mathematica是否支持线框图像的隐藏线移除?如果情况并非如此,那么有没有人遇到过这样的方法呢?让我们从这开始:
Plot3D[Sin[x+y^2], {x, -3, 3}, {y, -2, 2}, Boxed -> False]
Run Code Online (Sandbox Code Playgroud)

要创建线框,我们可以:
Plot3D[Sin[x+y^2], {x, -3, 3}, {y, -2, 2}, Boxed -> False, PlotStyle -> None]
Run Code Online (Sandbox Code Playgroud)

我们可以做的一件事就是将所有表面着色为白色.然而,这是不希望的.原因是因为如果我们将这个隐藏的线框架模型导出为pdf,我们将拥有Mathematica用于渲染图像的所有白色多边形.我希望能够以pdf和/或eps格式获得隐藏线移除的线框.
我已经发布了这个问题的解决方案.问题是代码运行速度很慢.在当前状态下,它无法在此问题中为图像生成线框.随意玩我的代码.我在帖子的末尾添加了一个链接.您也可以在此链接中找到代码
有没有人遇到过为您在Mathematica中创建的函数创建文档的教程?我正在尝试组织一些我写过的函数,但到目前为止,我的工作非常糟糕.我真的希望有一个文件显式的功能和一个文档,并以某种方式添加Mathematica文档的路径,以便Mathematica也可以搜索它.
以该Sin函数的文档为例:

当您单击箭头时,它会打开一个包含该Sin功能信息的笔记本.我试着复制那个笔记本的内容并粘贴在一个新的笔记本上,以便我可以编辑它,但我无法修改内容.
我非常喜欢Mathematica的文档格式,我想以同样的方式记录我的函数以供将来参考.有没有人知道如何以与Mathematica相同的方式记录功能?
这个问题之前已被多次提出并回答过.一些例子:[1],[2].但似乎没有更普遍的东西.我正在寻找的是一种用逗号分隔字符串的方法,这些逗号不在引号或分隔符对中.例如:
s1 = 'obj<1, 2, 3>, x(4, 5), "msg, with comma"'
Run Code Online (Sandbox Code Playgroud)
应该分成三个元素的列表
['obj<1, 2, 3>', 'x(4, 5)', '"msg, with comma"']
Run Code Online (Sandbox Code Playgroud)
现在的问题是,这可能会变得更复杂,因为我们可以看到成对<>和().
s2 = 'obj<1, sub<6, 7>, 3>, x(4, y(8, 9), 5), "msg, with comma"'
Run Code Online (Sandbox Code Playgroud)
应分为:
['obj<1, sub<6, 7>, 3>', 'x(4, y(8, 9), 5)', '"msg, with comma"']
Run Code Online (Sandbox Code Playgroud)
不使用正则表达式的天真解决方案是通过查找字符来解析字符串,<(.如果找到<或者(找到了,那么我们就开始计算奇偶校验.如果奇偶校验为零,我们只能以逗号分割.举例说,我们要分开s2,我们可以开始parity = 0,当我们到达s2[3]我们遇到<这将增加平价1.当遇到奇偶只会减少>或者)当它遇到它会增加<或(.虽然奇偶校验不是0,但我们可以简单地忽略逗号而不进行任何拆分.
这里的问题是,有没有办法快速使用正则表达式?我真的在研究这个 …
今天我偶然发现了这个帖子:
http://www.mathworks.com/matlabcentral/newsreader/view_thread/112560
问题基本上是如何让Matlab读取你的startup.m文件,无论你在哪里开始你的matlab会话.
提供的解决方案之一是:
一个解决办法是要求系统管理员添加几行"matlabrc.m",增加了一些预先设定的文件夹中的用户的主目录到MATLAB路径(比如〜/ .matlabstart).然后每个用户可以在此文件夹中拥有自己的"startup.m"文件.
我最终在我的系统(OS X)中做的是添加一个startup.m文件:
/Applications/MATLAB_R2011a.app/toolbox/local/
Run Code Online (Sandbox Code Playgroud)
在这个startup.m文件中,我添加了:
if exist([getenv('HOME') '/.matlabrc/startup.m'])
run([getenv('HOME') '/.matlabrc/startup.m']);
end
Run Code Online (Sandbox Code Playgroud)
这样用户可以选择创建隐藏文件夹~/.matlabrc,在其中可以放置文件startup.m.在这个启动文件中,无论他们启动Matlab的目录是什么,他们都可以告诉matlab什么时候执行它们.我添加到自己的个人startup.m文件中的一个例子是
addpath(genpath('/Users/jmlopez/matlabcode/'))
Run Code Online (Sandbox Code Playgroud)
现在我可以在该目录中添加任意数量的文件夹,并且每次我自动启动Matlab时都会将所有文件夹添加到路径中,而无需修改路径.
问题是:Matlab是否已经提供了一个特殊的文件,就像我创建的那样,或者我刚刚经历了所有这些麻烦来完成我想要的东西?如果答案是我给出的第二个选项,那么,Matlab为什么不提供这个?每当你没有管理员权限并且我不想将我的startup.m文件带到我去的每个目录时,将目录添加到Matlab路径是非常痛苦的.请问有人对此有所了解吗?