Ошибка размера XData для 3D-черчения в Matlab - PullRequest
0 голосов
/ 01 октября 2018
G = 

  graph with properties:

    Edges: [4782×2 table]
    Nodes: [692×0 table]

>> plot(G, 'XData', x1, 'YData', y1, 'ZData', z1)
Error using matlab.graphics.chart.primitive.GraphPlot
Expected XData to be an array with number of elements equal to 692.

Это результат создания графа из матрицы смежности, а затем попытки привязать узлы к определенным координатам (x1, y1, z1), но это дает мне ошибку о неправильном размере XData.Я следовал этому уроку отсюда: https://www.mathworks.com/help/matlab/ref/graph.plot.html

Я мог бы воспроизвести ошибку с меньшим набором:

a = [1 2 3]
b = [4 5 6]
c = [7 8 9]
d = [10 11 12]
e = [13 14 15]
f = [16 17 18]

G = graph(a,b,c)
plot(G, 'XData', d, 'YData', e, 'ZData', f)

Дает такую ​​же ошибку за исключением того, что «количество элементов равно 6»

1 Ответ

0 голосов
/ 01 октября 2018

Просмотр документации показывает, что вы используете форму G = graph(s,t,weights) конструктора для graph.В этой форме s и t являются парами узлов.Каждая пара элементов [s(i),t(i)] указывает ребро между узлами с идентификаторами s(i) и t(i).3-й массив дает вес для каждого ребра.Следовательно, ваш график имеет 3 ребра и 6 узлов:

a = [1 2 3];
b = [4 5 6];
c = [7 8 9];
G = graph(a,b,c)

У вас есть узлы с номерами от 1 до 6, с ребром между узлами 1 и 4, одним между 2 и 5 и одним между 3 и 6.

Следовательно, для этих 6 узлов вам понадобятся также 6 координат в функции plot.

...