1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/junruoyu-zheng-ligral

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
const.md 6.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 02:01 6be31cf

Объявление констант

В процессе моделирования часто используется множество глобальных констант. Если вы пользователь 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/junruoyu-zheng-ligral.git
git@api.gitlife.ru:oschina-mirror/junruoyu-zheng-ligral.git
oschina-mirror
junruoyu-zheng-ligral
junruoyu-zheng-ligral
dev