【发布时间】: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