Я использовал neworkx для создания случайного геометрического графа на 50 узлах и создания файла .dat с некоторыми атрибутами этой сети.
Мне нужно получить к ним доступ как к переменным MATLAB. Я прочитал файл как строку данных, используя:
fid = fopen('mydata.dat','r')
data = textscan(fid, '%s')
fclose(fid)
Структура файла данных следующая
conn = val
Adj = val ..... val
.............
val ......val
pos =
[0.7910629988376467, 0.5523474928588686]
...
[0.6799716933198028, 0.6981655240935597]
т. е. conn — число, Adj — (предположительно) матрица 50 на 50, а pos — матрица 50 на 2.
Я могу читать conn и Adj как переменные MATLAB, но у меня проблемы с чтением pos. Первый экземпляр начинается с данных{1}{2508} и
data{1}{2508}
>>> [0.7832623541518583,
Как мне втиснуть это в матрицу 50 на 2 (или 2 на 50)?
Чтобы прочитать Adj я использую
P = 50 %number of nodes
index = 5
for i=1:P
for j = 1:P
Adj(i,j) = str2double(data{1}(index + P*(i-1) +j))
end
end
Я думал, что что-то подобное будет работать для pos, но с j = 1:2 и index = 2508, но я получаю NaN, поскольку строки (поля?) моего файла .dat не просто значения, они имеют форму [val, или ,val]