【问题标题】:Symbolic Variables with parenthesis带括号的符号变量
【发布时间】:2015-02-12 09:55:10
【问题描述】:

如果我创建一个符号矩阵:

A = sym('A',[2 3])

我会得到一个这样的矩阵

A1_1 A1_2 A1_3
A2_1 A2_2 A2_3 

有没有办法用括号括起来(用于将来的替换)?

如:

A(1;1) A(1;2) A(1;3) 
A(2;1) A(2;2) A(2;3)

编辑: 我尝试了here 的解释,但如果我写了

A = sym('A(%d;%d)',[2 3])

我收到一个错误:

Symbolic matrix base name must be a simple variable name.

我想要做的实际上是创建大量符号方程(雅可比行列式),然后将其作为雅可比行列式复制并粘贴到我的系统中,其中变量将是 A(1,1) 而不是 A11 或 A1_1 .我不想评估函数或替换值,我希望名称相同,因此它们看起来像“常规”数字变量。 做到这一点的一种方法是“查找和替换”,但对于数百个变量,它可能会变得乏味......

希望这能解释我的问题!

【问题讨论】:

  • 当您运行A = sym('A',[2 3]) 时,A 不是您想要的吗?你可以索引它。
  • @Daniel 我编辑了我的帖子以更好地解释我需要这个做什么!
  • 是的,但你已经可以使用A(1,1),我不明白同一事物有两个标签的问题。
  • 假设我用第一个值编写了一个函数。 f = A1_1 + 456我要做的是物理复制f这个表达式,然后粘贴到一个函数g中,其中包含A(1,1)(物理意义相同)。我只希望f 直接在其中包含A(1,1),而无需手动替换它。
  • 您确实意识到不允许使用括号的原因是它们会将符号变量 (sym) 转换为符号函数 (symfun)?那是你要的吗?问题是大多数符号数学函数——包括jacobian——都对符号变量进行操作。因此,除非您自己操作和计算事物,否则这样的方案可能无济于事。

标签: matlab symbolic-math


【解决方案1】:

符号是你所替代的。您的矩阵如下所示:

[A11 A12 A13] [A21 A22 A23]

它被称为 A。因此,A(1,1)=A11 和 A(1,2)=A12 等等。

因此,每当您想替换时,您所做的就是分配值。例如让矩阵为 A[1 2;3 4] 那么,

A(1,1)=1;

A(1,2)=2;

A(2,1)=3;

A(2,2)=4;

这些值是手动分配的。我相信它应该工作

【讨论】:

  • 好点,这行得通。但我想要做的实际上是创建一大组符号方程(雅可比行列式),然后将其作为雅可比行列式复制并粘贴到我的系统中,其中变量将是 A(1,1) 而不是 A11 或 A1_1。所以我实际上不希望直接评估函数,我希望这些值看起来像是来自矩阵,以便我可以替换实际值(总是在变化)。我不确定我是否清楚...
  • 如果你有你的 jacobian 并且这个过程只是替换值,那么我更喜欢使用变量。但是,如果您希望 MATLAB 评估 jacobian 中的导数,我建议单独编写方程并对每个方程进行部分微分,然后简化并将结果保存到变量中,然后将这些变量组装成矩阵。我希望我能理解你真正想做的事,抱歉回复晚了
猜你喜欢
  • 2011-11-30
  • 2021-05-13
  • 1970-01-01
  • 2016-09-23
  • 1970-01-01
  • 2012-11-05
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多