符号和数字输入的书写功能

问题描述

我正在编写一个(相当大的)纯函数,它将接受数字和符号输入。我面临的问题(主要是)是将符号表达式转换为逻辑表达式。例如,当我有一个syms x; assume( x,'positive' );这样的表达式和一个测试if( x>0 ); ...时,Matlab会抛出一个错误;要么

    Conversion to logical from sym is not possible.

    Unable to prove 'x > 0' literally. Use 'isAlways' to test the statement mathematically.

取决于上下文。

到目前为止,我通过将所有if重写为if( isAlways(x>0) ); ...并在文件isAlways添加函数@double解决了这个问题,因此Matlab使用了此函数当它遇到double时。

方法的缺点是,我还必须为彼此的类型(isAlwayssingle,...)(每个函数)分别编写一个int8函数(以及函数{ {1}},...)。

我的另一种方法是在全局名称空间中编写函数simplify,并在遇到isAlways调用内置的isAlways。但是,sym似乎不是内置的,因为Matlab报告了

isAlways

您有任何想法如何以更优雅的方式或至少以其他方式解决此问题?


编辑:我不想太多更改函数代码,特别是不想添加诸如 >> builtin('isAlways',sym(1)); Error using builtin Cannot find builtin function 'isAlways' 之类的检查;情况1}}; ... case switch class(x); ...`,但在Matlab中添加功能性”,以便它对于大多数功能而言都是开箱即用的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)