我正在开发符号工具包。试图解决一些方程式,这是一长串符号,例如x = a1 + a2 ^ 3 + b0 * b1 ...高达80,000(80k)个字符。 所以我需要将其存档。 mputstr()和其他wrting函数不起作用,因为它们是符号。 错误被抛出:不是字符串或指定的格式。
是否有任何方法可以帮助将变量降低到文件。 代码是:
Syms aa ab ac
z=ab^6*ac^6*ad^3*ba^3*bg^3*bh^3+3*aa^4*ab^6*ac^6*ad^4*ba^4*bg^2*bh^2+3*aa^5*ab^6*ac^6*ad^5*ba^5*bg*bh+aa^6*ab^6*ac^6*ad^6*ba^6
mputstr({char(z)},fd)
>>error 10000
>>char: Wrong type for input argument: Cell expected.
at line 95 of function char called by :
mputstr(z,fd)
>> !--error 999
>mputstr: Wrong type for input argument #1: A string expected.
p=string(z)
mputstr(p,fd)
>>!--error 999
>mputstr: Wrong type for input argument #1: A string expected.
mfprintf("%s",z)
>> !--error 246
>>Function not defined for given argument type(s),
check arguments or define function %c_mfprintf for overloading. ..
答案 0 :(得分:0)
让我们说你有一个符号方程x:
syms a b c
x = a + b * c
这里,x表示符号变量,因此您无法直接将其写入文件。您需要先将其转换为字符数组。所以你应该使用像
这样的东西fd = mopen( this_file, "wt" );
mputstr( char(x), fd );
mclose( fd );
答案 1 :(得分:0)
我认为@ bremen_matt的答案很好,但有一个修改。
如果你的" Syms"变量是复杂的,所以 char()和 string()不能使用,为什么你不创建自己的转换函数?
请参阅下面我对@bremen_matt示例的修改:
syms a b c
x = a + b * c
fd = mopen( this_file, "wt" );
mputstr( syms_to_string(x), fd );
mclose( fd );
syms_to_string()返回您要打印符号 x 的信息字符串,同样的功能可用于打印其他符号(例如 a )。当然,可以使用overloading更好地定义 syms_to_string()函数。