|
1 | | -classdef RHS < matlab.mixin.indexing.RedefinesParen |
| 1 | +classdef RHS |
2 | 2 | properties (SetAccess = private) |
3 | 3 | F |
4 | 4 |
|
|
21 | 21 | HessianAdjointVectorProduct |
22 | 22 | OnEvent |
23 | 23 | end |
24 | | - |
25 | | - methods (Access = protected) |
26 | | - function newRHS = parenReference(obj, indexClass) |
27 | | - objF = obj.F; |
28 | | - subst.type = '()'; |
29 | | - subst.subs = indexClass.Indices; |
30 | | - newF = @(t, y) subsref(objF(t, y), subst); |
31 | | - newRHS = otp.RHS(newF); |
32 | | - end |
33 | | - |
34 | | - function newRHS = parenAssign(~, ~,~) |
35 | | - error(''); |
36 | | - end |
37 | | - |
38 | | - function newRHS = parenListLength(~, ~,~) |
39 | | - error(''); |
40 | | - end |
41 | | - |
42 | | - function newRHS = parenDelete(~, ~,~) |
43 | | - error(''); |
44 | | - end |
45 | | - end |
46 | | - |
47 | 24 |
|
48 | 25 | methods |
49 | 26 | function obj = RHS(F, varargin) |
|
57 | 34 | end |
58 | 35 | end |
59 | 36 |
|
| 37 | + function newRHS = subsref(obj, vs) |
| 38 | + if strcmp(vs(1).type, '()') |
| 39 | + objF = obj.F; |
| 40 | + newF = @(t, y) subsref(objF(t, y), vs); |
| 41 | + newRHS = otp.RHS(newF); |
| 42 | + else |
| 43 | + newRHS = builtin('subsref', obj, vs); |
| 44 | + end |
| 45 | + end |
| 46 | + |
60 | 47 | function newRHS = plus(obj, other) |
61 | 48 | objF = obj.F; |
62 | 49 | otherF = other.F; |
63 | 50 | newF = @(t, y) objF(t, y) + otherF(t, y); |
64 | 51 | newRHS = otp.RHS(newF); |
65 | 52 | end |
66 | 53 |
|
67 | | - function newRHS = cat(dim, varargin) |
| 54 | + function newRHS = vertcat(varargin) |
68 | 55 | newF = @(t, y) []; |
69 | | - if dim == 1 |
70 | | - for i = 1:numel(varargin) |
71 | | - oldRHS = varargin{i}; |
72 | | - oldF = oldRHS.F; |
73 | | - newF = @(t, y) [newF(t, y); oldF(t, y)]; |
74 | | - end |
| 56 | + |
| 57 | + for i = 1:numel(varargin) |
| 58 | + oldRHS = varargin{i}; |
| 59 | + oldF = oldRHS.F; |
| 60 | + |
| 61 | + newF = @(t, y) [newF(t, y); oldF(t, y)]; |
| 62 | + |
75 | 63 | end |
| 64 | + |
76 | 65 | newRHS = otp.RHS(newF); |
77 | 66 | end |
78 | 67 |
|
|
0 commit comments