Как я могу изменить массив ячеек с временными точками на непрерывную двоичную матрицу? (для панели инструментов нейронной сети)

У меня есть массив ячеек 15x1, в котором каждая ячейка представляет собой другую ячейку 50x2. Данные показывают начало пиковых событий в секундах для 50 нейронов (каждая строка представляет собой нейрон). Содержимое выглядит так:

(XX{1,1}) = 
    {[  3.4078]}    {[  3.7273]}
    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}
    {[  3.4684]}    {0×0 double}
      ...

Если эти данные используются для обучения сети, я получаю следующую ошибку:

Error using trainNetwork (line 140)
Invalid training data. Predictors must be a cell array of sequences. The data dimension of all sequences must be the same.
Caused by:
  Error using nnet.internal.cnn.util.TrainNetworkDataValidator/assertValidSequenceInput (line 269)
  Invalid training data. Predictors must be a cell array of sequences. The data dimension of all sequences must be the same.

Чтобы использовать это в качестве входных данных для LSTM-сети в Neural Network Toolbox, эти временные точки должны быть частью непрерывного спектра. Моя идея состояла в том, чтобы преобразовать эти дискретные точки данных в большую двоичную матрицу (50x10000), в которой столбцы представляют время, поэтому 10 секунд = 10000 столбцов. В каждый момент времени возник пик (например, 3,4078) для соответствующего нейрона следует поставить 1. Я попытался проиндексировать массив ячеек с помощью вектора времени ( t = (0:0.001:10) ), но это не сработало. Может ли кто-нибудь помочь преобразовать данные? Спасибо.

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Если я вас правильно понимаю, вы хотели бы изменить каждый массив ячеек 50x2 на матрицу 50x10000, состоящую в основном из нулей, со значением 1 по индексам, которые соответствуют временам в исходном массиве 50x2. . Вы можете сделать это, создав новый массив ячеек 15x1, в котором каждая ячейка представляет собой матрицу нулей 50x10000. Затем используйте время в исходном массиве для индексации матрицы нулей, чтобы установить соответствующую запись в 1. Это будет выглядеть примерно так:

% XX = original cell array
seqNum = 15;
neuronNum = 50;
% create new cell array
XX2 = cell([seqNum 1]);
for i = 1:seqNum
    XX2{i} = zeros(neuronNum, 10000);
    currSeq = XX{i};
    for j = 1:neuronNum

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ

https://www.matlabsolutions.com/resources/how-can-i-change-a-cell-array-with-timepoints-in-to-a-continous-.php