How to use object array elements with sprintf?

2 次查看(过去 30 天)
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

采纳的回答

Guillaume
Guillaume 2015-6-18
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 个评论
ScottPT303
ScottPT303 2015-6-18
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!

请先登录,再进行评论。

更多回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 Whos 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by