2015-08-05 5 views
0

Существует функция построения Matlab "cov" для вычисления матрицы ковариации заданной матрицы C. Если C слишком большой, например 1000*60000 double, и на моем компьютере недостаточно ОЗУ, необходимо написать функцию для вычисления матрицы ковариации заданной матрицы C в блоках или кусках. Мой вопрос заключается в том, как вычислить ковариационную матрицу в блоках/кусках? Предположим, что размер данной матрицы равен 1000*60000 double, с которой мой компьютер не может обрабатывать с помощью функции "cov".Как вычислить матрицу ковариации в блоках?

+0

Возможно, вы приобрели 1000 x 60000? Обычно у вас должно быть больше наблюдений (первое измерение), чем переменных (второе измерение). –

+0

@ A.Donda, да, 1000 * 60000 - правильный размер. 6000 функций и 1000 точек времени. – Shawn

ответ

0

Предполагая, что вы имеете в виду у вас есть 60000 наблюдение 1000 переменных, то вы можете просто вычислить матрицу covaraince на куски, а затем объединить их, как вы идете:

  1. Partition свои наблюдения на куски размером N. (N должен быть определенно, чтобы вписываться в оперативной памяти)
  2. Compute ковариация для куска
  3. -ro
  4. Объединить кусок N-го с общей ковариацией для предыдущих N-1 кусков

Here - это обсуждение того, как вы комбинируете матрицы ковариации. В основном, вы хотите отслеживать как ковариации, так и средства кусков при их обработке, а затем объединять, используя свой квадрат квадратного квадрата минус средства представления, указанного в первом свойстве ковариаций, перечисленных here.

+0

@dpmcmixxvi, у меня есть 1000 временных точек и 60000 функций. Можете ли вы дать пример кода? – Shawn

+0

На [wiki] (https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Covariance) существует версия psuedo-кода для версии того, что я описал выше для специального случая кусков размера N = 1. Вероятно, не будет очень эффективным в Matlab со всеми этими циклами, но вы должны иметь возможность взглянуть на уравнения на ссылке wiki и распространяться на общий случай. – dpmcmlxxvi

+0

На самом деле, я только заметил, что они также предоставляют формулу для объединения двух ковариаций в самом низу. Это должно быть все, что вам нужно. – dpmcmlxxvi

Смежные вопросы