- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我经常希望看到不在 FullForm
中的 Mathematica 图形对象的内部表示。但更具可读性 InputForm
能够通过双击选择部分代码,并轻松将此代码复制到新输入 Cell
.但默认InputForm
不允许这样做,因为 InputForm
默认显示为 String
,而不是 Mathematica 的代码。有没有办法拥有InputForm
显示为 Mathematica 的代码?
我也经常希望看到这样的缩短版本 InputForm
其中所有长坐标列表都显示为第一个坐标,后跟用 Skeleton
包裹的跳过坐标值的数量。 , 全部为空 Lists
删除,所有数字也被缩短显示不超过 6 位数字。仅对坐标使用 6 位数字会更好,但用于颜色指令(例如 Hue
)会更好。仅显示 2 位有效数字。例如,
Plot[{Sin[x], .5 Sin[2 x]}, {x, 0, 2 \[Pi]},
Filling -> {1 -> {2}}] // ShortInputForm
Graphics[GraphicsComplex[{{1.28228`*^-7, 1.28228*^-7}, <<1133>>},
{{{EdgeForm[], Directive[{Opacity[0.2], Hue[0.67, 0.6, 0.6]}],
GraphicsGroup[{Polygon[{{1133, <<578>>}}]}]},
{EdgeForm[], Directive[{Opacity[0.2], Hue[0.67, 0.6, 0.6]}],
GraphicsGroup[{Polygon[{{432, <<556>>}}]}]}}, {{Hue[0.67, 0.6,
0.6], Line[{1, <<431>>}]}, {Hue[0.91, 0.6, 0.6],
Line[{432, <<701>>}]}}}], {AspectRatio -> GoldenRatio^(-1),
Axes -> True, AxesOrigin -> {0, 0},
Method -> {"AxesInFront" -> True},
PlotRange -> {{0, 2*Pi}, {-1., 1}},
PlotRangeClipping -> True,
PlotRangePadding -> {Scaled[0.02], Scaled[0.02]}}]
-0.9999998592131705
被转换为
-1.
,
1.2822827157509358*^-7
被转换为
1.28228*^-7
,
Hue[0.9060679774997897, 0.6, 0.6]
被转换为
Hue[0.91, 0.6, 0.6]
)。
InputForm
的输出作为 Mathematica 的代码,还有一个
ShortInputForm
函数将给出此代码的缩短版本。有谁能够帮助我?
Plot[{Sin[x], .5 Sin[2 x]}, {x, 0, 2 \[Pi]}, Filling -> {1 -> {2}}] //
InputForm // StandardForm
最佳答案
更新shortInputForm
的最新版本功能可以找到here .
原帖
这是另一个更好的解决方案(与 Mathematica 5 兼容):
myInputForm[expr_] :=
Block[{oldContexts, output, interpretation, skeleton},
output = ToString[expr, InputForm];
oldContexts = {$Context, $ContextPath};
$Context = "myTemp`"; $ContextPath = {$Context};
output = DisplayForm@ToBoxes[ToExpression[output] /.
{myTemp`interpretation -> If[$VersionNumber >= 6,
System`Interpretation, System`First@{#} &],
myTemp`Row -> System`Row,
myTemp`skeleton -> System`Skeleton,
myTemp`sequence :> (System`Sequence @@ # &)}, StandardForm];
{$Context, $ContextPath} = oldContexts; output]
shortInputForm[expr_] := myInputForm[expr /. {{} -> Sequence[],
lst : {x_ /; VectorQ[x, NumberQ], y__} /;
(MatrixQ[lst, NumberQ] && Length[lst] > 3) :>
{x /. v : {a_, b__} /; Length[v] > 3 :>
{a, interpretation[skeleton[Length[{b}]], sequence@{b}]},
interpretation[skeleton[Length[{y}]], sequence@{y}]},
lst : {x_, y__} /; VectorQ[lst, NumberQ] && Length[lst] > 3 :>
{x, interpretation[skeleton[Length[{y}]], sequence@{y}]}}]
Graphics
之类的东西的转换。 ,
Point
及其他
to typeset expressions为了让它们以内部形式显示(作为适合输入的表达式)。令人高兴的是,如果我们这样做,结果
StandardForm
发现输出刚刚格式化(二维)
InputForm
的原始表达。这正是所需要的!
FormatValues
定义为
Symbol
喜欢
Graphics
,
Point
等等。可以得到这样的完整列表
Symbol
s 通过评估以下内容:
list = Symbol /@
Select[DeleteCases[Names["*"], "I" | "Infinity"],
ToExpression[#, InputForm,
Function[symbol, Length[FormatValues@symbol] > 0, HoldAll]] &]
Block
所有这些
Symbol
s(它有效!):
myInputForm[expr_] :=
With[{list = list}, Block[list, RawBoxes@MakeBoxes@expr]]
Symbol
的评价s 并且还评估所有
FormatValues
所有
Symbol
s 在
$ContextPath
.我认为应该避免。
FormatValues
只是为了删除上下文
"System`"
来自
$ContextPath
.但它只有在这些
Symbol
时才有效s 尚未解析到
"System`"
语境。所以我们首先需要将我们的表达式转换为
String
,然后删除
"System`"
来自
$ContextPath
的上下文最后将字符串向后转换为原始表达式。那么全新
Symbol
s 将与当前
$Context
相关联(和
Graphics
、
Point
等 - 同样,因为它们不在
$ContextPath
中)。用于防止上下文阴影冲突和乱扔垃圾
"Global`"
上下文我切换
$Context
至
"myTemp`"
如有必要,可以轻松清除。
myInputForm
作品。
shortInputForm
.这个想法不仅仅是显示
myInputForm
的缩短版本但也保留了选择和复制部分缩短代码到新输入单元格的能力,并使用此代码,因为它是没有缩写的完整代码。在版本 6 及更高版本中,可以使用
Interpretation
实现后者。 .与
Mathematica
的 pre-6 版本兼容我添加了一段代码,如果
$VersionNumber
删除此功能小于 6。
Interpretation
时遇到的唯一问题是它没有
SequenceHold
属性,所以我们不能简单地指定
Sequence
作为
Interpretation
的第二个参数.但是这个问题可以很容易地通过在
List
中包装序列来避免。然后
Apply
ing
Sequence
给它:
System`Sequence @@ # &
Symbol
指定确切的上下文。我使用是因为在调用它们时
"System`"
上下文不在
$ContextPath
中.
关于wolfram-mathematica - 制作自定义输入表单和短输入表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6224185/
我记得 WRI 的某个人在 official newsgroup 中说出于兼容性目的,Mathematica 7 仍然有一个来自 Mathematica 5 的老式 Mathematica 帮助浏览器
除非巫师先生在度假,否则很难击败这种似乎具有无所不在和无所不知的现象。我们如何使用 Mathematica 和 StackOverflow API 超越他? 最佳答案 这是 Sjoerd 解决方案的一
您好,我无法理解以下函数的输出。 ListPointPlot3D[Table[Sin[x^2 + y], {x, 0, 3, 0.15}, {y, 0, 3
我在图形中显示了一组点: alt text http://img69.imageshack.us/img69/874/plc1k1lrqynuyshgrdegvfy.jpg 我想知道是否有任何命令可以
让 S是具有唯一元素的向量,并且 s它的一个子集,也有独特的元素;例如,S={1,2,3,4,5,6}和 s={1,3,4,6} .现在给出另一个向量 c={7,8,9,7} ,如何创建矢量 C=[7
我想知道如果给定多个替换规则,mma 如何确定在发生碰撞时首先应用哪个规则。一个例子是: x^3 + x^2*s + x^3*s^2 + s x /. {x -> 0, x^_?OddQ -> 2}
在mathematica 中(我使用的是 mma 5.0(猜猜很老)),如果我将以下内容作为一行输入: Needs["Graphics`Master`"]; Animate[Plot[Sin[n x]
如果我有一个字母表,假设 sigma = {1,2,3,4,a,b,c,d,e,f,g} 并且想要生成所有长度为 n 的单词,有没有办法做到这一点? 我可以做 Flatten[Outer[Functi
生成参数列表的素数列表的最简单函数是什么?想出这样的函数并不难,比如: foo[n_] := Block[{A = {}, p = 2}, While[p All] 关于wol
在此示例中,将函数定义为“functionB”时,这是一个奇怪的结果。有人可以解释吗?我想绘制functionB[x]和functionB[Sqrt[x]],它们必须不同,但是此代码显示functio
如何在 Mathematica 中对列表进行数值微分而不先将其拟合为数学表达式(即使用 FindFit )? 具体来说,我想在列表中找到最大斜率的点。 我已经考虑使用 Differences并找到最大
我正在寻找 Mathematica 中原子对象的完整列表(其中 AtomQ 产生 True)。 我知道 Symbol String Integer Real Rational Complex Spar
最近发现了一些old post在 MathGroup 上使用未记录的命令行选项 -batchinput和 -batchoutput显示: If test.mma contains the follo
Mathematica 似乎缺少此功能,或者无论如何我都找不到它。 Series function 可以对多个变量进行连续扩展,但它似乎无法进行完整的多元扩展。 有谁知道如何做到这一点? 谢谢 最佳答
我有兴趣运行相同的函数,该函数以并行方式在多核上使用不同的参数值进行一些蒙特卡罗评估。我还想确保整个函数在同一个内核上运行,而函数内的计算不会跨内核分布。例如,假设我有一个函数(故意简化) f[a_,
我怎样才能从 Range[96] 中不重复地获得 48 个随机对的两个不同元素?即 96 个元素只使用一次。 当我尝试将元组/子集与 Select 结合使用时,我觉得必须有一种更直接的方法来实现这一点
我正在评估 Wolfram Mathematica 8 的大学类(class)项目。 我很难定义目标编程模型。 首先是因为我在数学方面真的很匮乏 :) 其次,因为我在 official documen
我开发了一些代码来从 LogNormalDistribution 和 StableDistribution 的乘积生成随机变量: LNStableRV[{\[Alpha]_, \[Beta]_, \[
我有一个想要优化的字符串验证函数。该字符串的长度为 2n,由 0 和 1 组成,例如 str="100001"。我想测试一下: 1) 字符串中奇数索引位置的 1 的数量(必须不少于 1)是否等于偶数索
请考虑: Function[subID, pointSO[subID] = RandomInteger[{1, 4}, {5, 2}]] /@ {"subA", "subB"}; M
我是一名优秀的程序员,十分优秀!