问题标签 [wolfram-cdf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2199 浏览

wolfram-mathematica - 从 CDF 播放器中获取数据

在我的怀疑论者工作组中,我在 Mathematica 中编写了一个程序,以测试探矿者评估通过照片向他们展示的人的状态的能力。对于零测量,我以 CDF 形式(新的 v8 可计算文档格式,旨在与CDF-player一起运行)将此文档分发给我的小组成员。在我的计算机上(使用 mma)一切正常,但其他计算机无法导出数据(程序会导出到 Excel 文件)。在阅读细则时,我看到播放器不支持导出。所以我的问题是:

有没有办法从 CDF 播放器中获取数据?

0 投票
1 回答
459 浏览

wolfram-mathematica - 从 webMathematica 提供 CDF

假设我在 Mathematica 中输入以下(编辑过的)代码片段。

我发现 nbTest 和 cdfTest 都是 True。如果我从 webMathematica 中运行相同的命令,nbTest 为 True,但 cdfTest 为 False。你可以在这里看到结果:

http://www.cs.unca.edu:8082/webMathematica/generateCDF.jsp

您可以在此处查看生成该结果的代码:

http://www.cs.unca.edu:8082/webMathematica/generateCDF.jsp.txt

我搜索了 webMathematica 的安全配置以找到一种启用 CDF 导出的方法,但没有找到。有谁知道启用此功能的方法?当然,在这种情况下可能会故意禁用它。

我的目的是提供从通过 HTML 表单访问的 JSP 页面动态生成的 CDF 文档。这应该允许与文本输入相结合的良好 CDF 交互。

编辑:我已经更新了我们服务器上的 Mathematica 版本并更新了上面的代码,以便显示完整的版本字符串。因此,我们可以看到它是 8.0.1 版本。问题仍然存在。

0 投票
1 回答
398 浏览

wolfram-mathematica - CDF 播放器上网配置

CDF播放器的上网配置在哪里?

在 Mathematica 上,如果我告诉它使用与系统相同的配置,它就不起作用。如果我自己编写相同的配置,它就可以工作。

我想在 CDF 播放器上做同样的事情(它说它找不到互联网)。“偏好”在哪里?

谢谢,

0 投票
1 回答
468 浏览

wolfram-mathematica - 关于 Mathematica 图形中闪烁和双缓冲的问题

Mathematica 如何处理图形显示的双缓冲?它是自动完成的吗?

我问的原因是,当我做一些动画时,根据动画速率,我注意到在屏幕上更新图形时烦人的闪烁。当我放慢速度时,我可以减少这个。

我将在下面展示一个简单的示例来说明我的意思,并询问专家是否对如何减少所显示的闪烁有建议。

此示例围绕圆绘制一个点。当动画运行时,您会注意到闪烁。即球的运动不平滑。减慢速率时,闪烁会减少。但是我觉得应该有远离来减少闪烁即使率很高的东西?

在此处输入图像描述

所以我的问题是:事情应该是这样的吗?或者是否有技巧和提示可以使动画更新运行更顺畅(减少闪烁),即使速率未设置为“最佳”,Mathematica 是否在内部使用双缓冲来更新图形?

我在 Windows 7、64 位上使用 V 8.0.1。

谢谢

更新 1 我想我的问题可能没有很好地提出。由于我没有直接使用 Animate,所以不能责怪 Mathematica。我现在正在使用 RunScheduledTask[] 来更新计时器,并且在每个计时器实例中,我在 Graphics 中制作新的绘图。很难用它在这里发布一个小例子,所以在上面,我只是使用了触发器。因此,在这种情况下我不能使用 RefreshRate,因为我现在实际上并没有使用 Trigger。

我正在查看讨论这些更新屏幕问题的不同网页,例如此页面和其他页面,这就是我问的原因。

这是我现在正在制作的 CDF,用于制作双摆动画,您可以看到,如果您将 delta_t 设为大(这是找到 ODE 的数值解的每个间隔之间的时间),动画显示在屏幕有很多闪烁(或您喜欢使用的任何术语),关键是,它不容易在眼睛上看到,并且想找到我可以做些什么来防止这种情况。

这是CDF

您也可以使用鼠标改变钟摆的位置,以查看更多闪烁的效果。

感谢您指出 RefreshRate,但看起来我不能在当前的实现中使用它,因为由于此处描述的问题,我不再使用 Trigger

我想我现在只需要保持 delta_t 很小。

更新 2

这是我用来更新图形的代码部分

上面的“更新”是由 scheduleTask 在我控制的每个 time_interval 更新的变量。

更新

我想我展示了一个我看到的小程序,它也在 Java 中为双摆设置动画,我认为它的闪烁比我做的要少得多,即使我以大致相同的速度运行我的程序也是如此。这是链接 http://www.myphysicslab.com/dbl_pendulum.html

所以,我想我还有很多工作要做。我需要找到一种方法来减少这种闪烁效果。

0 投票
3 回答
517 浏览

wolfram-mathematica - 如何在不使用 Manipulate 结构的情况下“保存定义”?

我正在制作一个 CDF 文档,其中我将动态片段放在文本中间。该文档应该在播放器中工作。

注册应该从分散在不同单元格周围的所有动态部分访问的 glogal 值的最佳方法是什么?

例如,我想定义 g=9.8,并且我希望放置在不同单元格中的所有动态都可以访问此值。因为这应该对播放器起作用,所以这个值应该在 Mathematica 的会话中保持不变。

我只能想到两种不同的方式:

  • 用户在打开文件时必须单击的操作按钮,该按钮启动所有需要的 = 和 := 在笔记本周围使用
  • 创建一个空操作,使用 SaveDefinitions->True,其变量未本地化到 Manipulate

两者似乎都太做作了。

使用任何其他仅在显示后设置定义的方法都不好,因为接受显示动态的人可能已经向下滚动,并通过实现所有需要的定义的动态。

那么,如何在不使用 Manipulate 结构的情况下“保存定义”呢?

0 投票
1 回答
594 浏览

wolfram-mathematica - 在 CDF Player 输入字段中按 ENTER 会复制行。如何改变行为?

我创建了一个 CDF,在文本中间有一些 InputFields,供读者输入自己的值。

在 CDF 播放器 (8.0.3) 上一切正常,除非用户在更改字段内的值后按 ENTER 而不是:“Return”或“Tab”或“鼠标选择其他字段”。

如果他按下 ENTER,CDF 播放器会执行与 Mathematica 完全相同的操作:行复制,最终在中间显示一些内部单元结构。

所有 Mathematica 用户都可以轻松避免按 ENTER,但 CDF Player 用户很可能不知道这种 ENTER/RETURN 对偶性。

我已经尝试了我能记住的所有笔记本选项:已部署、可编辑等,但没有成功,

我记得的另一件事是使用 NotebookEventAction 删除 ENTER 操作,但找不到如何操作:{"KeyDown", "Enter"}->Null ??? ; 尝试了 Enter、EnterKey、[EnterKey] 等,但没有成功。

有人可以帮我从 CDF 付款人中删除这个 Enter 副作用吗?

0 投票
1 回答
1126 浏览

wolfram-mathematica - 在 Manipulate 外部快速绘制的代码,但在 Manipulate 内部绘制缓慢的代码。帮助找出原因

给出的代码使用直接使用 Dynamics 的快速算法绘制 ODE 解决方案的结果,我发现它在屏幕上非常快地绘制解决方案。

我将此算法集成到 Manipulate[] 中,并注意到绘图部分现在比以前慢得多。

我在这上面花了 4 个小时,但不明白为什么会这样。我希望有人能发现问题以及问题所在。

该算法是 Leonid 今天刚刚在他对我的另一个问题的回答中发布的算法再次感谢 Leonid!)

该算法非常快,并且也可以快速渲染绘图。但它直接使用动态。我想在 Manipulate 中使用它。

我确实将它集成到 Manipulate 中,尽我所知,因为代码对我来说是先进的,我不确定我是否做得对,但结果是正确的。

该绘图确实有效并生成了正确的绘图,与原始算法一样,但现在绘图速度现在要慢得多。两种情况下的所有参数都相同(即问题参数)。这是我长期以来一直在努力解决的问题。使用 Manipulate 时如何加快 fps。

所以,问题可能在于我将它集成到 Manipulate 中运行,我做了一些效率不高的事情,或者可能是因为 Manipulate 已经使用了 DynamicModule[] 并且这对使绘图渲染更慢或整个过程更慢有副作用。

我将发布我的 Manipulate 代码,我在其中集成了 Leonid 代码(我尝试了许多不同的方法,但它们都绘制得很慢,这是下面的一个版本)。

这是原始代码,与 Leonid在此处发布的完全相同,但我在顶部添加了 2 个参数,因此两个版本将运行完全相同的参数以更轻松地比较速度。当你运行它时,你会注意到,与上面相比,屏幕上的绘图生成速度有多快。

我想帮助找出速度差异的原因。我现在假设绘图的速度差异是由于 Manipulate 内部的 Dyanmics 交互,因为我知道算法在外面非常快。

在此处输入图像描述

再次感谢任何提示或尝试的事情。

更新

好的,这变得有趣了。我从来不知道只使用 Dynamics 就可以制作 CDF,我认为必须使用 Manipulate。但是我错了。我刚试过一个,它确实有效! 这是在我的网站上,阻尼驱动摆的模拟(由于关节上存在驱动力而表现出混沌运动),仅使用 Dynamics 编写,没有 Manipulate。

上述代码如下:

在此处输入图像描述

这是我第一个使用直接动态的 CDF。如果你想看看更新屏幕的性能差异,这里是上面的一个版本,使用 Manipulate。在这种情况下,我没有注意到太大的区别,但请注意这是在绘制钟摆位置,不需要缓冲,也不需要数据处理。简单地逐点绘制鲍勃位置。

我认为现在可以仅从 Dynamics 制作 CDF 非常有趣。

0 投票
2 回答
1484 浏览

wolfram-mathematica - 关于在函数之间传递数据的简单问题

一个简单的问题,但我只是为了确保我没有忽略一个明显的解决方案,它可以更有效。

如果一个人有很大的数据缓冲区,比如说非常大的列表,需要更新,并且想将它传递给一个函数以在函数内部进行更新,如

并且由于我不能使用按引用传递(在 CDF 中,不能将函数的属性更改为任何东西,例如 HoldFirst),所以我被迫在函数本身内按顺序制作列表的副本更新它,并返回副本。

我的问题是,除了使用不好的“全局变量”之外,还有更有效的方法吗?

附言。大约一年前,我通过引用询问了副本,这是 我的 Mathgroup 问题的链接。(顺便说一句,感谢 Leonid 的回答,这是有用的答案)。

但是我在这里的问题有点不同,因为现在我不能使用 HoldFirst,是否还有其他我没有看到的替代方法来避免这种额外的数据复制,当大小变得太大时,它似乎会减慢程序的速度大的。

(不能使用 SetAttributes 及其朋友,CDF 中不允许)。

我将首先展示基本示例,然后展示如果我可以使用 HoldFirst,我会怎么做。

例子

如果我可以使用 HoldFirst,我会写

效率更高,因为没有复制。通过参考。

我可以使用全局变量,如

但这当然是糟糕的编程,即使它非常快。

由于我有大型数据缓冲区,并且我想模块化我的 Mathematica 代码,我需要创建将大数据传递给它以进行处理的函数,但同时又想保持它“高效”。

可以看到任何其他选项来做到这一点?

抱歉,如果之前在这里问过这个问题,很难搜索到。

谢谢,

加法1

使用 Unevaluated 很容易使用,但我不再能够使用我必须确保列表正在传递的类型检查。例如

现在调用不会“绑定”到定义,因为“a”现在没有标题列表。

因此,我失去了代码中的一些稳健性。但是在 CDF 中使用 Unevaluated 确实有效,并且更改代码以使用它很容易。我只需要删除我在那里的那些额外的“类型检查”以使其工作。

0 投票
5 回答
8446 浏览

wolfram-mathematica - 我们可以在 PowerPoint 或 Keynote 中展示一些 Dynamics/CDF 吗?

我想在演示文稿中展示一些动态内容。但是,我不确定我是否有时间在星期四之前以我希望在 Mathematica 中使用的方式制作幻灯片。

是否可以在 Powerpoint (Microsoft) 或 Keynote (Apple) 演示文稿中在 Mathematica 中构建动态对象?

0 投票
2 回答
489 浏览

ipad - iPad 上的 CDF?

我的数学教授希望能够在 iPad 上生成交互式图形(即您可以使用 CDF 生成的图形)。用户应该能够有效地使用 iPad 上的 CDF 播放器在计算机上执行他们可以执行的所有操作,使用 Web 浏览器可以执行的任何操作。我在想一些类似于画布元素的东西,但是有人知道是否有 iPad 的本地客户端吗?如果没有,有没有办法将 Mathematica 图形代码编译成 Safari 或 Chrome 可以理解的东西?

谢谢!