我写了一个涉及cumsum
符号向量的小Octave脚本,我希望它能起作用,但不幸的是,它没有。这是代码:
pkg load symbolic
n = 3;
syms q x
q = sym('q', [n 1]);
x = sym('x', [n 1]);
cumsum(q - x)
而不是预期的结果,我得到:
错误:累积:类型参数'class'错误
为什么会这样?它可以与Matlab Symbolic Toolbox一起使用吗?(我没有它,所以很遗憾,我无法测试。)
这仅仅是因为cumsum
错误消息所指示的符号元素不支持用Octave编写。您的代码在MATLAB中提供了以下内容:
ans =
q1 - x1
q1 + q2 - x1 - x2
q1 + q2 + q3 - x1 - x2 - x3
您可以执行以下操作:
t1 = q-x;
t2 = triu(ones(numel(t1)));
sum(repmat(t1,1,3).*t2).'
% repmat is necessary here because implicit expansion is also not
% supported for matrices of class sym in Octave
以上Octave和MATLAB中的代码分别给出以下内容:
ans = (sym 3×1 matrix)
⎡ q₁₁ - x₁₁ ⎤
⎢ ⎥
⎢ q₁₁ + q₂₁ - x₁₁ - x₂₁ ⎥
⎢ ⎥
⎣q₁₁ + q₂₁ + q₃₁ - x₁₁ - x₂₁ - x₃₁⎦
ans =
q1 - x1
q1 + q2 - x1 - x2
q1 + q2 + q3 - x1 - x2 - x3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句