How to extract cell array of 2D matrices into a timeseries?

4 vues (au cours des 30 derniers jours)
Daniel Flisek
Daniel Flisek le 10 Jan 2025
Commenté : Daniel Flisek le 13 Jan 2025
I have some data that is stored as a 1666x1 cell array. Each cell contains a 4x19 double. I need to extract this data and attach it to a timeseries object. Timeseries will not take a cell array directly, so I need to extract the cells.
So let's say the cell array is named data, and the timeseries is ts. I need:
ts.Data(1) = data{1}
ts.Data(2) = data{2}
etc.
cell2mat() concatenates everything into 6664x19, and I can't get reshape() to chop it up into the correct 4x19 blocks. I could do it in a for loop, but that's not very satisfying in MATLAB.
I know this is a simple syntax thing, but I can't seem to find an answer that works.
  1 commentaire
Burak
Burak le 10 Jan 2025
Modifié(e) : Burak le 10 Jan 2025

To populate a timeseries object with data from a cell array where each cell contains a 4x19 double, you can indeed use a for loop. However, if you want a more MATLAB-esque solution (avoiding explicit loops), you can use arrayfun to achieve this. Here’s how you can do it:

   % Initialize the timeseries object with an empty array of the correct size
    ts = timeseries();
    % Use arrayfun to attach data to the timeseries object
    ts.Data = cat(3, data{:});

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 10 Jan 2025
data = {rand(2,5); rand(2,5); rand(2,5)};
ts = timeseries(cat(3,data{:}))
timeseries Common Properties: Name: 'unnamed' Time: [3x1 double] TimeInfo: tsdata.timemetadata Data: [2x5x3 double] DataInfo: tsdata.datametadata
getsamples(ts,1)
timeseries Common Properties: Name: 'unnamed' Time: [1x1 double] TimeInfo: tsdata.timemetadata Data: [2x5 double] DataInfo: tsdata.datametadata
So in general you
ts = timeseries(cat(3, data{:}));
  1 commentaire
Daniel Flisek
Daniel Flisek le 13 Jan 2025
That worked! I knew it'd be something simple. Thanks for taking the time to answer.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Time Series Collections dans Help Center et File Exchange

Produits


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by