Octave: сделайте его максимально совместимым с MATLAB
Мне нужно реализовать несколько алгоритмов в MATLAB
(домашнее задание), однако я хочу использовать GNU Octave
вместо. Но я хотел бы отключить любой octave
расширения, и в основном превратить его в FOSS-версию MATLAB
, Какие настройки я должен изменить? Какие параметры командной строки я должен предоставить при выполнении octave
программа?
PS: я в курсе --traditional
опция командной строки, хотя, похоже, она мало что делает.
PPS: Любые предложения приветствуются. Если следование вашему совету требует, например, восстановления octave
из источника, пусть будет так.
2 ответа
Помимо использования --traditional
вариант, что вы ничего не можете сделать. Просто не используйте дополнительный синтаксис, который предлагает Octave. В конце концов, синтаксис Matlab является подмножеством языка GNU Octave, и вы можете использовать только это подмножество.
РЕДАКТИРОВАТЬ: Это не ответ, который вы хотели бы, но есть веская причина, почему это невозможное задание (под невозможным, я имею в виду очень сложный. Единственный вариант - просто раскрутить Octave и изменить его, пока он не станет точным клоном. не хочу этого делать, поверь мне). Представьте себе следующий пример. В Octave есть функции 'rows' и 'columns', а в Matlab - нет. Если вы изменили Octave так, чтобы эти функции больше не существовали, все остальные функции Octave, которые их используют (я думаю, много), также перестанут работать.
Другие, прежде чем вы успешно убедите своих профессоров принять домашнее задание, написанное на Octave, просто убедитесь, что вы хотя бы попытаетесь написать совместимый код.
РЕДАКТИРОВАТЬ 2: я попытаюсь объяснить, сравнивая эту ситуацию с фортепиано (кажется, очень хорошее сравнение). Вы можете купить пианино с 85 или 88 клавишами. Теперь представьте, что Matlab - это пианино с 85 клавишами, а Octave - это пианино с 88 клавишами (если хотите, также представьте, что у Matlab есть 3 педали, а у Octave только 2 педали). Единственное различие между двумя фортепиано состоит в том, что у одного есть немного больший тональный диапазон, то есть он может воспроизводить еще несколько тонов (из 3 дополнительных клавиш). Но когда вы играете на С4 на пианино с 85 клавишами и на С4 на пианино с 88 клавишами, звук один и тот же, это одна и та же нота. Примечания - это функции и ключевые слова, которые у вас есть. Они одинаковые. Нота на одном фортепиано - это та же нота на другом.
Теперь, если вы композитор, пишущий музыку, вы можете принять это во внимание. Только не пишите музыку, для которой нужны эти дополнительные клавиши. Музыка будет одинаковой в обоих типах фортепиано. Если у вас пианино с 88 клавишами, вы не отрубите 3 дополнительные клавиши, потому что хотите, чтобы оно было совместимо с фортепиано с 85 клавишами. Вы просто не играете на этих клавишах. Пианино с 88 клавишами совместимо с пианино с 85 клавишами, так же как Octave совместим с Matlab.
Если вы хотите, чтобы руководство напомнило вам, что вы не можете использовать эти дополнительные ключи, я думаю, вы могли бы наклеить на них красную ленту, чтобы напомнить вам, что вы не должны их использовать. Точно так же используйте Octave с текстовым редактором, который имеет различную подсветку синтаксиса для Octave и Matlab, поэтому он будет выделяться неправильно, если вы используете синтаксис, который не является частью Matlab. Кроме этого, вы ничего не можете сделать (если вы не рассчитываете разветвить проект Octave, попросите Mathworks внедрить их в Matlab или реализовать их самостоятельно. Я не имею в виду это как грубый сарказм, просто пытаюсь быть исчерпывающим).
Для завершенности, да, Octave еще не реализовал все возможности Matlab, но он развивается именно так, как его развивают люди. Это не статичный проект (просто посмотрите на файл NEWS для ветки разработки, например), вещи реализуются по мере того, как люди, которые в них нуждаются, разрабатывают их. И некоторые функции ведут себя по-разному, но это ошибки, о которых вы можете сообщить (и даже исправить, так как в конце концов это бесплатный и открытый исходный код). Таких несовместимостей нет ради раздражающих пользователей. Они там, потому что никто не сообщил или не исправил их. Плюс большинство из них для неправильно или недокументированных возможностей Matlab.
РЕДАКТИРОВАТЬ 3: вы также можете включить несовместимые предупреждения Matlab (которые по умолчанию отключены). Бежать warning ('on', 'Octave:matlab-incompatible')
, Вы можете оставить это на своем .octaverc
файл. Чтобы увидеть больше предупреждений, загляните в warning_ids
,
Я думаю, что лучше использовать графический интерфейс, который делает это за вас. Я лично использую Xoctave из-за его поддержки и Matlab-подобного интерфейса.