Подтвердить что ты не робот

Учебник MATLAB для программистов

Скоро появятся новые ученики, которые будут писать код MATLAB. Они новы для MATLAB, но у них есть опыт программирования в Java и С++.

Я попрошу их пройти через Начало работы в разделе справки MATLAB. Кроме того, я хочу дать небольшой учебник с целью не дать им сделать некоторые из наиболее распространенных ошибок, которые люди совершают при переключении на MATLAB (например, "MATLAB начинает отсчет с 1" ) и показывать им некоторые функции, которые они могут не использовать помните, когда вы приходите с других языков (например, "вы можете вычесть скаляр непосредственно из массива, а для векторов - bsxfun" ).

Каковы самые важные вещи, которые я должен им рассказать?

4b9b3361

Ответ 1

Достаточно коротких комментариев, вот что-то вроде ответа:

  • Рабочий стол Matlab: для чего предназначены все окна, перетаскивание кода из истории обратно в окно команд, инспектор переменных и т.д.
  • Построение: не только команда plot, но и как использовать графические инструменты графического интерфейса и как создать M файл из графика.
  • M файлы для скриптов и функций и ключевые различия между ними.
  • M-Lint, профилировщик.
  • Используйте Matlab как средство для обучения опасностям и ловушкам арифметики с плавающей запятой.
  • Получение справки: в командной строке, в Интернете, в документации, обмене файлами,...
  • Установить путь и текущий рабочий каталог.
  • Импорт данных из файлов, экспорт данных в файлы, загрузка и сохранение.

Этого должно быть достаточно, чтобы держать их занятыми в течение часа или около того.

Чтобы уточнить, я предлагаю эти темы, чтобы помочь вам научить ваших учеников избегать общих ошибок Matlab, включая:

  • Непродуктивное использование инструмента, команды повторного набора, которые можно легко вызвать из истории, используя команды чтения файлов стиля C (или Java) вместо uuimport, медленно набирать скрипты для рисования графики, когда Matlab может сделать это за вас, задаваясь вопросом, все мелкие оранжевые линии в правом редакторе означают, а squiggly подчеркивает, пытаясь разобраться в себе, когда службы поддержки могут рассказать им, тонны других вещей, которые многие гораздо больше испытывают пользователи Matlab, взяли возраст, чтобы учиться.
  • Арифметика с плавающей точкой не является реальной.
  • и, возможно, много других вещей.

Ответ 2

Я согласен с предыдущими ответами, но я бы сказал, что индексирование является первым и самым важным и сложным понятием в изучении MATLAB. Я видел много программистов на C, начиная с MATLAB, только пишут петли, много циклов, что-то нелепое, как

for i=1:10
    a(i)=i;
end

вместо простого a=1:10;.

Поэтому я бы предложил им прочитать о концепциях матричного программирования:

  • Как создать простые векторы и матрицы
  • Какие переменные могут использоваться для индексирования
  • Как создавать и применять индексы
  • Логические операции и функции, логические и числовые индексы (функция поиска)
  • Индексирование правой и левой стороны выражения
  • Разница между индексацией числовых матриц и массивов ячеек
  • Как использовать индексы как выходные данные из разных функций, таких как sort, unique, ismember и т.д.
  • Вы не можете применять индексы к промежуточным результатам

Что касается производительности, я бы добавил, что знание того, как использовать режим ячейки редактора, очень полезно.

Ответ 3

Для тех, кто приходит с языков C-семейства, элементы-мудрые операторы являются новыми. Мне потребовалось пару месяцев, чтобы обнаружить операторы ./ и .*. До этого я писал для циклов для элементарных операций. Так что, возможно, что-то, что нужно указать.

Ответ 4

Что касается неожиданных или неинтуитивных функций MATLAB, которые могут вызвать их путаницу, в этом вопросе есть несколько хороших указателей:

Что касается хороших трюков с экономией времени и эффективности, у этого другого вопроса есть несколько приятных примеров:

И для нескольких более продвинутых тем вы можете обратиться к ответам на этот вопрос:

Теперь за мои $0,02. Основываясь на тех типах вопросов, которые я чаще всего видел в SO, я бы сказал, что вы захотите убедиться, что они хорошо понимают следующие понятия:

И вот некоторые аккуратные функции, которые уже реализованы в MATLAB, которые могут сэкономить время и усилия:

Ответ 5

MATLAB концептуально в некотором роде сильно отличается от других языков, о которых вы говорили:

  • Ячейки
  • используются, когда Java использует upcasting
  • global и persistent переменные static в Java
  • gui handle - это просто числа типа double
  • Вложенные функции замыкания, ни Java, ни C/С++ не имеют такой функции
  • редко используются папки private и @TYPE для просмотра видимости
  • трюки для обработки массива
  • очень простая интероперабельность с Java/COM/.Net с использованием синтаксиса MATLAB
  • аргументы вариационной функции, обработка аргументов функции с помощью varargin/varargout
  • память management