2013-09-16 49 views
1

这很简单,但由于某些原因,我无法找到解决方案的任何地方。我有一个向量函数在Matlab:在Matlab中对矢量函数E(s)=(E_1(s),E_2(s),E_3(s))进行索引而不会影响函数

E(s) = [E_1(s),E_2(s),E_3(s)] 

我希望能够索引,所以通常在Matlab你会使用E(1),为第一要素。然而,这只是在s等于2处评估向量。 E(s)(1)也给出了一个错误。

任何帮助,将不胜感激。这里有my code供参考。

+0

你的矢量函数不包含在你的代码中,所以我不确定你想要做什么。你能提供给你错误的代码吗? –

+0

刚刚在[Math.SE]回答了(http://math.stackexchange.com/questions/495519/indexing-a-vector-function-es-e-1s-e-2s-e-3s-in-matlab -without-eva),然后发现你在这里张贴了。为了这个受众的利益,我会重复我的回答,但应避免重复发帖。你甚至可以考虑取消Math.SE,因为这不是真正的数学问题。 – horchler

+0

@horchler:你可能是对的,我认为这是可以接受的,因为MATLAB标签的存在,但它更有意义。 – Freeman

回答

3

你有一个返回一个向量的符号函数。输入whos,你会看到E的等级是symfun。不幸的是,我认为你不能直接编入一个符号函数。但是,你可以将其转换成表情符号(类sym)只需将其设置为一个新的变量,并通过在你的符号变量s

Es = E(s); 

现在,你应该能够评估Es(1)Es(2)Es(3)如你所想。

+0

非常感谢。所以这需要1x1 symfun - > 3x1 sym。我现在可以提取您指出的元素,但是如何恢复Es(1)对象的功能? – Freeman

+1

我不确定你的意思?你问你如何插入's'和其他符号变量的值?如果是这样,你可以使用['subs'](http://www.mathworks.com/help/symbolic/subs.html)。或者你可以将'Es'矢量的每个元素都变成一个符号函数,例如'Es2(s)= symfun(Es(2),s)'。然后你可以通过'Es2(3)'来评估's'的第二个元素等于3.玩耍,许多选择都是可能的,你可能会弄清楚如何重新向量化它,如果这是你想要的。 – horchler

+0

谢谢你:D对它进行了排序,感谢您的帮助。 – Freeman

0

如果我正确理解你,你唯一的希望就是使用命令“eval”。输入“help eval”并查看这是否是您需要的。

+0

感谢您的回答。我试了一下,可悲的是没有运气,它的一个<1x1 symfun>对象,来自'eig'函数的输出,它创建了一个<3x1 sym>数组。 <1x1 symfun>对象是相同的,除了某些原因我可以访问它的元素! – Freeman