周末这让我很烦恼:什么是解决那些Waldo的好方法? [ 'Wally'在北美之外]使用Mathematica(图像处理和其他功能)进行拼图?
这是我到目前为止的功能,它通过调暗一些非红色来减少视觉复杂度:
whereIsWaldo[url_] := Module[{waldo, waldo2, waldoMask},
waldo = Import[url];
waldo2 = Image[ImageData[
waldo] /. {{r_, g_, b_} /;
Not[r > .7 && g < .3 && b < .3] :> {0, 0,
0}, {r_, g_, b_} /; (r > .7 && g < .3 && b < .3) :> {1, 1,
1}}];
waldoMask = Closing[waldo2, 4];
ImageCompose[waldo, {waldoMask, .5}]
]
Run Code Online (Sandbox Code Playgroud)
以及这个"有效"的网址示例:
whereIsWaldo["http://www.findwaldo.com/fankit/graphics/IntlManOfLiterature/Scenes/DepartmentStore.jpg"]
Run Code Online (Sandbox Code Playgroud)
(Waldo是收银台):
我用Mma主要解决相对较小的问题.
我也想开始使用它来准备我的演示文稿和文档,但是我很难从嵌入式帮助中学习如何做到这一点,我想其他地方可能会提供一些好的资源.
你知道任何有用的指针(书籍,论文,视频......)吗?
你有一个"技巧袋"在这里张贴?
编辑
到目前为止,这个问题得到了两个答案(@ mzabsky和Mr.Wizard's)虽然两者都很有用,但也许我的担忧更为基础.所以我张贴的一个例子样的事情我不能做(或了解如何辨别别人是怎么做他们).
我从The Mathematica Journal(以下图片左侧的笔记本 - 点击图片查看完整尺寸)中选择了以下示例:
所以,有些问题,只是为了弄清楚我的麻烦:
1)我将文本复制到我右边的.nb,用相同的样式(文本)格式化,但外观不同,所以我猜风格定义不同.如何将样式定义从一个.nb复制到另一个?
2)文本块下面的表格没有附加样式.它是如何格式化的?背景颜色在哪里定义?
我想要指出关于这些问题的阅读(或要观看的视频,或其他什么).我不想让你在这里写下一本关于Mathematica格式的书!
我主要使用mathematica作为数学工作台,并编写相对较小的ad-hoc程序.然而,我正在设计一个我打算在Mathematica中编程的系统.我需要将数据存储在树中,并搜索和遍历树.虽然我知道如何实现树,但我更喜欢标准的,经过测试的代码.我在Mathematica用户维基上查看了基本数据结构的类型.我没有找到,尽管Mathematica文档中有一个小例子.
现在问我的问题:
是否有可用的数据结构(开源)包?
您在数据结构方面使用了什么方法?逐步开发自己的util包?
(这不是一个问题,只是一个评论.也许......缺乏(大量可用的)开源软件包是Mathematica没有应有的动力的原因.我害怕鸡/蛋问题.)
我试着用它.这对于一些Plots来说真的很不错,但是当它以三角形为例时我发现它非常复杂.我想出了如何绘制三角形,但如何添加角度标记,那些曲线?
因为我刚开始从事这项工作,写一本书,任何人都可以推荐我,这是获得好看图形的最佳方法,例如如下图所示.哪种程序最好用.
感谢您提出任何建议和意见.
有没有我可以查看/更改全局快捷方式选项的地方,如Command+ 9(转换为输入样式)?
特别是,我需要一种更快的方法来创建项目符号列表.它是Cell上下文菜单中的"Item"样式,它没有自己的快捷方式.
我在Mathematica中实现了一个四叉树.我不熟悉像Mathematica这样的函数式编程语言,我想知道我是否可以通过更好地使用模式来改进它或使其更紧凑.
(我知道我可以通过修剪未使用的节点来优化树,并且可能有更好的数据结构,如用于空间分解的kd树.)
此外,每次添加新点时,我仍然不满意复制整个树/表达式的想法.但我的理解是,对整个表达式进行操作而不修改部分是函数式编程方式.我对这方面的任何澄清表示感谢.
MV
代码
ClearAll[qtMakeNode, qtInsert, insideBox, qtDraw, splitBox, isLeaf, qtbb, qtpt];
(* create a quadtree node *)
qtMakeNode[{{xmin_,ymin_}, {xmax_, ymax_}}] :=
{{}, {}, {}, {}, qtbb[{xmin, ymin}, {xmax, ymax}], {}}
(* is pt inside box? *)
insideBox[pt_, bb_] := If[(pt[[1]] <= bb[[2, 1]]) && (pt[[1]] >= bb[[1, 1]]) &&
(pt[[2]] <= bb[[2, 2]]) && (pt[[2]] >= bb[[1, 2]]),
True, False]
(* split bounding box into 4 children *)
splitBox[{{xmin_,ymin_}, {xmax_, ymax_}}] := {
{{xmin, (ymin+ymax)/2}, {(xmin+xmax)/2, …
Run Code Online (Sandbox Code Playgroud) 我想知道是否有一个不是特定于语言的REPL.我花了很多时间浸泡在REPL中(主要用于Clojure,Scala和Haskell),而捆绑的这些都让我或多或少地感到沮丧.似乎REPL的工作非常通用,因为它们:
我不明白为什么不应该有一些与语言无关的REPL,但我一直无法找到这样的东西.在我理想的REPL中我想要的一些东西:
而且更乐观
这存在吗?
language-agnostic haskell scala clojure read-eval-print-loop
前几天我想知道StackOverflow是否有我可以从Mathematica访问的API,显然它确实:"保存绘图注释"
从StackOverflow获取数据到Mathematica的最佳方法是什么?Sjoerd利用这些信息制作了一个情节.我有兴趣将SO相关的通知添加到我保存在笔记本中的停靠单元格中,因此我可以在不离开Mathematica的情况下判断何时有更新或响应.
我在mathematica中主要是一个Table函数用户.但是我注意到在几个使用Array而不是Table来表示相同结果的例子中,它运行速度明显更快,尤其是随着表的维度变大.
所以我的问题是:当执行速度是主要问题时,何时最适合使用表?
是什么解释了这种差异
我的猜测是因为Arrays假设列表中的项目之间存在功能关系,它会更有效地存储它们,因此使用更少的内存,从而便于存储和后续处理?
它是怎么回事?
我是一个糟糕的人:有时,当没有人在观看时,我会缓存结果而不包括完整的上下文,如下所示:
f[x_]:=f[x]=x+a;
a=2; f[1];
DownValues[f]
Out[2]= {HoldPattern[f[1]]:>3,HoldPattern[f[x_]]:>(f[x]=x+a)}
Run Code Online (Sandbox Code Playgroud)
这会导致可怕的细微错误,更重要的是,当我更改上下文时需要清除缓存.清除缓存的一种方法是完全Clear
符号并重复定义,但这不是一个真正的解决方案.
我真正想要的是一种清除与符号相关的所有无模式DownValues的方法.
为清楚起见,我将把我目前的解决方案作为答案包括在内,但如果两个方面都失败了
Block
抓住DownValues.关于如何改进的任何想法ClearCache
?