从CDF Player中获取数据

6
我为我的怀疑主义者工作组编写了一个Mathematica程序,用于测试水手通过照片评估人员状态的能力。为了进行空测量,我以CDF形式(新的v8可计算文档格式,旨在与CDF-player一起运行)将此文档分发给我的小组成员。在我的电脑上(使用mma),一切都很好,但其他人无法导出数据(程序将数据导出到Excel文件中)。阅读fine print后,我发现播放器不支持导出。所以我的问题是:有没有办法从CDF-player中获取数据?

4
如果有人在这里发布了,我怀疑它会在下一个版本中消失。 - Mr.Wizard
2
@Mr.Wizard 8^( 我们这样做是为了人类的福利。请放过我的数据! - Sjoerd C. de Vries
1
John Fultz(沃尔夫勒姆研究公司)在官方新闻组的最近帖子中写道:“顺便提一下,有可能创建具有能力的CDF文件,可以在Player中运行时使用Export(),saving等创建内容。 但是,该功能无法直接从Mathematica内部解锁,稍后将对此进行更多说明。” - Alexey Popkov
3个回答

7
由于某些原因,数学/CDF播放器在输入和输出方面都受到严格限制。
但是,Print可以使用,您可以使用TableForm进行打印 - 它会生成TSV格式 - 然后将其复制/粘贴到Gnumeric中(为什么要使用Excel?!)。
我在Gnumeric和OpenOffice中进行了测试,效果很好。
将以下代码放入CDF文档中进行测试。
Button["Press me!", Print[TableForm[RandomReal[{0, 1}, {10, 10}]]]]

请注意,您无法编辑输入,但您可以按下按钮并复制输出。怀疑论者组通常是技术能力相当强的人,这应该是可行的解决方案...

@Simon +1 我目前没有安装CDF播放器。你尝试过在MMA或播放器中运行吗? - Sjoerd C. de Vries
我将代码放入Mma8笔记本中,保存为.cdf文件,并加载到CDF播放器中。打印按钮正常工作。(请注意屏幕截图顶部的CDF播放器栏) - Simon
顺便说一句:Gnumeric与Excel的2003年报告。摘要的结尾写着“希望使用电子表格软件进行统计分析的人们被建议使用Gnumeric而不是Excel。”该网站还对Mma7进行了评价。 - Simon
2
@belisarius 哈哈。看看 skeptics stackexchange,试着在那里发帖而不提供参考资料。 - Sjoerd C. de Vries
2
@belisarius:证据明确。@Sjoerd是他的怀疑者小组成员并发布了这个问题。将他的专业水平推广到整个小组,因此证毕。 - Simon
显示剩余2条评论

6
我想我可以将我的数据编码到一张图片中,然后让组员从CDF文档中复制并通过电子邮件发送给我。它看起来像这样:

enter image description here

顶部行定义了数据插槽,底部行包含以颜色编码的数据。然而,我发现Outlook会压缩放置在电子邮件正文中的图片,因此您会得到略微模糊的图片,从而导致数据损坏。下一步是使用更强大的代码,如QR条形码。幸运的是,自上周以来,Wolfram|Alpha能够生成QR条形码,就像这样:
WolframAlpha[
 "QRcode:\"" <> ToString[N[Pi, 100]] <> "\"", {{"QRCodeBarcode", 1}, 
  "Content"}]

enter image description here

我已经下载并安装了CDF播放器,它在一个CDF文档中似乎也可以工作,但是我不得不再次生成QR码,才能正确处理互联网连接。不知道这是否是一个偶然的结果。


在没有安装Mma的机器上,Alpha的调用工作吗?这似乎很奇怪,因为它需要一个Mma许可证... - Dr. belisarius
@belisarius,恐怕我没有没有 MMA 的机器;-) 你有吗? - Sjoerd C. de Vries
@Sjoerd - 很好的发现!我实际上正要请求这个功能。 - telefunkenvf14
@telefunken 这个命令中有更多的参数可以设置,而不仅仅是这里显示的。您还可以包括纠错级别:WolframAlpha["QR code \"test\"", {{"QRCodeBarcode", 1}, "Content"}, PodStates -> {"QRCodeBarcode__Level H error correction"}]。这里可以选择L、M、Q和H级别。 - Sjoerd C. de Vries
@Sjoerd 真是太棒了,这个功能我之前居然没发现过。问题:你有没有尝试过将 QR 图像文件反馈给 W|A?(也就是说,W|A 是否也能解码 QR 码?) - telefunkenvf14
@telefunkenvf14 我不认为WA可以做到这一点。我使用了一个iPhone应用程序。你也可以尝试几个在线QR码阅读器。 - Sjoerd C. de Vries

2

在版本7中,有Mathematica Player和Mathematica Player Pro。Player是免费的,但没有导出能力。Player Pro需要付费,但可以进行导出。据http://www.wolfram.com/cdf-player/所述,CDF播放器是Player的后代,我还不知道与Player Pro相当的CDF版本是否已发布。您是否尝试联系技术支持?


+1,但唯一的问题是我看不到 Skeptics 组中的人为像这样的小东西支付类似 PlayerPro 的费用... - Simon
@Simon 我同意。我在 MMA 中编写它,因为我已经有了数据,并且可以快速而不费力地完成它。如果要花钱,我们最好寻找其他解决方案。 - Sjoerd C. de Vries
@Sjoerd:我完全理解。如果您不需要图形界面,也许可以尝试Mma8中的新C代码生成...或者将整个内容放到公共Sage笔记本上。(这很好,不必遵守mathgroup的严格审查规则...) - Simon
@Simon,据我所知,这个代码生成工具不包括图形、用户界面元素和“Dynamic”等内容,是吗? - Sjoerd C. de Vries
1
@Sjoerd,代码生成仅包括数学函数和编程结构。很容易找出一个函数是否被Compile支持。您应该在v8中使用CompiledFunctionTools`包中的CompilePrint。该包已经包含在内。In[3]:= Needs["CompiledFunctionTools`"]In[9]:= StringSplit[ Compile[{{mat, _Real, 2}}, Inverse[mat]] // CompilePrint, EndOfLine][[-3 ;; -1]]Out[9]= {" 1 T(R2)1 = MainEvaluate[ Hold[Inverse][ T(R2)0]]", " 2 Return", " "} 输出中的MainEvaluate表示Compile将回调到Mathematica。 - Sasha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接