How do I call a function which I have defined within a class?

4 views (last 30 days)
I'm trying to learn how to use classes in Matlab, having never used them in any language before, so apologies if this is a bit basic.
I have defined a class called car, with the properties of colour, type, serial number and speed, with a function to change the speed.
classdef car <handle
properties
colour
type
speed
end
properties (SetAccess = private)
SerialNumber
end
methods
function faster(obj, v)
obj.speed = obj.speed + v;
end
end
end
In another script I can type
car.colour = "red",
and when I disp(car), the class has the property colour with label "red". When I call faster(100) however, instead of setting car.speed=100, it throws the error
Check for missing argument or incorrect argument data type in call to function 'faster'.
I built the class and method using the same sort of code structure as in this question:
where the user seemed to not have the issue I do. I'm not sure where I'm going wrong - my function seems like it should work. Can anybody point me in the right direction?

Accepted Answer

Daniel Pollard
Daniel Pollard on 27 Nov 2020
This question has now been answered on Stack Overflow:
https://stackoverflow.com/questions/65038867/matlab-how-do-i-call-a-function-which-i-have-defined-within-a-class.

More Answers (1)

Steven Lord
Steven Lord on 27 Nov 2020
When you call a non-Static method of a class, at least one of the inputs to that method must be an instance of that class. With your car class's definition:
% Create a car
y = car
% Set its colour
y.colour = 'red'
% Set its initial speed
y.speed = 30
% Update the speed with the method
faster(y, 10)
% Alternately you could use
% y.faster(10)
% Display the updated object
y

Categories

Find more on Software Development Tools in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!