add_line()
имеет три обязательных аргумента при использовании пар имя-значение: sys
, out
и in
и необязательные пары имя-значение.Разбивка вашего ввода:
add_line(sprintf('%s',diagrammeName),...
[pos_array_out{pos_out};pos_array_in{pos_in}],...
'autorouting','on'...
);
Непосредственно говорит вам, в чем проблема.У вас есть две входные переменные: 1) sprintf('%s',diagrammeName)
, 2) [pos_array_out{pos_out};pos_array_in{pos_in}]
и пара имя-значение ('autorouting','on'
).Таким образом, вы в основном указали два из трех обязательных параметров, поэтому вы получите ошибку.
Я подозреваю, что из-за того, как вы используете имена переменных, вы должны сделать
add_line(sprintf('%s',diagrammeName),...
pos_array_out{pos_out},...
pos_array_in{pos_in},...
'autorouting','on'...
);
, т.е.разделите переменные out
и in
, как предложено в документации.
Другой тип ввода add_line()
принимает это h = add_line(sys,points)
, в этом случае у вас есть два позиционных аргумента, как здесь,но не может использовать пары имя-значение, по-видимому.Причина этого в том, что прежний синтаксис сообщает вам, где начинается строка и где она заканчивается, а пары «имя-значение» управляют тем, как выглядит линия, т. Е. Где линия фактически проходит (перемещаясь вокруг объектов).Использование sys, points
похоже на выполнение plot(x,y)
, оно рисует линию между предварительно заданными точками.Использование пары «имя-значение» для управления формой является спорным, поскольку вы уже неявно предоставляете фигуру с помощью points
.
. Выполнение [a;b]
создает массив, который является единственной переменной,отсюда и ошибка.