is it possible to convert iddata to cellstr

8 views (last 30 days)
Dear matlab users,
Is it possible to convert iddata to cellstr? i tried following code but it dont works.
cellstr(num2str(data.y(:,1)))]; %
%data.y(:,1) has this form 1×1 cell array {500×1 double}
500×1 char array
'0.0833333'
' 0.166667'
' 0.25'
' 0.333333'
' 0.416667'
' 0.5'
' 0.583333'
' 0.666667'
' 0.75'
.........
in this format i want vector
Thank you very much

Accepted Answer

Star Strider
Star Strider on 29 Oct 2019
Another approach:
data = iddata(rand(1,10)', (0:9)', 0.1); % Create ‘iddata’ Object
y = data.OutputData; % Get ‘OutputData’ As Double Array
ycs = cellstr(num2str(y)); % Convert To Cell Array Of Strings
  8 Comments
Daniel M
Daniel M on 29 Oct 2019
Edited: Daniel M on 29 Oct 2019
Ah, I see. I don't have this toolbox and had never heard of it before. help iddata redirected me to help griddata

Sign in to comment.

More Answers (2)

Daniel M
Daniel M on 23 Oct 2019
Edited: Daniel M on 23 Oct 2019
Close, but you need to access the contents of the cell array, not the entire cell array itself.
data.y(:,1) = {rand(500,1)};
output = cellstr(num2str(data.y{:,1}));
  4 Comments
Daniel M
Daniel M on 29 Oct 2019
500x1x0 means your arrays are empty. You don't have any data.

Sign in to comment.


Rajiv Singh
Rajiv Singh on 5 Nov 2019
From iddata object "data", you can fetch the data arrays as cells using:
y = pvget(data,'OutputData');
In your latest query, y is a cell array of iddata objects. Thus x1 = y{1} will return one iddata object. Then pvget(x1,'OutputData') will return the value of its "OutputData" property as a cell array.
Note that size of 500x1x0 for an iddata object means that the data has 500 samples, 1 output and no inputs signals. The size() operator is specialized (overridden) for iddata objects.

Community Treasure Hunt

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

Start Hunting!