我正在制作10 ^ 6到10 ^ 7实数的平面列表,其中一些正在重复.
我需要删除重复的实例,只保留第一次出现,而不修改列表顺序.
这里的关键是效率,因为我有很多要处理的清单.
示例(假):
输入:
{.8, .3 , .8, .5, .3, .6}
Run Code Online (Sandbox Code Playgroud)
期望的输出
{.8, .3, .5, .6}
Run Code Online (Sandbox Code Playgroud)
除了注意
用Union删除重复元素(不保留顺序)给我的穷人的笔记本电脑:
DiscretePlot[a = RandomReal[10, i]; First@Timing@Union@a, {i, 10^6 Range@10}]
Run Code Online (Sandbox Code Playgroud)
由于我从未发现(或者我从来没有找到足够的)一篇关于如何管理init.m文件的好文章,我最终开发了自己的"标准",但我想知道我做得多么糟糕.
例如,我通常的init.m存储在C:\Documents and Settings\All Users\Application Data\Mathematica\Kernel\init.m
(Windows)中,我使用文本编辑器对其进行编辑.
由于我不希望定义进入全局上下文,因此内容类似于:
(** User Mathematica initialization file **)
Begin["MyInitContext`"];
Cl:=Clear["Global`*"];
(* Other definitions in this Context *)
End[]; (* End Context *)
$ContextPath = Prepend[$ContextPath,"MyInitContext`"];
Run Code Online (Sandbox Code Playgroud)
我不从init.m加载包,因为我想要严格控制我加载的内容,所以我只在这里定义我每天使用的实用程序函数的快捷方式和一些选项.
那么:有没有提到良好做法?更好的方法来实现这种行为?有什么警告吗?
试图找到有助于我们通过一系列点画3D线的功能.
对于我们知道的每个点:日期和时间,纬度,经度,海拔高度,速度和标题.数据可能每10秒记录一次,我们希望能够猜测两者之间的点数并将粒度增加到1秒.从而在3D空间中创建虚拟飞行路径.
我已经发现了许多曲线拟合算法,这些算法将通过一系列点逼近一条直线,但它们不能保证这些点相交.它们也没有考虑速度和航向来确定物体到达下一个点所采用的最可能路径.
我发现Wolfram Workbench是Mathematica开发的一个很好的环境.
但是,当我在Mathematica中编程时,我需要经常浏览帮助系统.
Workbench提供了一个工具提示工具,它显示了Mma函数的基本帮助(只是用法消息),并不足以满足我的常规需求.
那么:有没有办法从Workbench内部启动并导航整个Mma帮助系统?
也欢迎替代解决方案.在笔记本中重新输入功能名称并按F1不是:)
作为合成噪声生成算法的一部分,我必须在运行中构建许多大的非奇异平方矩阵
一个I,J(I,J:1..N)/∀(I,J)一个I,J ∈ℤ和0≤一个I,J ≤k和挪威并[a]≠0
但是a i,j在[0,k]中均匀分布后也应该是随机的.
在目前的化身中,问题是n≅300,k≅100.
在Mathematica中,我可以非常快地生成随机元素矩阵,但问题是我还必须检查奇点.我目前正在使用Determinant值.
问题是这个检查,对于300x300矩阵需要2秒左右的时间,我负担不起.
当然,我可以通过选择随机的第一行然后构造连续的正交行来构造行,但我不确定如何保证这些行的元素遵循[0,k]中的均匀分布.
我正在寻找Mathematica的解决方案,但也欢迎使用更快的生成矩阵的算法.
NB> U [0,k]条件意味着采用一组矩阵,整个集合中的每个位置(i,j)应遵循均匀分布.
我正在尝试基于像素值分离greylevel图像:假设一个bin中的0到60的像素,另一个bin中的60-120,120-180 ......等等到255.范围大致等于此案件.但是,通过使用K-means聚类,可以更准确地衡量我的像素值范围应该是多少?试图获得相似的像素,而不是浪费在存在较低像素浓度的区域.
编辑(包括获得的结果):
k-表示没有簇= 5
我想在可见的Mesh交叉点绘制点,如下所示:
Plot3D[Sin[x + y^2], {x, -3, 3}, {y, -2, 2}, Mesh -> {1, 4}, Boxed -> False]
Run Code Online (Sandbox Code Playgroud)
期望的输出:
我可以根据PlotRange和Mesh基数来计算Mesh的位置,并在那里绘制点,但我认为应该有一种更简单的替代方法.
一个很大的优点是能够根据功能值选择点颜色.此外,标记点将是美好的.
有任何想法吗?
Mathematica命令的输出
ListPointPlot3D[
Join @@ Table[{x, y, 0}, {x, -6, 6, 1}, {y, -6, 6, 1}],
PlotStyle -> PointSize[0.02]]
Run Code Online (Sandbox Code Playgroud)
是下图.
我想用红色为点(0,0)和(1,2)着色.如何为此修改上述命令?
申请Orthogonalize[]
一次:
v1 = PolyhedronData["Dodecahedron", "VertexCoordinates"][[1]];
Graphics3D[Line[{{0, 0, 0}, #}] & /@
Orthogonalize[{a, b, c} /.
FindInstance[{a, b, c}.v1 == 0 && (Chop@a != 0.||Chop@b != 0.||Chop@c != 0.),
{a, b, c}, Reals, 4]], Boxed -> False]
Run Code Online (Sandbox Code Playgroud)
现在两次:
Graphics3D[Line[{{0, 0, 0}, #}] & /@
Orthogonalize@Orthogonalize[{a, b, c} /.
FindInstance[{a, b, c}.v1 == 0 && (Chop@a != 0.||Chop@b != 0.||Chop@c != 0.),
{a, b, c}, Reals, 4]], Boxed -> False]
Run Code Online (Sandbox Code Playgroud)
呃...为什么?
我从来没有在Mma中用过多的声音.
我有
t = Sound[List["Violin",SoundNote[-6]]]
Run Code Online (Sandbox Code Playgroud)
我怎么能导出t
为.WAV文件?
当我尝试显而易见的时候
Export["c:\\test.wav",t]
Run Code Online (Sandbox Code Playgroud)
我明白了
在这个老线程 Szabolcs说,它无法做到.也许自2007年以来情况有所改善!