1234567891011121314151617181920212223242526272829 |
- function [SymExpOut,SubExpArray] = OptimiseAlgebra(SymExpIn,SubExpName)
- % Loop through symbolic expression, identifying repeated expressions and
- % bringing them out as shared expression or sub expressions
- % do this until no further repeated expressions found
- % This can significantly reduce computations
- syms SubExpIn SubExpArray ;
- SubExpArray(1,1) = 'invalid';
- index = 0;
- f_complete = 0;
- while f_complete==0
- index = index + 1;
- SubExpIn = [SubExpName,'(',num2str(index),')'];
- SubExpInStore{index} = SubExpIn;
- [SymExpOut,SubExpOut]=subexpr(SymExpIn,SubExpIn);
- for k = 1:index
- if SubExpOut == SubExpInStore{k}
- f_complete = 1;
- end
- end
- if f_complete || index > 100
- SymExpOut = SymExpIn;
- else
- SubExpArray(index,1) = SubExpOut;
- SymExpIn = SymExpOut;
- end
- end
|