小编Arn*_*ing的帖子

我怎样才能找到带有Mathematica的Waldo?

周末这让我很烦恼:什么是解决那些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是收银台):

Mathematica图形

wolfram-mathematica image-processing

1538
推荐指数
5
解决办法
25万
查看次数

在Mathematica中快速实现Position2D

我正在寻找以下快速实现,我会称之为Position2D缺乏一个更好的术语:

Position2D[ matrix, sub_matrix ]
Run Code Online (Sandbox Code Playgroud)

它找到sub_matrix内部的位置matrix并返回匹配的左上角和右下角/列.

例如,这个:

Position2D[{
 {0, 1, 2, 3},
 {1, 2, 3, 4},
 {2, 3, 4, 5},
 {3, 4, 5, 6}
}, {
 {2, 3},
 {3, 4}
}]
Run Code Online (Sandbox Code Playgroud)

应该归还:

{
 {{1, 3}, {2, 4}},
 {{2, 2}, {3, 3}},
 {{3, 1}, {4, 2}} 
}
Run Code Online (Sandbox Code Playgroud)

它应该足够快,可以快速处理3000x2000具有100x100子矩阵的矩阵.为简单起见,仅考虑整数矩阵就足够了.

wolfram-mathematica

20
推荐指数
4
解决办法
1490
查看次数

在Mathematica中找到(重复)列表的周期的最佳方法是什么?

在重复列表中查找句点的最佳方法是什么?

例如:

a = {4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2}
Run Code Online (Sandbox Code Playgroud)

重复{4, 5, 1, 2, 3}与余数{4, 5, 1, 2}匹配,但不完整.

该算法应该足够快以处理更长的情况,如下所示:

b = RandomInteger[10000, {100}];
a = Join[b, b, b, b, Take[b, 27]]
Run Code Online (Sandbox Code Playgroud)

$Failed如果没有如上所述的重复模式,则算法应该返回.

algorithm wolfram-mathematica

19
推荐指数
3
解决办法
2263
查看次数

Mathematica中的地板总和问题

我正在使用Mathematica 8.当我尝试命令时

Sum[r^n Floor[n/2], {n, 0, Infinity}]
Run Code Online (Sandbox Code Playgroud)

我明白了

r^2/((-1 + r)^2 (1 + r)) 
Run Code Online (Sandbox Code Playgroud)

这是正确的,但从而1不是0:

Sum[r^n Floor[n/2], {n, 1, Infinity}]
Run Code Online (Sandbox Code Playgroud)

r/((-1 + r)^2 (1 + r))
Run Code Online (Sandbox Code Playgroud)

不是.这是怎么回事?

wolfram-mathematica

14
推荐指数
1
解决办法
430
查看次数

比Get ["raggedmatrix.mx"]更快的巨大数据导入?

任何人都可以建议从60个.mx文件列表中导入几个GB数字数据(以.mx格式),每个文件大约650 MByte?

- 太大而不能在这里发布 - 研究问题涉及简单的统计操作,其数据量是GB的两倍(大约34),而不是RAM(16).为了处理数据大小问题,我只是将事情拆分并使用Get/Clear策略进行数学计算.

它确实有效,但是调用Get["bigfile.mx"]需要相当长的时间,因此我想知道使用BLOB或者PostgreSQL或MySQL的任何内容,或者人们使用什么数据库来获取数字数据GB都会更快.

所以我的问题是:在Mathematica中处理真正大型数据集导入的最有效方法什么?

我还没有尝试过,但我认为DataBaseLink的SQLImport会慢于Get["bigfile.mx"].

谁有经验可以分享?

(对不起,如果这不是一个非常具体的编程问题,但它真的可以帮助我继续进行耗时的发现 - 找出最好的137种可能性 - 解决 - 一,问题的-数学).

wolfram-mathematica

10
推荐指数
1
解决办法
3362
查看次数

如何在mathematica中以矩阵的形式跟踪路径

我有一个矩阵,即一个非参差不齐的列表列表,并给出一个坐标列表,例如以{{0,0},{1,1},{2,2},...{5,5}}我的形式,我想跟踪该矩阵中的路径并以图形方式显示结果.路径的彩色带很好.

请帮我在Mathematica中编写这样的函数.非常感谢!

wolfram-mathematica

8
推荐指数
3
解决办法
468
查看次数

使用鼠标旋转图像时,如何强制Plot在3D中使用特定的ImageSize

(Mathematica版本:8.0.4,在Windows 7上)

有人可以提醒我如何告诉M在以下情况下不要更改ImageSize:

我有一个Manipulate,我制作一个网格,在网格内部,我要么显示一个图,要么显示2个图,具体取决于控件的选择.

为了保持整体显示的图像相同,如果我显示一个图我使用一个尺寸,如果我显示2个图,我使用每个图的一半长度.到目前为止很容易.

奇怪的是,当我使用鼠标旋转一个绘图案例,然后切换回2个绘图时,绘图大小现在不使用我指定的ImageSize.

似乎通过使用鼠标旋转一个绘图,它影响了同一屏幕位置上显示的下一个绘图.

使用SphericalRegion -> True与否,没有效果.使用RotationAction -> "Fit"没有效果.

这是我的意思的一个小例子,然后我展示了我目前如何解决这个问题.但我通过使用GraphicsGrid代替Grid来解决它.如果可能的话,我想继续使用Grid.

Manipulate[
 Module[{opt = {Spacings -> {0, 0}, Frame -> All}, p,
   size, data = Table[RandomReal[], {10}, {10}], wid = 300, len = 300},

  size = If[choice == 1, {wid, len}, {wid, len/2}];
  Print[size];
  p = ListPlot3D[data,SphericalRegion->True,ImagePadding -> 10,ImageSize ->size];

  If[choice == 1,
   Grid[{{p}}, Sequence@opt], Grid[{{p}, {p}}, Sequence@opt]
   ]
  ],

 Row[{SetterBar[Dynamic[choice], {1, 2}]}],
 {{choice, 2}, None}
 ]
Run Code Online (Sandbox Code Playgroud)

要重现这个问题,很简单:首先我要注意尺寸,这就是我想保留它的方式.现在我点击选项1,现在使用鼠标旋转一个图.现在我点击选择2返回,然后我看到情节大小不是我预期的.

在此输入图像描述

我确信这是我需要使用的选项.还没找到它.

PS.实际上似乎发生的是,旋转的SAME图,停留在内容区域,并用于代替第二种情况下的2个图中的一个.很奇怪.我必须在某个地方做些傻事,因为这太奇怪了.

更新2:48 am …

wolfram-mathematica

6
推荐指数
1
解决办法
861
查看次数

如何从mathematica输出中删除Log [e]?

我的mathematica输出是

-0.751988 - 0.0708732 Log[e] - 0.0140273 Log[e]^2
Run Code Online (Sandbox Code Playgroud)

但是我希望mathematica为我计算这个表达式,即设置Log [e] = 1并对术语求和.我如何指示它这样做.我假设它必须将功能视为复杂的??

问候

wolfram-mathematica

4
推荐指数
1
解决办法
2617
查看次数

Mathematica:FindRoot错误

FindRoot[
 27215. - 7.27596*10^-12 x + 52300. x^2 - 9977.4 Log[1. - 1. x] == 0
 , 
 {x, 0.000001}
]
Run Code Online (Sandbox Code Playgroud)

收敛到解决方案{x -> -0.0918521}但是如何让Mathematica在解决方案之前避免以下错误消息:

FindRoot::nlnum: The function value {Indeterminate} is not a list of numbers with dimensions {1} at {x} = {1.}. >>
Run Code Online (Sandbox Code Playgroud)

我正在使用FindRoot来解决一些非常混乱的表达式.我有时也收到以下错误,虽然Mathematica仍然会产生答案,但我想知道是否有办法避免它:

FindRoot::lstol: The line search decreased the step size to within tolerance specified by AccuracyGoal and PrecisionGoal but was unable to find a sufficient decrease in the merit function. You may need more than MachinePrecision digits …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica equation-solving

3
推荐指数
1
解决办法
1万
查看次数

放入以变量命名的文件名

Put (>>)用来存储我在Mathematica中获得的信息.问题是我提出了几个变量.但是,如果我执行以下操作,它会输出到一个名为year而不是我的变量的文件.

例如:

year=64;
sortedTally>>year;
Run Code Online (Sandbox Code Playgroud)

这将导出到名为file的文件year而不是名为的文件64.文档说明expr >> filename等同于expr >> "filename".有没有办法绕过这个并放入一个基于变量更改的文件名?在操作员输入表单(底部)的文档文件中也类似地重申了这一点.

wolfram-mathematica

3
推荐指数
1
解决办法
608
查看次数

如何在使用DeleteCases时删除额外的{}

(Mathematica版本:8.0.4)

特定

lst = {{{{1, 2}, 3}, {{4, 5}, 6}}, {{{7, 8, 9, 10, 11}, 13}}};
lst2 = DeleteCases[lst, {x_, y_} /; y > 6, {2}]
Run Code Online (Sandbox Code Playgroud)

{{{{1, 2}, 3}, {{4, 5}, 6}}, {}}
Run Code Online (Sandbox Code Playgroud)

注意最后的额外空{}.

我找不到使用相同命令删除它的方法DeleteCases(我认为这是用于此的正确命令),所以我不得不在结果上再次应用它

lst2 = DeleteCases[lst2, {}]

{{{{1, 2}, 3}, {{4, 5}, 6}}}
Run Code Online (Sandbox Code Playgroud)

问题:在一个命令中是否有一个技巧可以{}在结果中没有得到空?所以这个命令是自包含的所有情况?

更新1

回应下面的Lou建议,增加一个额外的 { }

这是一个我得到不同结果的例子:

lst={{{{1, 2}, 3}, {{4, 5}, 6}}, {{{7, 8, 9, 10, 11}, 13}}}
Run Code Online (Sandbox Code Playgroud)

现在使用{}通过额外应用程序删除空的方法DeleteCases,我们得到

lst2 = DeleteCases[lst, …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

2
推荐指数
2
解决办法
926
查看次数

Mathematica如何使用1个变量绘制矢量场?

我无法弄清楚如何用一个变量绘制一个矢量场.也许Mathematica不支持这一点.例如:

 r(t) = cost j + sint i
Run Code Online (Sandbox Code Playgroud)

与...一样

 <cost, sint>
Run Code Online (Sandbox Code Playgroud)

这不起作用:

VectorPlot[{cos t, sin t}, {t, 0, 2 Pi}] 
Run Code Online (Sandbox Code Playgroud)

作为奖励如何获取向量的导数?

plot wolfram-mathematica vector

2
推荐指数
1
解决办法
2962
查看次数