MATLAB Answers


adding property dynamically in the class

Latest activity Edited by per isakson
on 27 Feb 2017
I have a class,
classdef data < dynamicprops
result1 = []
result2 = []
Now I need to add dynamically many properites to the class. For example
reult 3, result 4, result 5 etc
I tried using data.('result3') = [] like how we add a field in the strcture. But i am getting the error.
how can i do this?
Thanks a lot


on 23 Feb 2017
Why wouldn't you just use a single property
as an array of results that you can index into?
@Gopalakrishnan venkatesan: as Adam already said, using an array (possible cell array) would be a much better solution. You should really consider using the simpler solution rather than making this complicated with dynamic properties.

Sign in to comment.

2 Answers

Answer by Guillaume
on 23 Feb 2017
 Accepted Answer

A rule in any programming language: if you*re numbering variables, you're doing it wrong. These obviously related variables should all be just one variable, a container for whatever is in each of these variables. In matlab, it's matrix or cell array or table.
Assuming your results are going to be matrices of varying size, then:
classdef data < handle
results = {[], []}; %two empty results in the results container
function addresult(this, result)
this.results = [this.results, {result}];
function setnthresult(this, n, result)
validateattributes(n, {'numeric'}, {'integer', 'positive', '<=', numel(this.results)});
this.results{n} = result;
would make your life much easier.
If you really insist on using dynamic properties, then this page explains exactly how to do it, with example.


Sign in to comment.

Answer by Adam
on 23 Feb 2017
Edited by Adam
on 23 Feb 2017

doc dynamicprops
gives details on the addprops function which I would assume you need to use. I have never wanted to do any dynamic properties on my own classes as it seems a bit of a suspicious design premise, but how did you manage to come across knowing you need to use dynamicprops yet not find addprops?!

  1 Comment

i known the addprops also but i dont known how to apply it. I was not able to add a new property to my class

Sign in to comment.