问题标签 [mathematica-8]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
image-processing - ComponentMeasurements[_,"Centroid"] 结果偏移
我需要获得一组具有亚像素精度的二进制图像中组件的质心(质心)。
Mathematica 8 有一个很好的补充:
但是当这些结果显示与其他地方进行的其他计算不一致时,我遇到了一些麻烦。
所以我推出了自己的,也许不太好:
您可以看到这些结果之间存在 0.5 的偏移:
起初我认为问题与图像尺寸是偶数还是奇数有关,但事实并非如此。
我更喜欢使用ComponentMeasurements[ ..,"Centroid"]
和纠正结果,但我担心未来的 Mma 版本可能会修改这种行为并破坏结果。
我还可以使用已知图像运行先前的“校准”并计算偏移量,因此它会自动更正,但我想先了解发生了什么。
这是一个错误吗?
关于为什么会发生这种情况的任何想法?
c - 安装了 GCC。Mathematica 仍然无法编译为 C
我在 MacOSX 上运行 Mathematica 8,试图将最简单的程序编译为 C。任何与 C 相关的东西在 Mathematica 中都不起作用。我安装了 GCC 4.2;我什至用 XCode 多次重新安装它。这是我正在做的事情以及我得到的错误:
首先,我总是评估命令
如果我将编译目标设置为 C,
我收到一条错误消息:Compile::nogen : A library could not be created from the compiled function。
如果我尝试创建一个库,
我收到一条消息$Failed。Wolfram 说这是因为我没有安装 C 编译器。我觉得这很难相信,因为当我跑步时
它告诉我已经安装了 GCC:{{"Name" -> "GCC", "Compiler" -> CCompilerDriver'GCCCompiler`GCCCompiler, "CompilerInstallation" -> "/usr/bin", "CompilerName" ->自动的}}
更重要的是,终端说我也安装了 GCC!任何帮助,将不胜感激。我真的很想将 Mathematica 编译为 C。
wolfram-mathematica - 小修改后重新布局图,同时保留原始布局的特征
在 Mathematica 8 中是否有一种简单的方法可以执行以下操作?
- 构建一个图形,并使用一些图形布局显示它。
- 稍微修改图形(例如添加或删除边或顶点)。
- 从原始布局开始重新计算布局,以或多或少保留对象的“形状”。例如,从先前布局的坐标开始重新运行弹簧电动布局算法。
如果图表在两个显示之间没有改变,那么布局也不应该改变(或者只是最小的改变)。使用新的显示器Graph
或GraphPlot
两者都可以接受。
编辑:本质上我需要类似图形的类似布局。我总是通过修改可能已经布置好的现有图表来获得类似的图表,但任何通用解决方案都是可以接受的。
编辑2:这是这种东西有用的例子。转到http://ccl.northwestern.edu/netlogo/models/GiantComponent并单击“在浏览器中运行”(需要 Java)。单击设置,然后单击开始。您可以看到图表的演变。如果我们在 Mathematica 中这样做,那么每个连续的图看起来都会完全不同,并且很难看出它是在进化的同一个图。在一些应用程序中,能够将图形的微小变化可视化是非常有用的。但是如果做了很多连续的改变,那么重新计算布局是必须的,简单地淡化或突出边缘是不够的。再说一次,这只是一个例子:我不是想使用 Mathematica 来为图形制作动画,或者将巨型组件的出现可视化。
wolfram-mathematica - 使用框架而不是轴时不裁剪条形图
我刚刚发现 aBarChart
在使用Frame
而不是Axes
.
例子:
这是功能还是错误?如果它是一项功能,是否有一种简单的方法可以防止裁剪?
编辑
屏幕截图,根据请求:
wolfram-mathematica - 格式化使用消息
如果你看一下Mathematica8中的Combinatorica
包,你会发现函数的定义。我有兴趣知道 Mathematica 如何知道如何格式化使用消息。有些东西告诉我,我没有查看正确的文件。无论如何,让我们尝试以下方法:(mathematicapath)/AddOns/LegacyPackages/DiscreteMath/Combinatorica.m
这一行就是上面提到的文件中的682行。现在,如果我们在mathematica notebook 中运行它并使用?Cofactor
,我们将看到完全相同的消息。但是如果我们得到包,那么消息就会被格式化。这是一个屏幕截图:
注意函数中的 m、i 和 j 是如何变化的,并且在消息中添加了一个双箭头。我认为箭头已添加到消息中,因为它存在文档。有人可以解释这种行为吗?
编辑:这是我的笔记本文件的屏幕截图,它自动保存到 m 文件。
如您所见,L
andM
是斜体时代的新罗马。现在我将加载包并查看使用情况。
到现在为止还挺好。现在让我们看看文档中心。我会寻找功能LineDistance
。
如您所见,它显示了一条奇怪的消息。在这种情况下,我们只想显示没有任何样式的消息。我仍然无法弄清楚这个Combinatorica
包是如何做到的。我按照这个来制作索引,以便文档中心可以显示摘要。摘要本质上是使用情况显示。让我知道是否需要更具体。
wolfram-mathematica - 将笔记本集成到 Mathematica 的文档中心
如果您已经使用Mathematica一段时间了,您可能已经对文档中心产生了浓厚的兴趣。在这些页面中总会发现一些新的东西。让它成为一个函数的选项,或者只是一些在某些时候对你没有用的例子。
您可能已经编写了具有您一直使用的专用功能的包。有时您可能会想到一个与您的函数一起使用的简洁示例,但它很可能最终被遗忘在硬盘的某个位置。如果您在想到它的那一刻就将其写入文档,那么您以后可能不会拼命寻找它。
出于这个原因,我想知道如何以编程方式将您自己的函数的文档与Mathematica 的文档中心集成。这个问题在这里探讨如何改编文档。如果您编写了可以帮助您执行此操作的脚本,请与社区分享。
对于这个问题,Wolfram 的 Workbench 不是一个可接受的解决方案。一切都必须通过Mathematica的简单安装来完成。解决方案应涵盖以下几点:
- 为函数创建文档(最好是模板)。
- 创建指南和教程(如果他们认为有用)。
- 将笔记本链接到文档中心。
- 创建在不同环境中正确显示的“使用”消息。
- 在 Mathematica 笔记本中
?Symbol
- 在文档中心
Search: Symbol
- 在 Mathematica 笔记本中
这是一个非常广泛的话题,我有针对 1、2 和 3 的解决方案。我缺少第 4 点。那么请告诉我们,您如何使用文档中心记录您的功能?
更新
我添加了另一个答案。希望这个答案更能鼓励 Mathematica 的用户使用他们的包编写文档页面。我认为编写文档页面对应用程序编写者和应用程序用户都有好处。如果你下载我写的包,我建议你按照教程进行操作,这样你就可以看到每一步会发生什么。这将为您未来的项目提供宝贵的经验。
Github(2014 年 5 月 24 日)
自从我写了这个包以来,已经有几个人对这个包感兴趣。我已将包上传到 Github:https ://github.com/jmlopez-rod/ApplicationMaker 。如果您想成为存储库的贡献者,请与我联系。
wolfram-mathematica - 保存 FittedModel 有问题
在 Mathematica 7 和 8 中,我们发现 Mathematica 无法正确保存和获取拟合例程的结果。我希望这里有人知道:此错误的最佳实践解决方法是什么?
我们的任务是使用 NonlinearModelFit 拟合大量数据集,它为每个数据集返回一个 FittedModel。这些拟合需要一段时间,我们尝试使用 Save 和 DumpSave 将结果存储到文件中。随后的分析使用 Get 将 FittedModel(s) 拉回。
Mathematica 在没有警告的情况下执行 Save & Get,但返回的 FittedModel 有问题。我们调用 Get 并从磁盘加载 FittedModel,将结果称为“foo”。尝试 foo[10] 使用输入 10 评估拟合模型。我们看到的错误是 foo["BestFitParameters"] 应该返回一个规则列表,而是将字符串插入到函数中,因为它是像 10 这样的数字。尝试 foo [{"BestFitParameters","BestFitParameters"}] 应该在列表中给出规则两次,但在错误的 foo 中保持未评估。
除此之外,还有一个奇怪且具有误导性的行为,具体取决于我们是删除/清除 foo 还是退出内核:
- 将 FittedModel 计算为 foo
- 将 foo 保存或转储到磁盘
- 删除和/或清除 foo
- 从磁盘获取 foo
- foo 工作正常
但是如果我们重新启动内核它会失败
- 将 FittedModel 计算为 foo
- 将 foo 保存或转储到磁盘
- 杀死并重新启动内核
- 从磁盘获取 foo
- foo 是越野车
有没有人见过这种行为?
这个错误背后有很好的解释吗?
有没有好的解决方法?
wolfram-mathematica - 从 Rule 和 /. 切换有什么好处?大型应用程序中的 OptionsPattern[] 和 OptionValue?
旧习惯很难改掉,我意识到我一直在使用opts___Rule
模式匹配和结构,就像thisoption /. {opts} /. Options[myfunction]
我目前正在开发的非常大的包中一样。Sal Manango 的“Mathematica Cookbook”提醒我,后版本 6 的做法是opts:OptionsPattern[]
和OptionValue[thisoption]
. 无论如何,该软件包需要版本 8,但多年来我从未改变过编写此类代码的方式。
是否值得从我的 pre-version-6 做事方式中重构所有这些?有性能或其他好处吗?
问候
马鞭草属
编辑:总结
针对这个问题提出了很多好的观点,所以谢谢大家(当然还有一个)。总而言之,是的,我应该重构使用OptionsPattern
and OptionValue
。(注意:OptionsPattern
不像OptionPattern
我以前那样!)有很多原因:
- 触摸速度更快(@Sasha)
- 它更好地处理参数必须在的函数
HoldForm
(@Leonid) OptionsPattern
自动检查您是否将有效选项传递给该函数(FilterRules
如果您传递给不同的函数,仍然需要(@Leonid)- 它处理
RuleDelayed
(:>
)更好(@rcollyer) Flatten
它在不使用(@Andrew)的情况下处理嵌套的规则列表- 使用
OptionValue /@ list
而不是多次调用来分配多个局部变量要容易一些someoptions /. {opts} /. Options[thisfunction]
(在@rcollyer和我之间的评论中出现)
编辑:7 月 25 日我最初认为,/.
如果您故意从另一个函数中提取默认选项,而不是实际调用的那个,那么使用该语法可能仍然有意义。事实证明,这是通过使用其中OptionsPattern[]
包含头部列表的形式来处理的,例如:(请参阅文档OptionsPattern[{myLineGraph, DateListPlot, myDateTicks, GraphNotesGrid}]
中的“更多信息”部分)。我最近才解决了这个问题。
visual-studio - 从mathematica中找到c编译器
C 编译器和数学。
嗨,我想在数学中使用 CUDA 功能。但是,它需要一个工作的 c 编译器。我通常是一个 unix 人,但我有一个mathematica 的 Windows 副本。我尝试安装 Visual Studio Express 和 miniGW(某种 gcc 到 Windows 端口)。但是现在当我启动mathematica并在加载了需要的CCompilerDriver和CUDALink之后执行CCompiler []时,我得到了一个空的编译器列表。我需要设置一些隐藏的东西来让mathematica发现这些编译器。我完全迷失在这个 Windows 环境中。
我在 wolframs 网站上没有提到这一点,在他们的所有示例中,visual studio 都在那里并且已经在工作。
哦,是的,我的mathematica 是第8 版。
c - 在并行处理中,如何使用mathematica让每个处理器执行一个程序块
我想编写一段 C 代码并将其发送到每个处理器以执行它
这可能使用mathematica吗?
使用网关将 C 与mathematica 或其他任何东西联系起来
谢谢你们 .. :)