找回密码
 注册
Simdroid-非首页
查看: 116|回复: 4

[编程进阶] 有关manipulate命令使用咨询

[复制链接]
发表于 2012-9-19 23:27:56 | 显示全部楼层 |阅读模式 来自 英国
本帖最后由 qiao_david 于 2012-9-19 23:29 编辑

现利用manipulate命令进行用户界面编程,由于计算过程复杂,涉及到的计算参数可以用dynamic命令建立输入界面进行输入,对于manipulate命令控制的计算,我们知道,只有触动滑块才能进行计算.如果设置了两个滑块,每变动一个滑块程序就会计算一次,如果两个滑块所代表的量想同时变化,那样会同时计算两次,有没有方法控制他们,等两个滑块都变化后,再让其进行计算,这样就可以获得最后的一个结果.另外,是否单独的有个开始计算控制的命令,那样可以实现只改变动态的参数变量,不改变滑块也可以让其进行计算.否则如果只改变参数,不触动滑动,不能进行计算.

谢谢.

附我所编的程序界面;最上面部分为参数输入面板,下面部分为计算选择及结果显示面板.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2012-9-20 12:04:48 | 显示全部楼层 来自 北京
Simdroid开发平台
Manipulate不是有个参数 ContinuousAction 么? 如果设置为False, 那么只有在移动结束后才进行计算, 你试试这个可不可以. 看不到你具体的代码, 你可以把你的问题简化一下, 给出一个简单的等价问题.
回复 不支持

使用道具 举报

 楼主| 发表于 2012-9-20 17:08:43 | 显示全部楼层 来自 英国
本帖最后由 qiao_david 于 2012-9-20 17:10 编辑

呵呵,不是这个意思,ContinuousAction为单个滑块移动过程中不连续计算,只针对一个滑块的.我的意思,当有几个滑块,我想等把有的滑块所代表的值都改完了,再最终进行计算.另外,是通过输入面板中的dynamic函数改变参数后,利用Manipulate只能触动滑块值才能开始计算.我意思只改变参数后,滑块值不改变也能计算.

现在已解决. 就是定义一个提示未进行计算函数,只要在这个函数下,就会返回未开如计算.然后随便改动其它的参数或滑块,不会触及主函数计算,然后全部修改完后,再点相应的函数按钮,可以最后计算.这样可以解决程序一打开计算,提示enable dynamic后就要自动计算,有时在还没有改变参数之前的计算,即初始化计算,有时下面要返出自己不需要的结果.能过这种方法,其实内部也在初始化计算,只是跳过主程序计算,先进行简单的计算,返回"No computation", 即只是返回自定义的未计算函数,输出未计算的结果,这样使初始化过程很简单,结省计算成本.

该项方法是help文件中看不到的,全是个人摸索获得,非常实用.
上传修改后的界面.比较修改前后的界面的差别,就能清楚.
注:如果程序自己用,一般不建议进行用户界面的设计,因为里面会涉及很多计算及程序处理,用为动态计算,很容易出问题.但如果给不懂mathemaica人员用,设计用户界面就很方便了.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2012-9-20 19:39:35 | 显示全部楼层 来自 北京
qiao_david 发表于 2012-9-20 17:08
呵呵,不是这个意思,ContinuousAction为单个滑块移动过程中不连续计算,只针对一个滑块的.我的意思,当有几个 ...

我是搞IT的,听了你的描述, 感觉业务逻辑有点问题啊. 如果需要用户修改完所有的参数才进行计算, 那么如果用户只想改变个别值, 或者不按顺序修改参数值呢? 为什么不加一个按钮, 只有按了按钮才进行最后的计算呢?
回复 不支持

使用道具 举报

 楼主| 发表于 2012-9-27 17:32:07 | 显示全部楼层 来自 英国
本帖最后由 qiao_david 于 2012-9-27 17:38 编辑

不是这个意思.用户修改任何一个参数,只需按计算区域的按钮便可以计算.在我的程序中,不管改变一个参数或者多个参数,或者全部参数,都可以进行计算,目前是可以由用户控制了何时进行计算复杂的函数.因为在mathematica程序计算是动态的,即计算区的滑块只要改变一点点都会进行一个完整的计算,对于只有一个滑块的计算没有影响,但对于有多个滑块的计算,有时想改变几个滑块所代表的值,看最后的结果,就会有很多多余的计算.所以前面的计算没有必要.其实我在程序中所加的no computatio也只是又多定义了一个非常简单的函数,返回结果为no computation, 每改变一下滑块,只是调用这个函数,其它的函数不调用.因为manipulate函数只调用第一个函数进行计算.这样,我们可以随进计算其它的函数,只需点击即可.
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-26 10:15 , Processed in 0.033495 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表