在Matlab中索引一个向量函数E(s)=(E_1(s),E_2(s),E_3(s)),而不需要计算该函数。

3

这很简单,但出于某些原因我在互联网上找不到解决方案。我有一个Matlab中的向量函数:

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

我希望能对其进行索引,通常在Matlab中你会使用E(1)来表示第一个元素。然而这一方法只会计算s等于2的向量。E(s)(1)也会出现错误。
以下是参考代码:http:// pastebin.com/vCuxkchN

你的向量函数没有包含在你的代码中,所以我不确定你想做什么。你能提供出现错误的代码吗? - Gordon Bean
刚在Math.SE回答了你的问题,然后发现你在这里也发了一篇。为了这个观众的利益,我会重复我的答案,但是应该避免重复发布。你甚至可以考虑删除Math.SE上的问题,因为这不是一个关于数学的问题。 - horchler
@horchler:你可能是对的,我认为由于存在MATLAB标签,这是可以接受的,但把它放在这里更有意义。 - Freeman
2个回答

4

您有一个返回向量的符号函数。键入whos,您会发现E的类是symfun。不幸的是,我认为您不能直接索引符号函数。但是,您可以通过将其设置为新变量并传入符号变量s来将其转换为符号表达式(类sym)。

Es = E(s);

现在您应该能够按照您的要求评估Es(1)Es(2)Es(3)


非常感谢您。这样可以将1x1 symfun转换为3x1 sym。我现在可以提取您指出的元素,但是如何恢复Es(1)对象的功能呢? - Freeman
1
我不确定你的意思是什么?你是在问如何为s和其他符号变量插入值吗?如果是这样,你可以使用subs。或者你可以将Es向量的每个元素转换回符号函数,例如,Es2(s) = symfun(Es(2),s)。然后你可以用Es2(3)来评估第二个元素在s等于3时的值。尝试一下,有很多选择,你可能能够找出如何重新向量化它,如果这是你想要的话。 - horchler
p.s. 你的研究看起来非常令人兴奋!祝你好运。 - Freeman

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

谢谢您的回答。我尝试了一下,但很遗憾没有成功。它是一个<1x1 symfun>对象,是'eig'函数的输出,创建了一个<3x1 sym>数组。这个<1x1 symfun>对象是相同的,只是由于某种原因我无法访问它的元素! - Freeman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接