В процессе моделирования часто используется множество глобальных констант. Если вы пользователь Simulink, то, возможно, определяли множество констант в MATLAB и затем вызывали их через модуль Constant
в Simulink. Введение глобальных констант делает модель более надёжной и согласованной, а также упрощает настройку параметров, поэтому это очень полезно.
Оператор объявления очень прост, он всегда начинается с ключевого слова let
, за которым следует имя константы, знак равенства и значение константы. Не забудьте поставить точку с запятой в конце. Например:
let a = 1;
Этот оператор объявляет константу a
со значением 1. Если вы знакомы с синтаксисом JavaScript, вы обнаружите, что он очень похож. Однако в ligral вы можете объявить только одну константу, и вы не можете присвоить ей новое значение.
let a = 1;
a = 2;
~~~~~~~~~~~~
Invalid Syntax at line 2 column 4 (=)
Если вы используете версию v0.1.0, вам нужно заменить ключевое слово let
на digit
и изменить знак равенства на <-
. Это потому, что эта версия поддерживает только скалярные величины. Эти символы будут поддерживаться в версиях v0.2.*, но ожидается, что они будут отменены в версии v0.3.0 и выше.
В ligral, начиная с версии v0.2.0, существует два типа числовых типов: скалярная величина и двумерная матрица (в настоящее время скалярная величина отличается от $1\times 1$ матрицы, в будущем они могут быть объединены, но это не влияет на содержание этого раздела), вектора нет, поскольку вектор рассматривается как матрица с длиной одного измерения.
При объявлении матрицы содержимое матрицы должно быть заключено в пару квадратных скобок, строки должны быть разделены символом ;
и элементы внутри строк должны быть разделены символами ,
. Например:
let A = [1, 0; 0, 1];
Элементы матрицы могут быть числами или матрицами, но необходимо учитывать согласованность измерений. Например, при управлении системой вам может потребоваться расширить матрицу A. Вы можете написать:
let A0 = [1, 1; 0, 1];
let A = [A0, [0; 1]; 0, -1, 0];
A -> Print;
~~~~~~~~~~~~~~~~~~~~~~~~~~
Time: 0.00 Print1 = (3x3) 1 1 0 0 1 1 0 -1 0
Четвёртая строка является оператором соединения, цель которого — вывести матрицу на печать, см. документацию по операторам соединения.
Если вы пользователь MATLAB, этот синтаксис может показаться вам знакомым, но обратите внимание, что MATLAB позволяет разделять элементы в строке пробелами, чего нельзя делать в ligral, так как это часто приводит к путанице. Вы можете попробовать запустить следующие операторы в MATLAB, чтобы понять, насколько неразумно использовать пробелы для разделения:
[1 -1], [1 - 1], [1-1], [1- 1]
[1 *1], [1 * 1], [1*1], [1* 1]
~~~~~~~~~~~~~~~~~~~~~~~~
[1 -1] 0 0 0
1 1 1 1
Помимо того, что это может привести к недоразумениям, такой подход также увеличивает нагрузку на синтаксический анализ, поэтому мы отказались от него.
Кроме непосредственного присвоения значения константе, вы также можете выполнять некоторые простые вычисления выражений. В настоящее время поддерживаемые операторы включают +
, -
, *
, /
и ^
, где ^
совпадает с MATLAB и обозначает возведение в степень.
Приоритет операций — сначала возведение в степень, затем умножение и деление, наконец сложение и вычитание, направление операций — слева направо. Если есть круглые скобки, сначала вычисляется выражение в скобках.
let a = 1 + 2 * 3 ^ (4 - 3); # 7
Выражения также можно использовать при объявлении матриц, выражения могут появляться как в элементах, так и в операциях над матрицами (хотя возведение матрицы в степень синтаксически поддерживается, функционально оно ещё не полностью реализовано).
let A = [1+1; 0] + [1; -1]; # [3, -1]
Если вам нужна величина, которая изменяется в процессе моделирования (или если вы знакомы с Similink, вам нужен TimeSeries), обратитесь к документации модуля Playback.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )