2013-05-01 4 views
2

Я хочу рассказать о структуре сети (сети) в MATLAB. У меня есть список, содержащий to-from nodes для каждой ветви. У меня нет координат для узлов, и топология системы изменяется для каждой моделировки.Как построить матрицу связности/смежности в Matlab?

Мне также нужно иметь возможность назначать разные цвета для различных линий/узлов, визуализировать проблемы напряжения или перегрузки и т. Д., Аналогично тому, что я сделал с помощью биографии (код ниже).

Функция БИОГРАФИЯ почти идеальна. Недостатком является то, что линии всегда выходят из «нижней части» блока предков и «сверху» потомка. Поскольку предок всегда отображается над его потомками, графики иногда очень хаотичны (для больших систем).

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

Является ли то, что я прошу, возможно? Это не должно быть идеальным решением, любые улучшения были бы замечательными.

Это код, который я использую сейчас:

%% Plot biograph 
Sys = sparse(from,to,1,s,s); 

SysTri = tril(Sys + Sys'); 
bg = biograph(SysTri,[],'ShowArrows','off','ShowWeights','off'); 
h = view(bg); 

%% Color faulted line: 
set(h.nodes(newFaultNodes),'Color',[1 0.4 0.4]); 
fowEdges = getedgesbynodeid(h,get(h.Nodes(newFaultNodes),'ID')); 
revEdges = getedgesbynodeid(h,get(h.Nodes(fliplr(newFaultNodes)),'ID')); 
edges = [fowEdges;revEdges]; 
set(edges,'LineColor',[1 0 0]) 
set(edges,'LineWidth',2) 
+0

Вы можете попробовать [grphviz4matlab] (http://code.google.com/p/graphviz4matlab/) – Oleg

+0

Похоже grphvis4matlab может хорошо работать. Проблема в том, что я не могу заставить его работать. Я установил graphviz-2.30.1 и попытался выполнить описания на веб-сайте. Функции Matlab работают, но они не могут найти программы graphviz. Я получаю такие сообщения, как: «neato» не распознается как внутренняя или внешняя команда, операционная программа или командный файл. Пожалуйста, установите или обновите graphViz. Я считаю, что у меня есть файлы в правильных папках, и я попытался переустановить graphViz. Спасибо в любом случае =) –

+0

Посмотрите на [этот вопрос] (http://stackoverflow.com/questions/11037499/visualize-a-graph-in-matlab) – Tokkot

ответ

0

matlab-bgl Попробуйте. Он связывается с библиотекой Boost Graph и включает несколько полезных алгоритмов компоновки. Затем вы можете использовать gplot для визуализации.

gplot(A, fruchterman_reingold_force_directed_layout(A)); 
Смежные вопросы