我正在控制包中使用 Octave,我想采用一组传递函数(初始化如下)并提取矩阵的对角线元素。每当我尝试这样做时,都会遇到以下错误。我尝试了很多解决方法(将其转换为状态空间图、将元素存储在单元格中等),但我要么遇到类似的错误,要么最终得到一个无法再与其他矩阵交互的对象传递函数。文档中有一些未实现的函数(如 ss2ss),我认为这些函数很有用,但不可用。
我该如何解决这个问题?
初始化我正在使用的对象类型的代码:
s = tf('s');
m = inv(s*e - mat); // e and mat are just square matrices of numbers
Run Code Online (Sandbox Code Playgroud)
我用来尝试提取对角线分量的代码:
function D = getD(W) // W is of the similar type as above
n = size(W,1);
Dtemp = tf(eye(n));
for i = 1:n
Dtemp(i,i) = W(i,i);
end
D = Dtemp;
end
Run Code Online (Sandbox Code Playgroud)
我不断收到的错误:
error: lti: subsasgn: invalid subscripted assignment type '()'. you must select an LTI key first, i.e. sys.keyname(...) = ...
Run Code Online (Sandbox Code Playgroud)
请注意,当我将 Dtemp 初始化为单元格 (n,n) 时,我得到以下类型: …