The*_*ell 7 matlab symbolic-math
假设我有一个像这样的公式的列向量
N =
4*k2 + 5*k3 + k1*x
7*k2 + 8*k3 + k1*y
Run Code Online (Sandbox Code Playgroud)
和像这样的符号变量的列向量
k =
k1
k2
k3
Run Code Online (Sandbox Code Playgroud)
公式相对于线性是线性的k.我想找到一个矩阵M,使得M*k等于N.
我可以这样做N/k.但是,这给了
[ (4*k2 + 5*k3 + k1*x)/k1, 0, 0]
[ (7*k2 + 8*k3 + k1*y)/k1, 0, 0]
Run Code Online (Sandbox Code Playgroud)
这是正确的,但不是我想要的.我想要的是矩阵
x 4 5
y 7 8
Run Code Online (Sandbox Code Playgroud)
在我看来,这是最简单的答案,因为它不涉及任何变量k.
我如何说服Matlab从公式或公式向量中分解出指定的变量?
您可以使用coeffs,特别是表格
C = coeffs(p,vars)返回多元多项式p相对于变量的系数vars.
由于第一个输入需要是多项式,因此需要传递以下每个组件N:
coeffs(N(1), k)
coeffs(N(2), k)
Run Code Online (Sandbox Code Playgroud)
或者使用循环并将所有结果存储在符号数组中:
result = sym('result', [numel(N) numel(k)]); % create symbolic array
for m = 1:numel(N)
result(m,:) = coeffs(N(m), k);
end
Run Code Online (Sandbox Code Playgroud)
在你的例子中,这给出了
result =
[ 5, 4, x]
[ 8, 7, y]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |