How to use object array elements with sprintf?

2 views (last 30 days)
Hi, I'm having trouble getting sprintf to allow a string from an object property as an acceptable input.
I have a defined class that has a property 'name'. In another function I've used a loop to define 3 objects of that class into an object array called 'objArray'. I'd like to use sprintf to write a text command but I'm getting an error. I eventually want to write multiple commands with a for loop iterating over the 3 objects in objArray, but I can't figure out the syntax yet for event just the first element of the objArray...
Code:
cmd = sprintf('Object_name: %s',objArray(1).name)
Error:
Error using sprintf Function is not defined for 'cell' inputs.
I've also tried with {}...
Code:
cmd = sprintf('Object_name: %s',objArray(1).name)
Error:
Cell contents reference from a non-cell array object
Am I missing something about the sprintf syntax or should I be using a different function?
Thanks

Accepted Answer

Guillaume
Guillaume on 18 Jun 2015
It looks like the name property of your class does not contain a string but a cell array containing a string. You can check that with:
class(objArray(1).name)
I bet it says 'cell' instead of 'char', so either fix your property so it actually contains a string or simply extract the string from the cell with:
cmd = sprintf('Object_name: %s', objArray(1).name{1});
  1 Comment
ScottPT303
ScottPT303 on 18 Jun 2015
Thank you for the response! I did check the class. Since it is an object array then
class(objArray(1).name)
results in the name of the class (not the property 'name', unintended confusion). Your recommendation using thisObjArray(1).name{1} works! In this case I am actually calling the 'char' within the cell as you said. Thank you for the help!

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 18 Jun 2015
t = objArray(1).name;
cmd = sprintf('Object_name: %s', t{1});

Categories

Find more on Cell Arrays 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!