我想在stats::swGOFT中使用MuPAD函数。我有一个名为r的数值向量。我用过
feval(symengine, 'stats::swGOFT', r); 错误是
使用mupadengine/feval时出错(第157行) MuPAD错误:错误:一些数据是无效类型的。
所以我尝试了一种更直接的方法,它起作用了:
feval(symengine, 'stats::swGOFT', 1,2,3,4);但这不管用:
feval(symengine, 'stats::swGOFT', [1,2,3,4]);我的变量r是一个1146乘1的双矢量.显然,我不能手动输入所有的数字。因此,如何将向量变量r传递给MuPAD函数stats::swGOFT
发布于 2015-04-18 22:21:07
MuPAD不是Matlab。从stats::swGOFT的当前版本文档来看,这个函数似乎需要一个列表,而不是数组 ( Matlab所使用的)。许多MuPAD函数自动以所需的格式输入coerce,但在这种情况下似乎不发生这种情况。如果您想使用数字值从Matlab调用此函数,您可以使用几个选项--这里有一个简单的选项,可以同时用于浮点数和符号数字值:
r = randn(1146,1);
rStr = char(sym(r(:).'));
feval(symengine, 'stats::swGOFT', rStr(9:end-2))对于使用sprintf的浮点值的大型数据集,此方法应该更快地执行字符串转换。
r = randn(1146,1);
rStr = ['[' sprintf('%.17g', r(1)) sprintf(',%.17g', r(2:end)) ']'];
feval(symengine, 'stats::swGOFT', rStr)由于您自己正在转换为字符串,所以最好将上面的内容转换为直接使用evalin:
r = randn(1146,1);
rStr = [ sprintf('%.17g', r(1)) sprintf(',%.17g', r(2:end)) ];
evalin(symengine, ['stats::swGOFT([' rStr '])'])https://stackoverflow.com/questions/29721967
复制相似问题