Как я могу изменить массив ячеек с временными точками на непрерывную двоичную матрицу? (для панели инструментов нейронной сети)
У меня есть массив ячеек 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
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ