реферирование и назначени подмножество MatLab набора данных, как представляется, крайне неэффективно и, возможно, весы, как ряды^2Извлечение больших Matlab набора данных подмножеств
Пример:
ALLDATA большой набор данных смешанных данных - скажем, 150 000 строк на 25 столбцов (целое, логическое и строковое).
Формат для набора данных:
'format', '%s%u%u%u%u%u%s%s%s%s%s%s%s%u%u%u%u%s%u%s%s%u%s%s%s%s%u%s%u%s%s%s%u%s'
Я затем преобразовать 2 типа целочисленных COLS в тип булевой
следующее назначение подмножества:
somedata = alldata(1:m,:)
занимает> 7 сек для т = 10 000 и смешное количество времени для больших значений m. Время построения vs m показывает связь типа m^2, которая является странной, учитывая, что копирование alldata происходит почти мгновенно, а также использует такие функции, как сортировки и поиск. Фактически чтение исходного файла данных .csv происходит быстрее, чем указанное выше назначение для больших значений m.
Использование профилировщика, похоже, существует функция subref, которая включает очень медленную линию, которая проверяет соответствие строк для определения уникальных значений в наборе данных. Связано ли это с тем, как хранится тип набора данных (т. Е. Справочная таблица)? Набор данных содержит большое количество уникальных строковых значений.
Есть ли какие-либо решения для извлечения подмножества набора данных в Matlab? Например, предварительное распределение (как?) Или копирование набора данных и удаление строк, а не назначение экстракта/подмножества.
Я использую двухъядерную машину с 1,5 ГБ оперативной памяти, но диспетчер задач сообщает о потреблении менее 1 ГБ памяти.
Не могли бы вы дать нам пример снимок базы данных? Всего несколько строк и все столбцы. – Jacob
Ummm - данные ... чувствительные. Он состоит главным образом из идентификатора наблюдения, нескольких ссылочных идентификаторов, хранящихся в виде строк, нескольких полей даты (которые хранятся в строках, пока я еще не начал работать с ними), два булевых столбца, несколько целочисленных полей (большинство одно целое) и целая куча других строковых полей (обычно менее 20-30 символов). Я могу дать вам фактическую последовательность типов переменных, если это поможет? – Vahid
Вот пример того, кто имеет такую же проблему: http: //www.mathworks .com/matlabcentral/newsreader/view_thread/268923 # 704052 – Vahid