Импортировать данные формы << (index, index) value >> в разреженную матрицу - PullRequest
2 голосов
/ 17 апреля 2011

У меня есть простой текстовый файл данных (.dat), содержащий разреженную матричную информацию, которую я хотел бы импортировать в MATLAB.Это выглядит примерно так:

(1,2)    1    
(2,3)    2

И так далее, где мы получили индекс для положения матрицы в левом столбце и значение для перехода в правый.Поиск не оказался хорошим и простым способом сделать это, но у меня нет огромного опыта работы с MATLAB, поэтому я не знаю, упускаю ли я что-то очевидное.

Ответы [ 2 ]

3 голосов
/ 23 апреля 2013

Вы можете использовать функцию spconvert

Примеры:

Предположим, что файл ASCII uphill.dat содержит

1    1    1.000000000000000
1    2    0.500000000000000
2    2    0.333333333333333
1    3    0.333333333333333
2    3    0.250000000000000
3    3    0.200000000000000
1    4    0.250000000000000
2    4    0.200000000000000
3    4    0.166666666666667
4    4    0.142857142857143
4    4    0.000000000000000

Тогда утверждения

load uphill.dat    
H = spconvert(uphill)

H =

   (1,1)       1.0000
   (1,2)       0.5000
   (2,2)       0.3333
   (1,3)       0.3333
   (2,3)       0.2500
   (3,3)       0.2000
   (1,4)       0.2500
   (2,4)       0.2000
   (3,4)       0.1667
   (4,4)       0.1429
1 голос
/ 17 апреля 2011

Вы можете попробовать использовать scanf. Вот код для начала:

fid = fopen('sparse.dat', 'rt');
[m n] = fscanf(fid, '(%d,%d) %d\n');
fclose(fid);
m = reshape(m, 3, length(m)/3)';
% m should now be:
% [1 2 1; 2, 3, 2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...