-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathqlti.m
More file actions
82 lines (75 loc) · 2.49 KB
/
qlti.m
File metadata and controls
82 lines (75 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
classdef qlti < handle
%QFTTF Summary of this class goes here
% Detailed explanation goes here
properties
num
den
pars
end
methods
function G = qlti(varargin)
if nargin==1
G.num = varargin{1}.num;
G.den = varargin{2}.den;
G.pars = varargin{3}.pars;
end
if nargin==2
G.num={};
G.den={};
G.pars={};
G.qftlti2(varargin{1},varargin{2});
end
end
function qlti2(Obj,A,B)
if isa(B,'lti') % Const * H(s)
H = tf(B);
[b,a]= tfdata(H);
b = b{1}; a=a{1};
Obj.pars = A.pars;
for k=1:length(b)
if b(k)==0
Obj.num{k} = 0;
elseif b(k)==1
Obj.num{k} = sprintf('%s',A.expression);
elseif b(k)==-1
Obj.num{k} = sprintf('-(%s)',A.expression);
else
Obj.num{k} = sprintf('%g*%s',b(k),A.expression);
end
end
Obj.den = num2cell(a);
end
end
function G = plus(A,B)
G = qftlti;
if isa(B,'qftlti') % A(s) + B(s)
G.pars = unique([A.pars; B.pars]);
na = length(A.num);
nb = length(B.num);
G.den=cell(max(na,nb),1);
A.num = fliplr(A.num);
A.den = fliplr(A.den);
B.num = fliplr(B.num);
B.den = fliplr(B.den);
for k=1:max(na,nb)
if k>na
G.num{k} = B.num{k};
elseif k>nb
G.num{k} = A.num{k};
else
if A.num{k}==0
G.num{k} = B.num{k};
elseif B.num{k}==0
G.num{k} = B.num{k};
else
G.num{k} = sprintf('(%s)+(%s)',A.num{k},B.num{k});
end
end
end
G.num = fliplr(G.num);
G.den = fliplr(G.den);
end
end
%function r = frd(obj)
end
end