«Неожиданное выражение MATLAB» при создании разреженного графа - PullRequest
0 голосов
/ 04 ноября 2011

Я пробовал следующий код для создания разреженного графа в MATLAB:

cm = sparse([1 1 2 2 3 3 4 5],[2 3 4 5 4 5 6 6],...
     [2 3 3 1 1 1 2 3],6,6)cm =

но это дает мне следующую ошибку

???      [2 3 3 1 1 1 2 3],6,6)cm =
                               |
Error: Unexpected MATLAB expression.

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

Ответы [ 3 ]

2 голосов
/ 04 ноября 2011

Вы не должны писать часть cm = в конце.То есть когда вы пишете

cm = sparse([1 1 2 2 3 3 4 5],[2 3 4 5 4 5 6 6],...
     [2 3 3 1 1 1 2 3],6,6)

в командной строке, вы получите

cm =

   (1,2)        2
   (1,3)        3
   (2,4)        3
   (3,4)        1
   (2,5)        1
   (3,5)        1
   (4,6)        2
   (5,6)        3

Это потому, что вы не написали точку с запятой в конце оператора.Если вы не хотите видеть значение cm, просто добавьте точку с запятой после закрывающих скобок.Кроме того ... говорит написать многострочное утверждение.Вы можете написать

cm = sparse([1 1 2 2 3 3 4 5],[2 3 4 5 4 5 6 6],[2 3 3 1 1 1 2 3],6,6)

альтернативно.

1 голос
/ 04 ноября 2011

В документации MATLAB есть опечатка, безвредная для людей с существующим фоном MATLAB, но, возможно, ее трудно определить новичкам.Чтобы процитировать документ MATLAB ,

cm = sparse([1 1 2 2 3 3 4 5],[2 3 4 5 4 5 6 6],...
  [2 3 3 1 1 1 2 3],6,6)cm =

(1,2)        2
(1,3)        3
(2,4)        3
(3,4)        1
(2,5)        1
(3,5)        1
(4,6)        2
(5,6)        3

То, что он действительно хотел сказать, было следующим:

cm = sparse([1 1 2 2 3 3 4 5],[2 3 4 5 4 5 6 6],...
  [2 3 3 1 1 1 2 3],6,6)

cm =

(1,2)        2
(1,3)        3
(2,4)        3
(3,4)        1
(2,5)        1
(3,5)        1
(4,6)        2
(5,6)        3

Обратите внимание, что cm = теперь находится на новой строке и просто указывает начало вывода, произведенного функцией sparse.Чтобы создать разреженную матрицу из этого примера, вам нужно написать

cm = sparse([1 1 2 2 3 3 4 5],[2 3 4 5 4 5 6 6],...
            [2 3 3 1 1 1 2 3],6,6)

Это даст вам желаемый результат.

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

1 голос
/ 04 ноября 2011

Поздравляем, вы нашли ошибку в документации MATLAB!

cm = в конце принадлежит следующей строке и фактически является выводом, который MATLAB выдает при вводе

cm = sparse([1 1 2 2 3 3 4 5],[2 3 4 5 4 5 6 6],...
     [2 3 3 1 1 1 2 3],6,6)

MATLAB использует разрывы строк для обозначения конца команды, если вы не заканчиваете строку с ..., и после закрывающей скобки во второй строке он не понимает, что должен означать cm; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...