【问题标题】:Indexing a vector function, E(s)=(E_1(s),E_2(s),E_3(s)), in Matlab without evaluating the function在 Matlab 中对向量函数 E(s)=(E_1(s),E_2(s),E_3(s)) 进行索引而不计算函数
【发布时间】:2013-09-16 17:23:24
【问题描述】:

这很简单,但由于某种原因,我在 Internet 上的任何地方都找不到解决方案。我在 Matlab 中有一个向量函数:

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

我希望能够对其进行索引,因此通常在 Matlab 中您将使用E(1) 作为第一个元素。然而,这只是评估s 处的向量等于2E(s)(1) 也会报错。

这里是my code 供参考。

【问题讨论】:

  • 你的向量函数没有包含在你的代码中,所以我不确定你想要做什么。你能提供给你错误的代码吗?
  • 刚刚在Math.SE 回复,然后发现您在此处重复发布。为了观众的利益,我将重复我的回答,但应避免重复发布。您甚至可以考虑取消 Math.SE,因为这不是一个真正的数学问题。
  • @horchler:你可能是对的,我认为由于 MATLAB 标签的存在是可以接受的,但是在这里更有意义。

标签: matlab symbolic-math


【解决方案1】:

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

Es = E(s);

现在您应该可以根据需要评估Es(1)Es(2)Es(3)

【讨论】:

  • 非常感谢。所以这需要 1x1 symfun -> 3x1 sym。我现在可以提取您指出的元素,但是如何恢复 Es(1) 对象的功能?
  • 我不确定你的意思?您是否在问如何插入 s 和其他符号变量的值?如果是这样,您可以使用subs。或者您可以将Es 向量的每个元素转回一个符号函数,例如Es2(s) = symfun(Es(2),s)。然后你可以做Es2(3) 来评估s 处的第二个元素等于3。玩转,有很多选项是可能的,如果你想要的话,你可以弄清楚如何重新矢量化它。
  • 附注你的研究看起来很令人兴奋!祝你好运。
【解决方案2】:

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

【讨论】:

  • 感谢您的回答。我试过了,遗憾的是没有运气,它是一个 对象,是“eig”函数的输出,它创建了一个 数组。 对象是相同的,但出于某种原因我可以访问它的元素!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 2020-12-28
  • 2020-04-03
  • 1970-01-01
相关资源
最近更新 更多