I'm currently working on a project involving some automatic differentiation, and was presented an example code to such an approach. My problems really boil down to me never working with OOD in Matlab before and it seems really overwhelming. The first part of the code looks like this, fairly straight forward. The problem is it won't run past the last line.
function ad = autodiff(val, der) % A naive autodiff constructor. ad.val = val; if nargin == 1 der = 0.0; end if strcmp(der,'variable') der = 1.0; end ad.der = der; ad = class(ad, 'autodiff');
I get the error 'The CLASS function must be called from a class constructor', which I do not know how to deal with. How do I create custom classes and then call upon them later?
thanks in advance, Kristian
If you want to learn OOP in MATLAB, have a look at this document: MATLAB Object-Oriented Programming.
Basically, you want to create autodiff.m with a structure that will look like
classdef autodiff properties val der end methods function self = autodiff(val, der) % Constructor. self.val = val; if nargin == 1, self.der = 0.0; end if strcmp(der,'variable'), self.der = 1.0; end end function self = aMethod(self, ...) ... end end end