小编pha*_*234的帖子

在Mathematica中运行外部命令时非常奇怪的行为

为什么

Import["!python --version", "Text"]
Run Code Online (Sandbox Code Playgroud)

在命令行上工作但不在Mathematica 8(在Mac上运行)的前端工作?

贝壳:

"Python 2.7.1 -- EPD 7.0-2 (64-bit)"
Run Code Online (Sandbox Code Playgroud)

前端:

""
Run Code Online (Sandbox Code Playgroud)

更新:

好的,路径不是(真的)问题,因为

Import["!which python", "Text"]
Run Code Online (Sandbox Code Playgroud)

产量

"/usr/bin/python"
Run Code Online (Sandbox Code Playgroud)

在前端和

"/Library/Frameworks/EPD64.framework/Versions/Current/bin/python"
Run Code Online (Sandbox Code Playgroud)

在shell中(这是我在我的系统上安装的不同的python版本).尽管如此

Import["!/usr/bin/python --version", "Text"]
Run Code Online (Sandbox Code Playgroud)

也不

Import[
"!/Library/Frameworks/EPD64.framework/Versions/Current/bin/python --version",
"Text"]
Run Code Online (Sandbox Code Playgroud)

在前端产生正确的输出.但是在前端和终端版本中使用不同的shell可能会暗示为什么Mathematica行为不端.

wolfram-mathematica

8
推荐指数
1
解决办法
725
查看次数

简单的文本输入字段接受换行符

是否有一种简单的方法可以让它发挥作用?

text = "";
DialogInput[{TextCell["Try to type a text with linebreaks :-)"],
  InputField[Dynamic[text], String], 
  Button["Ok", DialogReturn[text]]}]
Run Code Online (Sandbox Code Playgroud)

问题是InputField在输入后终止Return.我只想要一个简单的文本输入字段.

user-interface wolfram-mathematica

8
推荐指数
1
解决办法
689
查看次数

如何全局关闭阴影消息(符号:: shdw)?还是其他任何"良好做法"的建议?

我有以下情况:

On[t::shdw]

Message[t::shdw,"t","Foobar","Dork"]
-> t::shdw: Symbol t appears in multiple contexts Foobar; definitions in context Dork may shadow or be shadowed by other definitions. >>

Off[t::shdw]
Message[t::shdw,"t","Foobar","Dork"]
-> **No Warning**

<<MASStoolbox`
-> t::shdw: Symbol t appears in multiple contexts {MASStoolbox`MASS`,Global`}; definitions in context MASStoolbox`MASS` may shadow or be shadowed by other definitions. >>
Run Code Online (Sandbox Code Playgroud)

怎么可能?是否OnOff加载软件包时只影响当前笔记本电脑并没有任何影响?如果是这样,怎么能摆脱像这样的消息呢?如何处理阴影错误?

wolfram-mathematica

5
推荐指数
1
解决办法
872
查看次数

禁止ReplaceAll替换(/.)

从Mathematica自己的文档:

{g[1],Hold[g[1]]}/.g[n_]:>n+1
Run Code Online (Sandbox Code Playgroud)

导致

{2, Hold[1 + 1]}
Run Code Online (Sandbox Code Playgroud)

我的问题:有没有办法保护子表达式不被ReplaceAll取代?我使用复合构造作为变量,如

v[a, b]
Run Code Online (Sandbox Code Playgroud)

并希望能够做这样的事情

v[a, b] + a - b /. {a -> x, b -> y}
Run Code Online (Sandbox Code Playgroud)

导致

v[a, b] + x - y
Run Code Online (Sandbox Code Playgroud)

并不是

v[x, y] + x - y
Run Code Online (Sandbox Code Playgroud)

没有复杂的模式.不幸的是,使用替换和级别规范不是选项.

这个成语

v[a, b] + a - b /. {catch_v -> catch, a -> x, b -> y}
Run Code Online (Sandbox Code Playgroud)

因为'catch_v - > catch'禁止后续规则应用于v.但是我宁愿禁止在表达层面上替换(使用某种Hold或HoldForm表达式).这可能吗?

wolfram-mathematica

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

重载集[a,b](a = b)

我想重载Mathematica的Set函数(=),这对我来说太棘手了(参见下面的代码示例).我成功地重载了其他函数(例如代码示例中的Reverse).有什么建议?

In[17]:= ClearAll[struct];

In[18]:= var1=struct[{1,2}]
Out[18]= struct[{1,2}]

In[19]:= Reverse@var1
Out[19]= struct[{1,2}]

In[20]:= Head[var1]
Out[20]= struct

In[21]:= struct/:Reverse[stuff_struct]:=struct[Reverse@stuff[[1]]]

In[22]:= Reverse@var1
Out[22]= struct[{2,1}]

In[23]:= struct/:Set[stuff_struct,rhs_]:=Set[struct[[1]],rhs]

In[24]:= var1="Success!"
Out[24]= Success!

In[25]:= var1
Out[25]= Success!

In[26]:= Head[var1]
Out[26]= String

In[27]:= ??struct
Global`struct
Reverse[stuff_struct]^:=struct[Reverse[stuff[[1]]]]

(stuff_struct=rhs_)^:=struct[[1]]=rhs
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

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

操纵语句中的表达式评估

我在Manipulate使用分配给应该在Manipulate语句中评估的变量的代码时遇到了问题.这是怎么回事......

test1={a,b,c};
Manipulate[test1,{a,0,10,.1},{b,0,10,.1},{c,0,10,.1}]
Run Code Online (Sandbox Code Playgroud)

操纵输出1

所以{a, b, c}没有更新.好吧,无论如何,让我们强制执行test1的评估

Manipulate[Evaluate[test1],{a,0,10,.1},{b,0,10,.1},{c,0,10,.1}]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在它有效.但是如果我想绘制操纵元素的列表,就像这样

Manipulate[ListPlot[Evaluate[test1]],{a,0,10,.1},{b,0,10,.1},{c,0,10,.1}]
Manipulate[Evaluate[ListPlot[test1]],{a,0,10,.1},{b,0,10,.1},{c,0,10,.1}]
Run Code Online (Sandbox Code Playgroud)

我结束了

在此输入图像描述

两个追逐.

我知道在Mathematica的文档中"评估Dynamic或Manipulate中的表达式",但我很确定它不能解决我的问题.

wolfram-mathematica

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