提取 matlab/octave 符号表达式的特定部分?
Extract specific parts of a matlab/ octave symbolic expression?
如何在 Matlab/Octave 符号包中提取表达式的特定部分?在XCAS中,可以使用索引表达式,但我在Octave/Matlab中找不到类似的东西。
比如,X = C*L*s**2 + C*R*s + 1
,有没有办法通过X(2)
之类的方式得到C*R*s
?
最好也用因子来做这个。 X = (alpha + s)*(beta**2 + s**2)*(C*R*s + 1)
,并让 X(2)
给出 (beta**2 + s**2)
。
谢谢!
children
(MATLAB doc, Octave doc) 执行此操作,但您编写表达式的顺序不一定相同。 MATLAB 和 Octave 中的顺序也不同。
扩展表达式:
syms R L C s;
X1 = C*L*s^2 + C*R*s + 1;
partsX1 = children(X1);
在 MATLAB 中:
>> X1
X1 =
C*L*s^2 + C*R*s + 1
>> partsX1
partsX1 =
[ C*R*s, C*L*s^2, 1]
八度:
octave:1> X1
X1 = (sym)
2
C⋅L⋅s + C⋅R⋅s + 1
octave:2> partsX1
partsX1 = (sym 1×3 matrix)
⎡ 2 ⎤
⎣1 C⋅L⋅s C⋅R⋅s⎦
分解表达式:
syms R C a beta s; %alpha is also a MATLAB function so don't shadow it with your variable
X2 = (a + s) * (beta^2 + s^2) * (C*R*s + 1);
partsX2 = children(X2);
在 MATLAB 中:
>> X2
X2 =
(a + s)*(C*R*s + 1)*(beta^2 + s^2)
>> partsX2
partsX2 =
[ a + s, C*R*s + 1, beta^2 + s^2]
八度:
octave:3> X2
X2 = (sym)
⎛ 2 2⎞
(a + s)⋅⎝β + s ⎠⋅(C⋅R⋅s + 1)
octave:4> partsX2
partsX2 = (sym 1×3 matrix)
⎡ 2 2⎤
⎣C⋅R⋅s + 1 a + s β + s ⎦
如何在 Matlab/Octave 符号包中提取表达式的特定部分?在XCAS中,可以使用索引表达式,但我在Octave/Matlab中找不到类似的东西。
比如,X = C*L*s**2 + C*R*s + 1
,有没有办法通过X(2)
之类的方式得到C*R*s
?
最好也用因子来做这个。 X = (alpha + s)*(beta**2 + s**2)*(C*R*s + 1)
,并让 X(2)
给出 (beta**2 + s**2)
。
谢谢!
children
(MATLAB doc, Octave doc) 执行此操作,但您编写表达式的顺序不一定相同。 MATLAB 和 Octave 中的顺序也不同。
扩展表达式:
syms R L C s;
X1 = C*L*s^2 + C*R*s + 1;
partsX1 = children(X1);
在 MATLAB 中:
>> X1
X1 =
C*L*s^2 + C*R*s + 1
>> partsX1
partsX1 =
[ C*R*s, C*L*s^2, 1]
八度:
octave:1> X1
X1 = (sym)
2
C⋅L⋅s + C⋅R⋅s + 1
octave:2> partsX1
partsX1 = (sym 1×3 matrix)
⎡ 2 ⎤
⎣1 C⋅L⋅s C⋅R⋅s⎦
分解表达式:
syms R C a beta s; %alpha is also a MATLAB function so don't shadow it with your variable
X2 = (a + s) * (beta^2 + s^2) * (C*R*s + 1);
partsX2 = children(X2);
在 MATLAB 中:
>> X2
X2 =
(a + s)*(C*R*s + 1)*(beta^2 + s^2)
>> partsX2
partsX2 =
[ a + s, C*R*s + 1, beta^2 + s^2]
八度:
octave:3> X2
X2 = (sym)
⎛ 2 2⎞
(a + s)⋅⎝β + s ⎠⋅(C⋅R⋅s + 1)
octave:4> partsX2
partsX2 = (sym 1×3 matrix)
⎡ 2 2⎤
⎣C⋅R⋅s + 1 a + s β + s ⎦