【发布时间】:2012-05-20 20:15:47
【问题描述】:
我通过向其发送输入并从中获取输出来迭代单输入单输出线性系统。系统传递函数的分母和分母分别用代码中的Nom和Den表示。
Nom 和Den 是在对某些多项式进行一些复杂运算后计算出来的,所以我没有关于这些多项式程度的先验信息。我唯一知道的是系统是正确的(即Den的度数大于或等于Nom的度数)。
我的代码是这样的:
% ...
Nom = (...); % calculated after some complex operations
Den = (...); % calculated after some complex operations
[A, B, C, D] = tf2ss(Nom, Den);
x = zeros(size(B)); % state vector
xp = x; % derivative of the state vector
% ...
for t = 0 : SAMPLING_PERIOD : TIME_END
% ...
xp = A * x + B * u; % 'u' is some scalar input, calculated in the code previously
y = C * x + D * u; % 'y' is some irrelevant output signal, to be used in somewhere else in the code
x = xp * SAMPLING_PERIOD;
% ...
end
% ...
当Den 是第 0 阶时(这也要求 Nom 也是第 0 阶),tf2ss() 返回 A 的空矩阵、B、C 和 D。这在我的其他代码部分有些问题。我需要这些矩阵至少是 1×1。
所以,我的问题是,对于那些返回空的人,我可以使用哪些等效的非空矩阵来代替 A、B、C 和 D?例如,我可以假设所有空矩阵都是 1×1 零矩阵吗?
例子:
[A, B, C, D] = tf2ss([1], [2])
返回A = [] % Empty matrixB = [] % Empty matrixC = [] % Empty matrixD = 0.5 % 1-by-1 matrix
【问题讨论】:
标签: function matlab matrix transfer state-space