Почему мои данные сохраняются в этом формате в MatLab? - PullRequest
1 голос
/ 12 января 2012

У меня сохраняются данные при каждом запуске цикла, и это выглядит следующим образом.

val =

   (1,1)      16.0000

   (9,1)       0.0017

  (10,1)       0.0040

  (11,1)       0.0049

  (12,1)       0.0048

  (13,1)       0.0043

Матрица 50x50, однако в этом сохранении отображаются только ячейки, содержащие определенный элемент.

Я знаю, что это значения и их соответствующие местоположения.

Я хочу знать, что это за формат и как я могу быстро подсчитать числовые ячейки, показанные таким образом.

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Это потому, что ваша матрица разреженная .Если вы хотите, чтобы ваши данные отображались как обычно, выполните:

full(val)
1 голос
/ 12 января 2012

Это разреженная матрица, как правильно сказал @Oli. Я постараюсь уточнить немного.

Вы создаете его с помощью следующих команд:

 s = sparse(zeros(13,13));
 s(1,1) = 16;
 s(9,1) = 0.0017;
 s(10,1) = 0.0040;
 ...

Преобразуйте его обратно в полную матрицу, используя команду full :

 f = full(s);

А если вы хотите посчитать количество записей, используйте nnz . Подсчитывает количество ненулевых записей:

 z = nnz(s);
...