exponenta event banner

R2021b

Новые возможности, исправления ошибок, Вопросы совместимости

Среда

Редактор Селекшн: Выберите и отредактируйте прямоугольную область кода

В Редакторе теперь можно выбрать прямоугольную область в коде (также известный как выбор столбца или блокировать редактирование) путем нажатия клавиши ALT при делании выбора с мышью. В macOS системах используйте ключ Option вместо этого. Выбор и редактирование прямоугольной области кода полезны, если вы хотите скопировать или удалить несколько столбцов данных, или если вы хотите отредактировать несколько линий одновременно.

Например, выберите второй столбец данных в A.

The variable A, defined as matrix with five columns and three rows. The second column of A is selected.

Введите 0 устанавливать все выбранные значения к 0.

The variable A with the second column in the matrix set to all zeros.

Редактор Дисплей: Увеличьте и уменьшите масштаб в Редакторе

Чтобы увеличить масштаб или в Редакторе, перейдите к вкладке View, и в разделе Zoom, нажмите кнопку Zoom In или Zoom Out. Как вы масштабируете, MATLAB® отображает текущую шкалу в нижнем правом углу Редактора. Также можно удержать клавишу Ctrl и переместить колесико прокрутки или нажать Ctrl+Plus и Ctrl+Minus. В macOS системах используйте ключ Command и переместите колесико прокрутки или нажмите Command+Shift+Plus и Command+Shift+Minus.

Чтобы возвратиться к шкале по умолчанию, в разделе Zoom вкладки View, выбирают Reset Zoom. Также можно нажать Ctrl+Alt+0 (Command+Alt+0 на macOS).

Код редактора: Покажите предложения кода и завершения автоматически

Начиная в R2021b, когда вы написали команды в Редакторе, MATLAB автоматически отображает контекстные подсказки для аргументов, значений свойств и альтернативных синтаксисов. В предыдущих релизах MATLAB только завершает имена в Редакторе после нажатия клавиши Tab.

Например, если вы хотите использовать size функция, MATLAB автоматически отображает информацию о синтаксисе, чтобы помочь вам записать команду при печати.

Code suggestion for the size function showing two input arguments, A and dim. The input argument A has the description "input array" underneath it.

MATLAB также автоматически предлагает и завершает имена функций, моделей, объектов MATLAB, файлов, папок, переменных, структур, графических свойств, параметров и опций.

Можно отключить автоматические завершения в Редакторе, и Live Editor при наличии MATLAB предлагают и завершают имена только после того, как вы нажимаете клавишу Tab. Для этого на вкладке View, в разделе Display, нажимают кнопку Automatic Completions прочь. Также можно перейти к вкладке Home, и в разделе Environment, нажать Preferences. Затем выберите Editor/Debugger> Automatic Completions и в разделе Suggestions and completions, выберите Show on tab.

Для получения дополнительной информации смотрите Проверку синтаксиса при печати.

Редактор Дебуггинг: Диагностируйте проблемы в скриптах и функциях с помощью встроенного управления отладкой и стека вызовов функции стиля навигационной цепочки

При отладке кода в Редакторе теперь можно диагностировать проблемы с помощью встроенного управления отладкой. Например, чтобы запуститься к определенной строке кода и затем сделать паузу, нажмитеrun to here кнопку слева от линии.

Script with nine lines of code and the run to here button displayed on line two.

Чтобы продвинуться в файл, нажмитеstep in кнопку непосредственно слева от функции, в которую вы хотите продвинуться. После вступания нажмитеstep out кнопку наверху файла, чтобы запустить остальную часть вызванной функции, оставить вызванную функцию, и затем сделать паузу.

По умолчаниюstep in кнопка только появляется для пользовательских функций и скриптов. Показать кнопку для MathWorks® функции также, на вкладке Home, в разделе Environment, нажимают Preferences. Затем выберите MATLAB> Editor/Debugger, и в разделе Debugging in the Live Editor, очистите опцию Only show Step in button for user-defined functions.

Когда вы продвигаетесь в вызванную функцию или файл, Редактор отображает улучшенный список стилей навигационной цепочки функций MATLAB, выполняемый прежде, чем сделать паузу в текущей линии (также названный стеком вызовов функции). Стек вызовов функции показывают наверху файла и отображает функции в порядке, начиная слева с первого названного скрипта или функции, и заканчиваясь справа текущим скриптом или функцией, в которой приостановлен MATLAB.

Bread-crumb style function call stack showing the two functions called, displayed left to right. The first function is plotRand the second function is mean. The step out button displays to the right of the function call stack.

Для получения дополнительной информации смотрите Отладку Файлы кода MATLAB.

Редактор Рефэкторинг: Автоматически преобразуйте выбранный код в функцию

Повредите большие скрипты или функции в мелкие кусочки путем преобразования выбранного кода в функции в файлах или локальных функциях. С одной или несколькими выбранными строками кода, на вкладке Editor, в разделе Code, нажимают кнопку Refactor, и затем выбирают из доступных параметров. MATLAB создает функцию с выбранным кодом и заменяет оригинальный код на вызов недавно эмпирическая функция.

Код редактора: Автоматически завершите окончания блока, разделители соответствия, и перенесите комментарии при редактировании кода

MATLAB теперь автоматически завершает круглые скобки и кавычки, когда вы вводите код в Редакторе. Например, если вы вводите открывающую скобку в Редакторе, MATLAB автоматически добавляет закрывающую скобку. MATLAB также автоматически завершает комментарии, векторы символов, строки и разделение круглых скобок через две линии.

У вас также может быть MATLAB, автоматически завершают окончания блока. Для этого на вкладке Home, в разделе Environment, нажимают Preferences. Выберите Editor/Debugger> Automatic Completions и в разделе Autocoding options, выберите один или несколько опций Autocomplete block endings.

Чтобы отменить автоматическое завершение кода, нажмите Ctrl+Z или кнопку Undo. Отключить автоматические завершения кода, в Editor/Debugger> настройки Automatic Completions, ясный один или несколько опций в разделе Autocoding options.

Разделы редактора: Создайте разделы с улучшенным внешним видом

При запуске в R2021b разделы в Редакторе имеют улучшенный внешний вид. Чтобы создать новый раздел, перейдите к вкладке Editor и в разделе Section, нажмите кнопку Section Break. Новый раздел подсвечен с синей границей, указав, что он выбран.

File open in the Editor showing two sections. The second section has a blue border around it indicating that it is the selected section.

Чтобы максимизировать пробел, доступный для редактирования кода в Редакторе, можно скрыть Запуск к Здесь и Код, Сворачивающий поля. Это минимизирует серую область слева от вашего кода. Чтобы скрыть эти два поля, щелкните правой кнопкой по серой области слева от своего кода и очистите опции Show Code Folding Margin и Show Run to Here Margin.

File open in the Editor showing the reduced gray area to the left of the code

Код редактора: Измените случай текста и кода

Можно изменить случай выделенного текста или кода в Редакторе от всего верхнего регистра до нижнего регистра, или наоборот. Чтобы изменить случай, выберите текст, щелкните правой кнопкой и выберите Change Case. Также можно нажать Ctrl+Shift+A, чтобы изменить случай. Если текст содержит и прописной и строчный текст, MATLAB изменяет случай в весь верхний регистр.

Редактор Букмаркс: Обеспечьте закладки после закрытия файла

Начиная в R2021b, MATLAB обеспечивает все закладки после того, как вы закроете файл в Редакторе. В предыдущих релизах MATLAB не обеспечивает закладки после закрытия файла.

Для получения дополнительной информации смотрите Перейти к Местоположение в Файле.

Live Editor Контролс: Установите значения по умолчанию для ползунков, выпадающих списков, флажков и полей редактирования

Можно установить значения по умолчанию для ползунков, выпадающих списков, флажков и полей редактирования в live скриптах. Чтобы установить значение по умолчанию для управления, щелкните правой кнопкой по управлению и выберите Configure Control. Затем в разделе Defaults задайте значение по умолчанию путем ввода значения или путем выбора переменной рабочей области из списка. Список показывает только действительные переменные для управления. Для выпадающих списков выберите значение по умолчанию из списка элементов.

Чтобы восстановить значение по умолчанию для управления, щелкните правой кнопкой по управлению и выберите Restore Default Value.

Для получения дополнительной информации смотрите, Добавляют Интерактивные управления к Live Script.

Live Editor Анимэйшнс: Экспортируйте анимации в фильмы или анимированные GIF

Экспортируйте анимации в фильмы или анимированные GIF с помощью новой кнопки Export Animation в средствах управления воспроизведением анимации Live Editor. Кнопка Export Animation не поддерживается для анимаций, сгенерированных movie функция.

Например, этот код анимирует линию, растущую, когда он накапливает 2 000 точек данных в Live Editor. Когда анимация сделана, вопроизведя, управление воспроизведением, включая новую кнопку Export Animation, отображение в рамках окна рисунка.

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,2000);

for k = 1:length(x)
    y = sin(x(k));
    addpoints(h,x(k),y);
    drawnow
end

Figure window showing line after animation is done playing. Playback controls, including the new Export Animation button, display below the plot.

Для получения дополнительной информации о создании анимаций, смотрите Методы Анимации.

Фигуры Live Editor: Взаимодействуйте с действительными фигурами MATLAB и измените размер их с улучшенными размещениями

Live Editor фигуры выхода являются теперь действительные фигуры MATLAB с большинством возможностей взаимодействия автономных фигур MATLAB. Кроме того, когда вы изменяете размер фигуры в Live Editor, размеры шрифта и располагающий с интервалами между элементами на рисунке теперь автоматически настраивают, чтобы обеспечить самое лучшее представление для нового размера.

Live Editor: Улучшенная производительность при сохранении live скриптов или функций

Сохранение live скриптов и live функций в Live Editor быстрее в R2021b, чем в R2021a. Улучшение является самым примечательным, когда вы сохраняете live функции больше чем с 1 000 строк кода и live скрипты меньше чем с 100 строками кода.

Например, на Windows® 10, Intel® Xeon® Центральный процессор E5-1650 система тестирования на 3,60 ГГц, сохраняя live функцию в качестве примера, содержащую 4 000 строк кода, занимает приблизительно 2,05 секунды в R2021b. В R2021a, сохраняя ту же live функцию занимает приблизительно 2,57 секунды.

Инструмент сравнения: Сравните и объедините текстовые файлы с улучшенным удобством пользования, внешним видом и подсветкой синтаксиса

В R2021b инструмент сравнения использует подсветку синтаксиса редактора MATLAB. Текстовые изменения и выбор слияния теперь легче изучить. Изменения подсвечены с сильными цветами. Модифицированные линии подсвечены и отмечены с помощью значков сравнения, или. Слияние линию за линией является прямым, и выбор слияния отмечается с помощью значка содержимого слияния.

Text comparison report.

Вопросы совместимости

Начиная в R2021b, вы больше не можете сохранять отчет сравнения как HTML или задавать, показать ли только различия или целые файлы.

Импорт Настроек от Предыдущих Релизов: MATLAB проверяет на настройки от R2019b или более новый

Во время запуска MATLAB проверяет на папку настроек, которая совпадает с текущим релизом. Если та папка не найдена, проверки MATLAB на папки настроек, возвращающиеся до R2019b. Релизы перед R2021b продолжают проверять максимум на три предыдущих релиза.

Релиз MATLABПредыдущие папки настроек релиза

R2021b

R2021a, R2020b, R2020a, R2019b

R2021a

R2020b, R2020a, R2019b

R2020b

R2020a, R2019b, R2019a

Язык отображения: MATLAB использует настройки языка отображения Windows для выбора настольного языка

MATLAB использует настройки Windows display language на Windows 10, чтобы управлять языком рабочего стола MATLAB. Язык отображения вы выбираете On Windows, изменяет язык по умолчанию, используемый функциями Windows как настройки и файловый менеджер.

До R2021b MATLAB управлял настольным языком с помощью установки локализации Windows, которая управляема в настройках Region.

Для получения информации об установках локализации Windows в MATLAB смотрите Локаль Набора на Платформах Microsoft Windows.

Для получения информации о настройках языка отображения управления обратитесь к своей документации Windows 10.

Функциональность, удаляемая или измененная

Инкрементный инструмент Value и Run Section был демонтирован

Инструмент Increment Value и Run Section, ранее доступный в Редакторе, был демонтирован.

Чтобы постепенно увеличить числовое значение в разделе, используйте средства управления в Live Editor. Например, этот код вычисляет факториал переменной x.

x = 5;
y = factorial(x)
y =
   120
Чтобы в интерактивном режиме изменить значение x, в live скрипте, заменяют значение 5 с числовым ползунком. По умолчанию MATLAB повторно выполняет текущий раздел, когда значение ползунка изменяется.

Code that calculates the factorial of x. The value of x is replaced with a numeric slider with a minimum value of 0, a maximum value of 10, and an actual value of 5.

Для получения дополнительной информации смотрите, Добавляют Интерактивные управления к Live Script.

Язык и программирование

cast Функция: Сопоставимый выход для всех синтаксисов с преобразованием совпадающего типа данных

cast функция теперь возвращает сопоставимый выходной параметр для всех синтаксисов с преобразованием совпадающего типа данных.

Например, начиная в R2021b, обоих b = cast(fi(1),'like',sym(1)) и b = cast(fi(1),'sym') возвратите b = 1 из sym тип данных. В предыдущих релизах, b = cast(fi(1),'like',sym(1)) возвращает b = 1 из sym тип данных, но b = cast(fi(1),'sym') выдает ошибку.

Запустите Код в фоновом режиме: Используйте язык параллельного программирования, чтобы запустить код асинхронно

Можно теперь запустить код в фоновом режиме с помощью backgroundPool. Когда вы запускаете код в фоновом режиме, вы можете:

  • Запустите другой код MATLAB в то же время, что и длительное вычисление

  • Создайте больше быстро реагирующих пользовательских интерфейсов

Используйте фоновый пул со следующим языком параллельного программирования:

Для получения дополнительной информации смотрите Фоновую обработку.

Портативный Параллельный Код: Совместно используйте параллельный код и беспрепятственно запуститесь параллельно

Можно теперь идти параллельно код, даже если у вас нет Parallel Computing Toolbox™. Когда вы запускаете портативный параллельный код ни с чем не сравнимый Вычислительный Тулбокс, вы запускаете код в сериале на вашей машине. Когда вы запускаете этот код с Parallel Computing Toolbox, можно автоматически масштабировать и запустить код параллельно по локальной машине в удаленном кластере, или в облаке.

Следующие функции языка параллельного программирования доступны для прототипирования:

  • parfeval — Беспрепятственно запустите несколько функций целиком (начиная с R2021b)

  • parfor — Беспрепятственно запустите циклы for параллельно (начиная с R2008a)

Для получения дополнительной информации смотрите, Идут параллельно Язык в MATLAB.

Компактное Отображение для Классов: Настройка отображения информации о классах, когда пробел ограничивается

Используйте matlab.mixin.CustomCompactDisplayProvider класс, чтобы настроить, как информация о ваших классах отображена в контейнерной переменной — такой как struct, массив ячеек или таблица — где пробел ограничивается. Опции для индивидуальной настройки включают:

  • Отображение частичных наборов данных

  • Добавление аннотаций

  • Управление, как и когда имена классов отображены

Например, класс перечисления дней недели, WeekDays, может быть настроен так, чтобы когда массивы WeekDays члены не могут быть полностью отображены, MATLAB отображает размер, класс и аннотацию. Когда ширина Командного окна является достаточно большой, полный массив показывают:

myStruc = 

  struct with fields:

    prop1: [Monday    Wednesday    Friday    Saturday    Sunday]

Когда Командное окно не достаточно широко, чтобы отобразить полный массив, размер, класс, и аннотацию показывают:

myStruc = 

  struct with fields:

    prop1: 1x5 Weekdays (Enum of days of week)

Искажение класса: Создайте псевдонимы для переименованных классов, чтобы обеспечить обратную совместимость

Когда необходимо изменить имя класса, можно создать псевдоним, чтобы сохранить совместимость с кодом, записанным перед сменой имени. matlab.alias.AliasFileManager класс обеспечивает API для определения и реализации псевдонимов. Если вы задаете псевдоним, можно использовать псевдоним где угодно, вы используете имя класса. Псевдонимы обеспечивают обратную совместимость при перезагрузке объектов со старым названием в версию MATLAB, которая использует новое имя, а также прямую совместимость, когда загружаемые объекты сохранили в более новой версии в более старую версию, которая предшествует определению псевдонима. MATLAB заменяет новым именем класса каждый раз, когда это сталкивается со старым названием.

Модульная Индексация: Настройте операции индексации класса индивидуально с помощью новых суперклассов

Чтобы настроить, как индексирующие операции ведут себя с вашим классом в предыдущих версиях MATLAB, необходимо перегрузить subsref и subsasgn методы. Выполнение так требует кода реализации для всей ссылки индексации и операций присвоения, включая круглые скобки, точку и операции фигурной скобки, даже если вы хотите изменить только один тип индексации операции.

Начиная в R2021b, можно наследоваться трем новым суперклассам, чтобы настроить круглые скобки, точку и операции индексации фигурной скобки индивидуально:

Можно наследоваться одному или нескольким из этих классов, не влияя, как другие операции индексации работают. Эти классы также позволяют вам передать уровни индексации в составных операторах к другим значениям MATLAB. Например, ваш класс может реализовать пользовательскую индексацию круглых скобок для первого уровня составной ссылки и затем позволить MATLAB применять другие уровни к объекту, содержавшему в вашем классе.

Скалярные классы: наследуйтесь matlab.mixin.Scalar суперкласс, чтобы гарантировать экземпляры ведет себя как скаляры

Экземпляры классов, которые наследовались matlab.mixin.Scalar должен вести себя как скаляры. Вы не можете сформировать массивы экземпляров такого класса, включая пустые массивы, и вы не можете конкатенировать экземпляры. Этот класс полезен для случаев, в которых конкатенация не целесообразна, как словарь или другой контейнерный класс, в котором индексация круглых скобок настраивается, чтобы получить доступ к данным в классе, не сформировать или получить доступ к массивам.

startat Функция: информация о Часовом поясе в datetime объекты теперь поддержаны

startat функция теперь распознает часовой пояс и информацию о летнем времени datetime входные параметры.

Функциональность, удаляемая или измененная

newclass входной параметр синтаксиса cast(A,newclass) является теперь чувствительным к регистру

Изменение поведения

Начиная в R2021b, newclass входной параметр синтаксиса cast(A,newclass) является чувствительным к регистру. Необходимо задать newclass как вектор символов или строка строчных букв, которая представляет новый тип данных.

Например, чтобы преобразовать double значение к int8 тип данных, необходимо использовать b = cast(1.234,'int8'). Синтаксис функций b = cast(1.234,'Int8') теперь выдает ошибку.

Определение классов и пакетов: Используя schema.m не будет поддерживаться в будущем релизе

Все еще работает

Поддержка классов и пакетов, заданных с помощью schema.m файлы будут удалены в будущем релизе. Замените существующие основанные на схеме классы на классы, заданные с помощью classdef ключевое слово.

InexactCaseMatch и InexactCaseMatchForExtension Ошибки: Эти ошибки заменяются UndefinedFunction ошибка

Изменение поведения

InexactCaseMatch и InexactCaseMatchForExtension ошибки были удалены, и MATLAB выдает UndefinedFunction ошибка вместо этого. Это изменение не генерирует новые ошибки в коде, который ранее не выдавал ошибку.

Анализ данных

Вычислите Live Editor Группы Задачу: В интерактивном режиме обобщите, преобразуйте или отфильтруйте группы данных

Используйте Вычисление Live Editor Группы задача в интерактивном режиме вычислить статистику, преобразовать данные или данные о фильтре группой. Чтобы открыть задачу в Live Editor, используйте меню Task на вкладке Live Editor.

Нормируйте Live Editor Данных Задача: В интерактивном режиме сосредоточьте и масштабируйте данные

Используйте Нормировать Live Editor Данных задача визуализировать эффекты центрирования и масштабирования данных с помощью различных методов, таких как z - счет. Чтобы открыть задачу в Live Editor, используйте меню Task на вкладке Live Editor.

Чистый Пропавший Live Editor Данных Задача: Задайте отсутствующие значения

При использовании Чистого Пропавшего Live Editor Данных задача можно теперь задать индикаторы отсутствующего значения, которые отличаются от стандартных отсутствующих значений MATLAB.

trenddecomp Функция: Найдите тренды в данных

Используйте trenddecomp функционируйте, чтобы аддитивным образом разложить данные на долгосрочный тренд и сезонные тренды.

min и max Функции: Задайте метод сравнения для определения минимальных и максимальных значений

min и max функции теперь принимают 'ComparisonMethod' параметр, который задает метод для определения минимальных и максимальных значений входа при сохранении знака в выходе.

uniquetol Функция: Опции к выбору элемента управления и области значений заповедника данных

uniquetol имеет две новых опции, чтобы управлять поведением:

  • occurrence аргумент: Задайте, начинается ли алгоритм с самых высоких или самых низких элементов во входных данных. Это может измениться, какой элемент, среди нескольких, которые являются в допуске друг друга, выбран как являющийся уникальным. Значение по умолчанию должно начаться с самых низких элементов.

  • 'PreserveRange' аргумент значения имени: Задайте, должна ли область значений выходных данных совпасть с входными данными.

Функции Предварительной обработки данных: Задайте табличную переменную как вектор точек выборки

Когда вы работаете с табличными входными данными, следующие функции теперь позволяют вам задавать который переменная в таблице использовать с 'SamplePoints' параметр:

dateshift Функция: Переключите к следующему вхождению буднего или дня выходных дней

Можно теперь использовать 'weekday' и 'weekend' аргументы, чтобы переключить элементы datetime массив при использовании dateshift функция.

  • Переключать к следующему вхождению рабочего дня на или после каждого элемента входа datetime массив, используйте 'weekday'.

  • Переключать к следующему вхождению дня выходных дней на или после каждого элемента входа datetime массив, используйте 'weekend'.

isbetween Функция: Поддержка открытых, закрытых, и полуоткрытых интервалов

isbetween функционируйте теперь поддерживает открытые, закрытые, и полуоткрытые интервалы. В предыдущих релизах, isbetween поддержки только закрыли интервалы.

isregular Функция: поддержка datetime и duration типы данных

Можно теперь использовать isregular функция, чтобы определить, если расписание, datetime вектор или duration вектор является регулярным. В предыдущих релизах можно использовать isregular только на расписании.

istabular Функция: Определяет, является ли вход таблица или расписание

Чтобы определить, является ли входная переменная или таблицей или расписанием, используйте istabular функция.

Используя эту функцию эквивалентно использованию оператора tf = istable(A) || istimetable(A), но более удобно.

retime и synchronize Функции: Медиана и методы режима поддержаны

Когда вы синхронизируете данные в расписаниях, можно теперь задать 'median' и 'mode' когда агрегация функционирует. Для получения дополнительной информации смотрите retime и synchronize.

timeofday Функция: Возвратите дату как второй выходной аргумент

Можно теперь возвратить даты в элементы datetime массив как второй выходной аргумент от timeofday функция.

timeseries2timetable Функция: преобразуйте timeseries объекты к расписаниям

Преобразовывать timeseries объекты к расписаниям, используйте timeseries2timetable функция.

Функциональность, удаляемая или измененная

isordinal принимает входной параметр, который имеет любой тип данных

Изменение поведения

isordinal функция теперь принимает входной параметр, который имеет любой тип данных. В предыдущих релизах, isordinal выдал ошибку, если входным параметром не был categorical массив.

Live Editor Синхронизации Timetables задача синхронизирует неограниченное количество расписаний

Изменение поведения

Live Editor Синхронизации Timetables задача может теперь синхронизировать неограниченное количество расписаний. В предыдущих релизах задача может синхронизировать не больше, чем пять расписаний.

timeseries2timetable замены ts2timetable

Изменение поведения

timeseries2timetable функционируйте заменяет ts2timetable функция, несмотря на то, что ts2timetable все еще обеспечивается. Две функции являются синонимами. В R2021a обеспечивает MATLAB ts2timetable только.

Импорт и экспорт данных

sftp Функция: Свяжите с серверами SFTP

MATLAB может связать с серверами SFTP для передач зашифрованных данных. Создайте объект связи SFTP использование sftp функционируйте, чтобы считать данные из сервера SFTP.

Хранилища данных: задайте FileSet объекты как местоположения данных для некоторых хранилищ данных

Некоторые функции datastore и объекты принимают FileSet объекты как местоположения файлов, чтобы включать в datastore. FileSet объекты обеспечивают увеличенную эффективность по сравнению с путями к файлам или DsFileSet объекты. Эта функциональность поддерживается этими функциями:

  • tabularTextDatastore

  • spreadsheetDatastore

  • fileDatastore

  • keyValueDatastore

  • tallDatastore

  • parquetDatastore

  • imageDatastore

  • signalDatastore (Signal Processing Toolbox)

  • audioDatastore (Audio Toolbox)

  • mdfDatastore (Vehicle Network Toolbox)

Табличный Импорт: Считайте таблицы из документы Microsoft Word и HTML

readtable функционируйте теперь поддерживает таблицы чтения от HTML и Microsoft® Файлы Word.

Чтобы настроить настройки импорта для HTML и файлов Microsoft Word, используйте htmlImportOptions и wordDocumentImportOptions, соответственно. Чтобы автоматически обнаружить настройки импорта из файлов, используйте detectImportOptions функция.

Интерфейс HDF5: Используйте новую функциональность в поддержку HDF5 1.10.7

Используйте эти новые возможности интерфейсов функции MATLAB HDF5:

  • Single-Writer/Multiple-Reader (SWMR) — Запишите данные к файлу HDF5 в одном процессе, в то время как вы одновременно читаете из файла в одном или нескольких процессах читателя. Для получения дополнительной информации смотрите Рида и запись данных Одновременно Используя Single-Writer/Multiple-Reader (SWMR).

  • Виртуальный Набор данных (VDS) — Использование низкий уровень MATLAB взаимодействует через интерфейс, чтобы получить доступ к данным, хранимым через несколько файлов HDF5, включая файлы в удаленных местоположениях, как один, объединенный набор данных HDF5. Можно также считать данные, хранимые в Виртуальных Наборах данных с помощью высокоуровневого интерфейса HDF5. Для получения дополнительной информации смотрите работу с Виртуальными Наборами данных HDF5 (VDS).

  • Подстройка Кэша метаданных — Улучшает производительность путем управления параметрами кэша метаданных, такими как ограничение количества попыток чтения файла.

  • Частичный Фрагмент Ребра — Управление, отфильтровать ли частичные фрагменты ребра.

Интерфейс NetCDF: Считайте и запишите NC_STRING данные

Можно теперь использовать существующий высокий уровень и низкоуровневые функции, чтобы считать NC_STRING данные из NETCDF 4 файла и текстовые данные о записи как тип NC_STRING.

Для получения дополнительной информации об отображении типа данных между NetCDF API и MATLAB, см. Отображение синтаксиса NetCDF API к Синтаксису MATLAB.

Научные Библиотеки Формата файла: библиотеки HDF5 и NetCDF обновляются

Библиотека HDF5 обновляется до версии 1.10.7, и библиотека NetCDF обновляется до версии 4.7.4.

Аудио, Видео и Функции ввода-вывода Изображений: Запустите функции в основанной на потоке среде

Можно теперь запустить следующие функции в фоновом режиме с помощью MATLAB backgroundPool:

Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.

Библиотеки Формата Файла изображения: библиотека LibTIFF обновила до версии 4.2.0

Библиотека LibTIFF обновляется до версии 4.2.0.

Новый Serial Explorer и приложения TCP/IP Explorer

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

  • Приложение Serial Explorer обеспечивает пользовательский интерфейс, чтобы соединиться с и связаться с устройством последовательного порта на вашей машине.

  • Приложение TCP/IP Explorer обеспечивает пользовательский интерфейс, чтобы создать клиент TCP/IP, который связывается с сервером TCP/IP.

Запустите эти приложения от вкладки Apps под разделом Test and Measurement. Можно также вызвать serialExplorer и tcpipExplorer команды в Командном окне.

Можно использовать приложения, чтобы выполнить следующие операции на устройстве последовательного порта или клиенте TCP/IP.

  • Сконфигурируйте свойства связи и коммуникации.

  • Запишите двоичный файл или представьте данные в виде строки.

  • Считайте двоичный файл или представьте данные в виде строки.

  • Отобразите данные на графике в отдельном окне рисунка.

  • Анализируйте данные путем просмотра его в приложении Signal Analyzer.

  • Экспортируйте данные в рабочее пространство MATLAB.

  • Сгенерируйте скрипт MATLAB для взаимодействий приложений, который использует serialport или tcpclient интерфейс.

Для получения дополнительной информации об этих приложениях, смотрите Serial Explorer и TCP/IP Explorer.

Функциональность, удаляемая или измененная

Видео и Функции ввода-вывода Изображений: различия в Пиксельном значении могут существовать между изображениями JPEG 2000 в R2021b и предыдущих версиях MATLAB

Изменение поведения

В R2021b, когда вы используете imreadimwriteVideoReader, или VideoWriter функции, чтобы читать или записать JPEG 2 000 файлов изображений, изображение вы импортируете или экспортируете в силе R2021b, имеют различия в пиксельном значении для того же изображения в предыдущих версиях MATLAB.

Интерфейс HDF5: пользователи Linux должны восстановить плагины фильтра с помощью совместно использованной библиотеки MATLAB HDF5 1.10.7

Изменение поведения

Начиная в R2021b, в определенных случаях, Linux® пользователи, использующие плагин фильтра с коллбэками к базовым библиотечным функциям HDF5, должны восстановить плагин с помощью совместно использованной библиотеки поставляющегося MATLAB HDF5 1.10.7, /matlab/bin/glnxa64/libhdf5.so.103.3.0. Если вы не восстанавливаете плагин с помощью этой версии разделяемой библиотеки, вы можете испытать проблемы в пределах от неопределенного поведения к катастрофическим отказам. Для получения дополнительной информации смотрите Сборку Плагины Фильтра HDF5 на Linux Используя MATLAB HDF5 Разделяемая Библиотека или Карта Экспорта GNU.

ftp Функция: FTPClientConfig класс, свойства и методы больше не поддерживаются

ftp функционируйте больше не поддерживает FTPClientConfig Apache™ класс или любые связанные объекты, свойства или методы. Настроить, как проанализировать LIST команда выход FTP-сервера использует ftp DirParserFcn функции аргумент значения имени.

Редактор переменной MATLAB: timeseries больше не будет поддерживаться в будущем релизе

Все еще работает

Просмотр timeseries объекты с помощью Редактора переменной MATLAB больше не будут поддерживаться в будущем релизе. Чтобы просмотреть индексированные временем данные в Редакторе переменных, использовать timetable вместо этого.

Математика

ode78 и ode89 Функции: старшие решатели Рунге-Кутта для обыкновенных дифференциальных уравнений

Пакет ODE MATLAB был расширен с двумя новыми решателями:

  • ode78 использует 7-й и 8-й порядок формулы Рунге-Кутта

  • ode89 использует 8-й и 9-й порядок формулы Рунге-Кутта

Новые решатели подробно останавливаются на существующих решателях Рунге-Кутта ode23 и ode45. В частности, ode78 и ode89 может быть более эффективным, чем ode45 на нежестких проблемах, которые являются гладкими, и ode89 может быть более эффективным, чем ode78 на очень сглаженных проблемах, когда вы объединяетесь на долговременных интервалах или когда допуски трудны.

pagesvd Функция: Выполните сингулярное разложение на страницах массивов N-D

Используйте pagesvd функция, чтобы выполнить обработанные в пакетном режиме сингулярные разложения на страницах массивов N-D. В этом контексте массив N-D обработан как контейнер для нескольких 2D матриц.

svd Функция: Опция, чтобы управлять выходным форматом сингулярных значений

svd имеет новую опцию outputFormat управлять, возвращены ли сингулярные значения как векторная или диагональная матрица.

mpower Функция: Улучшенный алгоритм для дефектных матриц

mpower функция имеет улучшенный алгоритм, чтобы обработать дефектные матрицы, повышенные до действительной мощности. В предыдущих релизах, mpower использует алгоритм на основе разложения собственного значения для этих входных параметров, которые могут возвратить неправильные результаты для дефектных матриц. Новый алгоритм для дефектных матриц вместо этого основан на разложении Шура.

Функциональность, удаляемая или измененная

svd, eig, cond, и pinv функции возвращают NaN для неличных входных параметров

Изменение поведения

В R2021b, svd, eig, cond, и pinv функции возвращают NaN значения, когда вход содержит неличные значения (Inf или NaN).

В предыдущих релизах эти функции выдают ошибку, когда вход содержит неличные значения.

Графика

Данные о Планшетном графопостроителе: Создайте графики рассеивания, пузырьковые диаграммы и графики роя передающими таблицами непосредственно к функциям построения графика

Создайте графики путем передачи таблицы непосредственно любой из этих функций: scatter, scatter3, bubblechart, bubblechart3, swarmchart, swarmchart3, polarscatter, и polarbubblechart. Когда вы задаете свои данные как таблицу, подписи по осям и легенда (если есть) автоматически помечены с помощью имен табличной переменной.

Объекты, возвращенные этими функциями, имеют новые свойства поддержать таблицы.

СвойствоОписание

SourceTable

Таблица, содержащая данные, чтобы построить

XVariableYVariable , и ZVariable

Табличные переменные, содержащие x, y, и z значения для Декартовых графиков

ThetaVariable и RVariable

Табличные переменные, содержащие угол и значения радиуса для графиков в полярной системе координат

SizeVariable

Табличная переменная, содержащая данные о размере маркера

ColorVariable

Табличная переменная, содержащая данные о цвете маркера

AlphaVariable

Табличная переменная, содержащая данные о прозрачности маркера

Например, составьте таблицу с переменными "Trials" и "Response". Передайте таблицу scatter функционируйте как первый аргумент и укажите на переменные, которые вы хотите построить по наименованию.

Trials = randi(10,50,1);
Response = rand(50,1);
t = table(Trials,Response);
scatter(t,"Trials","Response")

Scatter plot with x- and y-axis labels that reflect the table variable names.

Метки деления осей и Цвета: Управляйте внешним видом меток метки деления на оси и цветов метки в виде галочки

Теперь можно удалить отметки деления и настроить цвета метки в виде галочки независимо от других элементов в осях.

  • Удаление Отметок деления — Удаляет все отметки деления из оси, полярные оси или географический объект осей путем установки TickDir свойство к 'none'. Чтобы удалить отметки деления из определенной оси, например, x - ось, устанавливают TickDirection свойство линейки к 'none'.

  • Настройка Цветов Метки в виде галочки — Настраивает цвет меток в виде галочки на оси путем установки TickLabelColor свойство соответствующего объекта линейки. Можно настроить цвета метки в виде галочки для любых осей, полярных осей или географических осей.

Например, создайте столбчатую диаграмму, и затем получите текущую систему координат. Удалите x - метки метки деления на оси и измените цвет x - метки метки деления на оси к красному.

bar([2017 2018 2019 2020],1:4)
ax = gca;
ax.XAxis.TickDirection = 'none';
ax.XAxis.TickLabelColor = 'r';

Scatter plot with x-axis label and legend labels that reflect the table variable names.

Создайте График Живая Задача: Добавьте дополнительную визуализацию в сгенерированные графики

Легко добавьте дополнительную визуализацию в графики, сгенерированные с помощью Создать Графика Живая Задача. Чтобы добавить новый график, кликните по вкладке Add в нижней части Живой Панели Задачи и выберите визуализацию и данные. Эта Живая Задача построила график с помощью hold функция.

A Screen shot of the Create Plot Live Task showing a line plot of a sine wave in blue and a bubble plot of a cosine wave in orange.

Создайте График Живая Задача: Диаграмма управления ввела синтаксис с помощью выпадающей настройки

Создать График Живая Задача теперь поддерживает несколько настроек построения диаграммы функций с несколькими входными синтаксисами, включая surf и mesh. Используйте Configurations выпадающее меню, чтобы выбрать желаемую настройку.

A screenshot of the configuration drop-down menu for a surf plot

exportgraphics Функция: Получите и добавьте графику к существующему PDFs

Получите и добавьте графику к существующему файлу PDF путем вызова exportgraphics функция и установка 'Append' аргумент значения имени к true. Например, создайте график и экспортируйте его как PDF по имени 'mycharts.pdf'. Затем создайте столбчатую диаграмму и добавьте ее в конец 'mycharts.pdf'. Получившийся файл PDF имеет две страницы. Графики появляются в PDF в порядке, что вы экспортируете их.

plot([0 3 1 6 4 10])
exportgraphics(gca,'mycharts.pdf')
bar([10 20 30 40])
exportgraphics(gca,'mycharts.pdf','Append',true)

stackedplot Функция: Поддержка полулогарифмических осей Y

Можно создать графики с помощью stackedplot функционируйте, где отдельные оси Y могут быть построены на логарифмической шкале. Чтобы установить логарифмическую шкалу для оси Y графика, установите YScale свойство StackedAxesProperties объект сопоставлен с графиком. Для получения дополнительной информации смотрите StackedAxesProperties Properties.

Text Объекты: используйте editInteractions в Interactions свойство щелкнуть или коснуться на тексте, чтобы отредактировать

Щелкните или коснитесь, чтобы отредактировать текст когда Interactions свойство имеет значение editInteraction. Взаимодействие редактирования является поведением по умолчанию для title, subtitlexlabelYLabel , и zlabel текстовые объекты для осей, географических осей и полярных осей.

dataTipTextRow Функция: Настройте содержимое всплывающей подсказки использование свойств данных, таких как UserData

Можно теперь присвоить информацию DataTipTemplate свойство путем передачи его dataTipTextRow функционируйте как имя свойства, такое как UserData.

p = patch;
p.UserData = p.XData;
p.DataTipTemplate.DataTipRows(3) = dataTipTextRow('XDataAsUserData','UserData');

MATLAB Доступность Online™: Используйте программу экранного доступа, чтобы взаимодействовать с фигурами

В MATLAB Online™ можно использовать программу экранного доступа и команды клавиатуры к панорамированию, масштабировать и вращаться, когда вы работаете с отображенными на графике данными. Используя программу экранного доступа не поддерживается в Live Editor.

Для получения дополнительной информации смотрите Использование Программа экранного доступа в MATLAB Online.

Для получения дополнительной информации о взаимодействии с фигурами MATLAB смотрите Интерактивность Диаграммы управления.

Функциональность, удаляемая или измененная

print опции -opengl и -painters не рекомендуются

Все еще работает

Следующее print опции больше не рекомендуются. Нет никаких планов удалить значения, и они продолжат вести себя тот же путь как в предыдущих релизах. В следующей таблице перечислены рекомендуемые заменяющие опции.

Не рекомендуемыйЗаменяющая опция

-opengl опция средства отображения. Например:

print('-opengl','-dpdf','myfigure.pdf')

Используйте -image опция. Например:

print('-image','-dpdf','myfigure.pdf')

-painters опция средства отображения. Например:

print('-painters','-dpdf','myfigure.pdf')

Используйте -vector опция. Например:

print('-vector','-dpdf','myfigure.pdf')

plottools функции будут удалены в будущем релизе

Все еще работает

plottools описанные ниже функции будут удалены в будущем релизе. Используйте inspect запустить Property Inspector вместо этого.

plottools функции

Создание приложений

uialert, uiconfirm, и uiprogressdlg Функции: Повысьте текст и уравнения отображения в диалоговых окнах

Когда вы создаете диалоговые окна с помощью uialert, uiconfirm, и uiprogressdlg функции, включите разметку в тексте диалогового окна с помощью Interpreter аргумент значения имени. Задайте интерпретатор как 'html', 'latex', 'tex', или 'none'.

addStyle Функция: Добавьте стили в узлы и уровни в древовидном компоненте пользовательского интерфейса

Создайте стили для определенных древовидных узлов или древовидных уровней узла в древовидном компоненте пользовательского интерфейса использование uistyle и addStyle функции. Например, можно сделать древовидные узлы в верхнем уровне древовидного красного цвета с курсивным шрифтом. Чтобы получить информацию о прикладных стилях, запросите StyleConfigurations свойство Tree объект. Чтобы удалить стиль из дерева, используйте removeStyle функция.

uitable Функция: Установите и выборы таблицы запроса программно и управляйте табличными опциями выбора

Можно теперь сконфигурировать опции выбора компонентов таблицы UI.

  • Установите и запросите табличный выбор с помощью Selection свойство.

  • Задайте, может ли пользователь выбрать ячейки таблицы, строки или столбцы с помощью SelectionType свойство.

  • Задайте, может ли пользователь выбрать один или несколько табличных элементов с помощью Multiselect свойство.

  • Обновите свое приложение каждый раз, когда пользователь выбирает табличные данные путем определения SelectionChangedFcn 'callback'.

Опции выбора в компонентах таблицы UI поддерживаются только в приложениях App Designer и в цифрах созданный с uifigure функция.

Для получения дополнительной информации смотрите Свойства таблиц.

uitextarea Функция: приложения Программы, чтобы ответить, в то время как пользователь вводит в компоненте текстовой области

Можно теперь задать ValueChangingFcn коллбэк для TextArea компонент. Компонент выполняет функцию обратного вызова неоднократно, в то время как пользователь вводит в текстовой области.

Для получения дополнительной информации смотрите TextArea Properties.

Запустите Код в фоновом режиме: Используйте язык параллельного программирования, чтобы создать больше быстро реагирующих приложений

Можно теперь создать приложения, которые остаются быстро реагирующими при выполнении вычислений в фоновом режиме при помощи backgroundPool.

Используйте фоновый пул со следующим языком параллельного программирования:

Для получения дополнительной информации смотрите Использование Фон, чтобы Сделать Ваши Приложения Более быстро реагирующими.

Дизайнер приложений: Отладьте код в Представлении кода

При отладке кода в App Designer теперь можно диагностировать проблемы с помощью управления отладкой в Code View. Можно использовать средства управления в разделе Run вкладки Editor, чтобы запуститься к следующей точке останова, запустить следующую строку кода или шаг в или из функции.

Debugging controls in App Designer. There are five buttons: Continue, Step, Step In, Step Out, and Stop.

Можно также отладить код приложения с помощью встроенного управления отладкой. Например, чтобы запуститься к определенной строке кода и затем сделать паузу, нажмитеrun to here кнопку слева от линии. Чтобы продвинуться в функцию, нажмитеstep in кнопку непосредственно слева от функции, в которую вы хотите продвинуться. После вступания нажмитеstep out кнопку наверху файла, чтобы запустить остальную часть вызванной функции, оставить вызванную функцию, и затем сделать паузу.

Когда вы продвигаетесь в вызванную функцию или файл, App Designer отображает список стилей навигационной цепочки функций MATLAB, выполняемый прежде, чем сделать паузу в текущей линии (также названный стеком вызовов функции). Стек вызовов функции показывают наверху файла и отображает функции в порядке, начиная слева с первого названного скрипта или функции, и заканчиваясь справа текущим скриптом или функцией, в которой приостановлен MATLAB.

Bread-crumb style function call stack showing the two functions called, displayed left to right. The first function is plotRand the second function is mean. The step out button displays to the right of the function call stack.

Дизайнер приложений: Эффективно управляйте своим кодом приложения с инструментами и ярлыками от Live Editor

Многие инструменты и ярлыки для навигации и организации кода, которые доступны в Live Editor, могут теперь использоваться в App Designer Code View. Эта таблица приводит функциональность, которая в новинку для App Designer.

ФункциональностьПункт менюГорячая клавиша
Перенесите комментарий

Щелкните правой кнопкой по комментарию и выберите Wrap Comments, или во вкладке Editor, в разделе Code, нажмитеWrap comment кнопку.

Ctrl+J
Переместитесь по коду с помощью закладок

Во вкладке Editor, в разделе Navigate, нажимают Bookmark. Затем выберите Bookmark, чтобы установить или очистить закладку на текущей линии или выбрать Previous или Next, чтобы перейти между существующими закладками.

Drop-down with bookmark options

Установите или очистите закладку: Ctrl+F2
Перемещение к предыдущей закладке: Shift+F2
Переместитесь, чтобы затем отметить F2
Распечатайте код приложения

Во вкладке Editor, в разделе File, нажимают Print. Можно распечатать целый документ или текущий выбор.

App designer print options menu.

Ctrl+P
Сверните и расширьте код

Во вкладке View нажмите кнопки в разделе Code Folding.

Code folding options to expand, collapse, expand all, or collapse all.

Расширьте текущий сгиб: Ctrl+Shift+Period (.)
Сверните текущий сгиб: Ctrl+Period (.)
Расширьте все сгибы: Ctrl+Shift+Comma (,)
Сверните все сгибы: Ctrl+Comma (,)
Переключите настройки отображения

Во вкладке View, в разделе Display, переключаются выделение линии и номера строки.

App Designer display options. The options are: Highlight Current Line, Line Numbers, and Datatips.

N/A
Дублирующаяся линияЩелкните правой кнопкой по линии и выберите Duplicate Line(s). Ctrl+Shift+C
Вставьте разрыв разделаЩелкните правой кнопкой по линии и выберите Section Break.Ctrl+Alt+Enter или тип %%
Преобразуйте текст в верхний регистр или нижний регистрПодсветите текст, щелкните правой кнопкой по нему и выберите Change Case.Ctrl+Shift+A
Переменная переименовывает

Когда вы переименовываете переменную, App Designer дает вам опцию, чтобы автоматически обновить все другие экземпляры переменной в вашем коде.

Tooltip prompting variable renaming in App Designer

Shift+Enter
Вопросы совместимости

Код, сворачивающийся в App Designer, сохраняется даже после того, как вы закроете и затем вновь откроете файл. В R2021a и более ранних релизах, при открытии файла, App Designer расширяет весь код.

Дизайнер приложений: В интерактивном режиме измените уровень изменения масштаба холста и подходящий холст, чтобы просмотреть

В Design View используйте средства управления изменением масштаба в правом нижнем углу холста App Designer, обозначенногоZoom icon кнопкой, чтобы изменить уровень изменения масштаба холста.

Чтобы автоматически масштабировать, чтобы приспособить целое приложение в представлении, нажмите Space. В качестве альтернативы нажмите Fit to View в разделе Zoom вкладки View, или щелкните правой кнопкой по холсту и выберите Zoom> Fit to View.

Дизайнер приложений: Преобразуйте между подобными компонентами пользовательского интерфейса

Чтобы преобразовать один тип компонента пользовательского интерфейса другому со схожей функциональностью, щелкните правой кнопкой по компоненту по холсту или в Component Browser и выберите Replace With. Затем выберите компонент, чтобы преобразовать в. Заменение одного компонента с другим сохраняет соответствующие значения свойств, такие как свойства шрифта и коллбэки, которые существуют для обоих компонентов. Можно преобразовать типы компонента в каждом из этих семейств:

  • Числовое поле редактирования, счетчик, ползунок и кнопка

  • Поле редактирования и текстовая область

  • Метка и гиперссылка

Дизайнер приложений: Добавьте текст справки для своего приложения

Можно теперь обеспечить справку для приложений, которые вы создаете. Текст справки появляется в Командном окне, когда пользователь приложения вызывает help функционируйте и задает имя приложения.

Чтобы добавить текст справки, во вкладке Editor в Code View, нажимают App Help Text. Используйте диалоговое окно App Help Text, чтобы задать сводные данные приложения и подробное объяснение.

Кроме того, когда пользователь приложения просматривает документацию для вашего приложения (например, путем вызова doc функционируйте или путем нажатия на ссылку на документацию в тексте справки для приложения), страница документации теперь отображает дополнительную информацию:

  • Начало страницы отображает сводные данные приложения и подробное объяснение.

  • Раздел Methods Summary отображает публичные функции. Для каждой функции это также отображает любой комментарий, который вставляется после функционального оператора определения.

Дизайнер приложений: Удалите поведение автообратного течения из приложения с автообратным течением

Чтобы преобразовать приложение с автообратным течением к приложению без автообратного течения, во вкладке Canvas в Design View, нажимают Convert. Выберите опцию App without Auto-Reflow. Выполнение так создает копию вашего приложения с удаленным поведением автообратного течения.

Для получения дополнительной информации см. Приложения с Автообратным течением.

Развернутые Веб-приложения: Разверните веб-приложения непосредственно в MATLAB Web App Server из App Designer

Если вам установили MATLAB Compiler™ в системе рабочий MATLAB, группируете ваше приложение MATLAB в веб-приложение из App Designer путем нажатия на Share во вкладке Designer и выбора Web App. В упаковочном диалоговом окне задайте сервер URL, чтобы непосредственно развернуть ваше веб-приложение в сервер, если упаковка завершена. Аутентификация должна быть позволена на сервере для этого работать. Для получения дополнительной информации смотрите Аутентификацию (MATLAB Web App Server).

Среда тестирования приложения: Выполните жесты нажатия на осях и осях пользовательского интерфейса с различными типами выбора

Среда тестирования приложения теперь поддерживает типы выбора мыши в press жесты, которые выполняются на осях пользовательского интерфейса и осях. Например, создайте оси с графиком и затем протестируйте дважды кликать жест в точке (3, 2).

f = uifigure;
ax = axes(f);
plot(ax,1:10)
tc = matlab.uitest.TestCase.forInteractiveUse;
tc.press(ax,[3 2],'SelectionType','open')

Среда тестирования приложения: Выполните перетаскивают жесты на осях и фигурах с различными типами выбора

Начиная в R2021b, среда тестирования приложения поддерживает drag жесты на фигурах пользовательского интерфейса. Кроме того, когда вы тестируете жест перетаскивания на оси, оси пользовательского интерфейса или фигура пользовательского интерфейса, можно задать тип выбора мыши. Например, создайте фигуру и тормозите его от точки (100, 200) к точке (200, 300) использование жеста щелчка правой кнопкой.

f = uifigure;
tc = matlab.uitest.TestCase.forInteractiveUse;
tc.drag(f,[100 200],[200 300],'SelectionType','alt')

Среда тестирования приложения: Используйте любые единицы измерения в жестах в центре компонентов

Начиная в R2021b, когда вы выполняете жест в центре компонента, компонент или его родительские контейнеры могут использовать любые единицы измерения. В предыдущих релизах среда не поддерживает контейнеры тот непиксель использования модули.

Например, создайте фигуру и установите его Units свойство к 'normalized'. Затем создайте панель на рисунке и нажмите в центре панели.

f = uifigure;
f.Units = 'normalized';
p = uipanel(f);
tc = matlab.uitest.TestCase.forInteractiveUse;
tc.press(p)

Если вы выполняете жест в центре компонента с помощью синтаксиса, который принимает местоположение как вход (например, press(testcase,comp,location)), затем фигура или родительские контейнеры могут использовать только 'pixels' как их единицы измерения.

Функциональность, удаляемая или измененная

Ctrl+Click выбирает и отменяет выбор ячеек в компоненте таблицы UI

Изменение поведения

В таблицах, составленных с помощью uitable функция, можно выбрать и отменить выбор ячеек таблицы, состоящих из нескольких несмежных участков, путем содержания Ctrl и нажатия на ячейку. В R2021a и более ранних релизах, Ctrl+Click дает особое внимание на ячейку, и Shift+Click выбирает ячейку, которая фокусируется.

Организация панели инструментов App Designer изменилась

Изменение поведения

Организация инструментов в панели инструментов App Designer в Design View и Code View изменилась.

В Design View используйте инструменты во вкладке Canvas, чтобы разметить ваше приложение и использовать инструменты во вкладке View, чтобы управлять вашими настройками Design View.

В Code View используйте инструменты во вкладке Editor, чтобы программировать ваше поведение приложения и запустить и отладить ваше приложение и использовать инструменты во вкладке View, чтобы управлять вашими настройками Code View.

matlab.fonts.editor.codefont.Size установка была удалена

Ошибки

matlab.fonts.editor.codefont.Size установка была удалена. Используйте matlab.fonts.codefont.Size установка вместо этого. matlab.fonts.codefont.Size установка управляет и размером шрифта Code View App Designer и настольным размером шрифта кода.

Чтобы обновить ваш код, измените экземпляры установки matlab.fonts.editor.codefont.Size к matlab.fonts.codefont.Size. Для получения дополнительной информации см. matlab.fonts Настройки.

App Designer Умный Отступ применяется к отдельным линиям

Изменение поведения

Когда вы применяете Умный Отступ к коду в App Designer, изменение добавления отступа применяется только к текущей линии. В R2021a и более ранних релизах, Умная опция Отступа применилась к целому документу.

Чтобы применить Умный Отступ к целому документу, в Code View, сначала выбирают весь код (например, путем нажатия Ctrl+A). Затем примените Умный Отступ путем нажатияSmart indent кнопки во вкладке Editor или нажатия Ctrl+I.

CellSelectionCallback в свойстве компонентов таблицы UI не рекомендуют uifigure- основанные приложения

Все еще работает

Запуск в R2021b, использование CellSelectionCallback свойство программировать ответ на табличный выбор не рекомендуется для компонентов таблицы UI в приложениях App Designer и в цифрах созданный с uifigure функция. Используйте SelectionChangedFcn свойство вместо этого.

Чтобы обновить ваш код, присвойте все функции обратного вызова, присвоенные CellSelectionCallback свойство к SelectionChangedFcn свойство вместо этого. Если функция обратного вызова получает доступ к данным о событиях коллбэка, вы можете должны быть обновить имена свойства события. Например, чтобы получить доступ к индексам элементов выбранный пользователь, используйте Selection свойство TableSelectionChangedData объект. Для получения дополнительной информации смотрите Свойства таблиц.

Производительность

table Индексация Типа данных: Улучшенная производительность при присвоении элементов путем индексирования с фигурными скобками

table преобразованное в нижний индекс присвоение с помощью фигурных скобок значительно быстрее в R2021b, чем в R2021a.

Например, когда вы присваиваете в три табличных переменные с 106 элементы, эффективность в R2021b приблизительно 4.4x быстрее, как показано ниже.

function timingTest()
    t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1));
    indices = randi(1e6,1,10000);

    tic;
    % Assign row vector of random values to randomly chosen row
    for i = indices
        t{i,:} = rand(1,3);
    end
    toc
end

Аппроксимированные времена выполнения:

R2021a: 7,4 с

R2021b: 1,7 с

Код был синхронизирован в системе Windows 10 с Intel на 3,6 ГГц Xeon W-2133 CPU путем вызова timingTest функция в R2021a и R2021b.

qrinsert и qrdelete Функции: QR-факторизации изменения Улучшенной производительности

qrinsert и qrdelete функции показывают улучшенной производительности вставляющие и удаляющие строки и столбцы в QR-факторизации. Ускорение является самым примечательным для квадратных матриц порядка 1000 или меньше и является подобным в величине для обеих строк и столбцов.

Например, этот код использует цикл, чтобы вставить и удалить столбцы из QR-факторизации случайного 200 200 матрица. qrinsert и qrdelete о 12x быстрее, чем в предыдущем релизе.

function timingQRMod
X = rand(200);
[Q,R] = qr(X);
y = rand(200,1);
tic
for k = 1:1000
    [Qn,Rn] = qrinsert(Q,R,100,y);
end
toc
tic
for k = 1:1000
    [Qn,Rn] = qrdelete(Q,R,100);
end
toc
end

Аппроксимированные времена выполнения:

R2021a: 1,7 с (вставка) и 1,2 с (удаление)

R2021b: 0,15 с (вставка) и 0,10 с (удаление)

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызова timingQRMod функция.

Заголовки и подписи в Графиках: Улучшенная производительность при создании и запросе заголовков или меток в цикле

Создание и запрос следующих типов заголовков и меток в цикле имеют улучшенную производительность.

  • Постройте заголовки, такие как созданные с title или subtitle функции

  • Подписи по осям, такие как созданные с xlabel, ylabel, или zlabel функции

Например, этот код создает 100 осей с заголовками в мозаичном размещении графика. Это запускается 11.9x быстрее, чем в предыдущем релизе:

function timingTitle
tiledlayout(10,10);
for n = 1:100
    nexttile
    title(n)
end
end

Аппроксимированные времена выполнения:

R2021a: 9,5 с

R2021b: 0,8 с

Код был синхронизирован на Windows 10, Intel Xeon CPU E5-1650 v4 система тестирования на 3,60 ГГц путем вызова timeit функция:

timeit(@timingTitle)

Увеличение производительности увеличивается с количеством осей, заголовков и подписей по осям, с которыми вы работаете. Например, эта таблица показывает улучшения для цикличного выполнения более чем 10, 20, 50, и 100 осей с заголовками.

Количество осей с заголовкамиУвеличение производительности
102.5x
204.2x
507.0x
10011.9x

Взаимодействия графика: Улучшенная производительность для рендеринга всплывающих подсказок и вращения графиков рассеивания больших наборов данных

В цифрах созданный с uifigure функционируйте и в MATLAB Online™, взаимодействия с графиками рассеивания больших наборов данных имеют следующие повышения производительности:

  • Маркеры всплывающей подсказки отслеживают движение мыши более тесно.

  • 3-D точечные графики являются более быстро реагирующими к жестам вращения.

Это улучшение видно, когда оси создаются с любым axes или uiaxes функция.

Например, на Windows 10, Intel Xeon CPU E5-1650 v4 система на 3,60 ГГц, когда вы наводите курсор на следующую сферу, изменения курсора в перекрестии более быстро и маркеры всплывающей подсказки, отслеживает курсор более тесно. Когда вы перетаскиваете курсор в осях, сфера вращается более быстро и отслеживает курсор более тесно.

f = uifigure;
ax = axes(f);
[X,Y,Z] = sphere(900);
scatter3(ax,X(:),Y(:),Z(:),[],Z(:),".")

Two spheres created with approximately 800,000 scattered points. The first sphere shows a data tip and its marker, and the second shows the cursor in rotation mode.

Графики в Приложениях: Улучшенная производительность для создания графиков

Производительность улучшается для создания графиков в приложениях или в цифрах созданный с uifigure функция. Например, создайте фигуру и объект осей. Затем постройте 10 000 точек. Этот код запускается 14x быстрее в R2021b.

function timingPlot
% Create figure and axes
f = uifigure;
ax = axes(f);
drawnow;

% Create data vector
y = rand(1,10000);

% Plot the data
tic;
plot(ax,y);
toc;
end

Аппроксимированные времена выполнения:

R2021a: 0,14 с

R2021b: 0,01 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызова timingPlot функция.

Дизайнер приложений: Улучшенная производительность при открытии начальной страницы и загрузке приложений

Когда вы используете App Designer, эти операции имеют улучшенную производительность:

  • Открытие начальной страницы App Designer

  • Открытие существующего приложения

Например, вводный App Designer путем ввода appdesigner в загрузках Командного окна начальная страница приблизительно 1.8x быстрее в R2021b, чем в R2021a в первый раз это открыто, и 2.1x быстрее в последующие времена. Аппроксимированные времена запуска:

РелизПервый запускПоследующие стартапы
R2021a6,6 с3,6 с
R2021b3,6 с1,7 с

Кроме того, загрузка приложения в App Designer показывает улучшенную производительность. Например, после создания и сохранения нового пустого приложения, открывая приложение в App Designer о 1.3x быстрее в R2021b, чем в R2021a. Аппроксимированные времена загрузки:

R2021a: 1,98 с

R2021b: 1,56 с

Повышение производительности больше, если вам установили дополнительные тулбоксы.

Эти операции были синхронизированы на Windows 10, центральный процессор Intel Core™ i7-5600 система тестирования на 2,60 ГГц.

Дизайнер приложений: Улучшенная производительность при сохранении приложений

Сохранение приложений в App Designer после того, как вы отредактируете функцию приложения или свойство, быстрее в R2021b, чем в R2021a. Чем больше строк кода в файле приложения, тем больше повышение производительности становится.

Например, на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц, в приложении, содержащем 10 000 строк кода, если вы нажимаете Property , чтобы создать новое свойство и затем нажать Save , чтобы сохранить приложение, можно запустить обновленное приложение раньше в R2021b, чем в R2021a.

Аппроксимированные времена сохранения:

R2021a: 20 с

R2021b: 1,5 с

Инструмент сравнения: Улучшенная производительность, загружая и сохранив файлы MLAPP

Когда вы используете Инструмент Сравнения, чтобы сравнить и объединить изменения между кодом приложения в файлах MLAPP, эти операции имеют улучшенную производительность:

  • Загрузка файлов в Инструмент Сравнения

  • Сохранив файлы после слияния изменений

Например, если вы загружаете два приложения с 5 000 строк кода в Инструмент Сравнения путем нажатия на Compare в панели инструментов App Designer, можно сравнить и объединить файлы раньше в R2021b, чем в R2021a.

Аппроксимированные времена загрузки:

R2021a: 13 с

R2021b: 8 с

Кроме того, если вы используете Инструмент Сравнения, чтобы объединить изменения между двумя приложениями с 5 000 строк кода (например, путем нажатия на Merge Mode , слияния изменений, и затем нажатия на Save Result ), можно сравнить сохраненные файлы раньше в R2021b, чем в R2021a.

Аппроксимированные времена сохранения:

R2021a: 24 с

R2021b: 8 с

Обе из этих операций были синхронизированы на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц.

uigridlayout Функция: Улучшенная производительность при добавлении компонентов, охватывающих несколько столбцов с 'fit' width

Эффективность порождения компонентов менеджеру по размещению сетки создала использование uigridlayout функция улучшилась, когда компоненты охватывают несколько столбцов с ColumnWidth значение 'fit'. Повышение производительности поправляется как количество компонентов, охватывающих несколько столбцов, и количество столбцов охватило увеличения.

Например, этот код создает менеджера по размещению сетки с 10 столбцами с ColumnWidth значение 'fit', и затем создает 50 меток, которые охватывают все 10 столбцов. Эффективность в R2021b о 4.7x быстрее, чем в R2021a.

function timingGridLayout
f = uifigure;
numrows = 50;
numcols = 10;
g = uigridlayout(f);
g.Scrollable = 'on';
g.RowHeight = repmat({'fit'},1,numrows);
g.ColumnWidth = repmat({'fit'},1,numcols);
drawnow

tic
for row = 1:numrows
    txt = ['This is a label in row ' num2str(row) ' that spans ' ...
        num2str(numcols) ' columns in the grid.'];
    lbl = uilabel(g,'Text',txt);
    lbl.Layout.Column = [1 numcols];
end
drawnow
toc
end

Аппроксимированные времена выполнения:

R2021a: 5,2 с

R2021b: 1,1 с

Код был синхронизирован на Windows 10, Intel Xeon CPU E5-1650 v4 система тестирования на 3,60 ГГц путем вызова функционального timingGridLayout.

uigridlayout Функция: Улучшаемая производительность изменения размеров, когда обтекающий текст в столбцах изменяемого размера

Эффективность, когда вы изменяете размер приложений, содержащих менеджера по размещению сетки, создала использование uigridlayout функция улучшилась, когда оба из этих условий содержат:

  • Менеджер по размещению сетки содержит компонент с WordWrap значение 'on'.

  • Строка и столбец, содержащая компонент с переходом на новую строку, имеет RowHeight из 'fit' и ColumnWidth это изменяемого размера, таково как '1x'.

Например, на Windows 10, Intel Xeon CPU E5-1650 v4 система тестирования на 3,60 ГГц, если вы создаете 100 меток с обтекающим текстом в менеджере по размещению сетки с подходящими строками высоты и столбцами изменяемого размера, и затем изменяете размер окна рисунка путем перетаскивания угла фигуры, текста метки, настраивает, чтобы соответствовать размеру фигуры почти сразу. В R2021a существует задержка приблизительно 2 секунд, прежде чем текст настроит.

f = uifigure;
g = uigridlayout(f);
g.ColumnWidth = {'1x'};
numrows = 100;
g.RowHeight = repmat({'fit'},numrows,1);
 
for row = 1:numrows
c = uilabel(g);
c.Text = ['Lorem ipsum dolor sit amet, consectetur adipiscing elit,' ...
' sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'];
c.WordWrap = 'on';
end

Two figure windows with labels with wrapping text. The right window is a resized version of the left window, where the wrapped label text takes up an additional row.

Live Editor: Улучшенная производительность при сохранении live скриптов или функций

Сохранение live скриптов и live функций в Live Editor быстрее в R2021b, чем в R2021a. Улучшение является самым примечательным, когда вы сохраняете live функции больше чем с 1 000 строк кода и live скрипты меньше чем с 100 строками кода.

Например, на Windows 10, Intel Xeon E5-1650 CPU система тестирования на 3,60 ГГц, сохраняя live функцию в качестве примера, содержащую 4 000 строк кода, занимает приблизительно 2,05 секунды в R2021b. В R2021a, сохраняя ту же live функцию занимает приблизительно 2,57 секунды.

Диалоговые окна Обработки данных: Улучшаемая производительность изменения размеров

Пользовательский интерфейс Basic Fitting, Data Statistics UI, Редактор Палитры и Соединенное диалоговое окно Источников данных Графика теперь используют uigridlayout управлять положениями компонентов пользовательского интерфейса. Это изменение приводит к более сглаженному опыту при корректировке размера этих диалоговых окон. Для получения дополнительной информации о Data Statistics UI, смотрите Вычисление с Описательной статистикой.

Например, на Windows 10, Intel Xeon E5-1650 CPU система тестирования на 3,60 ГГц, когда вы увеличиваете размер Colormap Editor, размер, изменяется гладко.

Взаимодействия фигуры: Улучшенная производительность при использовании встроенных взаимодействий осей

Производительность взаимодействий фигуры улучшалась путем объединения встроенных взаимодействий осей так, чтобы значительно было меньше взаимодействий к процессу. Эти изменения делают взаимодействие с графиком более сглаженным и уменьшают задержку между входом и ответом.

Например, на Windows 10, Intel Xeon E5-1650 CPU система тестирования на 3,60 ГГц, в то время как panInteraction режим активен, когда вы перетаскиваете курсор в осях панорамирования фигуры более быстро, и отслеживает курсор более тесно.

Фигуры пользовательского интерфейса: Улучшенная производительность при отображении панели инструментов осей

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

Например, на Windows 10, Intel Xeon E5-1650 CPU система тестирования на 3,60 ГГц, когда вы приостанавливаете курсор на осях, панель инструментов осей, появляется более быстро.

Фигуры пользовательского интерфейса: Улучшенная производительность при взаимодействии с соединенными осями

Взаимодействие с соединенными осями имеет улучшенную производительность при использовании фигур, созданных с uifigure функция или фигуры создали в MATLAB Online™.

Инструменты разработки программного обеспечения

Проекты: Сотрудничайте с помощью проектов в MATLAB Online

Начиная в R2021b, MATLAB Online оказывает поддержку для основных рабочих процессов проектов:

  • Создайте пустой проект и добавьте файлы и папки.

  • Клонируйте проект от Git™.

  • Исследуйте свой проект и запустите анализ зависимостей.

  • Создайте проект и управляйте своими файлами проекта программно.

Система контроля версий: Работа с файлами под Git в MATLAB Online

Начиная в R2021b, MATLAB Online оказывает поддержку для основных рабочих процессов Git:

  • Клонирование удаленного репозитория Git

  • Передача файлов к Git

  • Получение по запросу, продвигая, и выбирающие файлы с Git

Среда Модульного тестирования: используйте TestCase шаблон класса, чтобы создать тесты более быстро и точно

Можно теперь создать TestCase класс, включая функциональность базового теста, в MATLAB и MATLAB Online. Чтобы создать новый тестовый класс, выберите New> Test Class на Home, Editor или вкладках Live Editor.

Используйте TestCase шаблон класса, чтобы создать тесты более удобно. Шаблон включает TestClassSetup methods блокируйтесь, TestMethodSetup methods блокируйтесь, и Test methods блокируйтесь, который задает простой Test метод. Чтобы настроить ваш тестовый класс, добавьте код в файл или удалите неиспользованный код, который включен по умолчанию. Для получения дополнительной информации об основанных на классах тестах, смотрите Создание модульных тестов на основе классов в MATLAB.

Среда Модульного тестирования: Запустите живо-функциональные тесты в интерактивном режиме в MATLAB Online

Начиная в R2021b, можно запустить живо-функциональные тесты в интерактивном режиме в MATLAB Online. Когда вы открываете файл MLX, задающий функциональный тест в MATLAB Online, панель инструментов позволяет вам запустить все тесты в файле или только текущем тесте.

Чтобы запустить тесты и настроить ваш тестовый прогон в интерактивном режиме, используйте раздел Run Tests во вкладке Live Editor панели инструментов. Для получения дополнительной информации смотрите Запущенные Тесты в Редакторе.

Среда тестирования приложения: Выполните жесты нажатия на осях и осях пользовательского интерфейса с различными типами выбора

Среда тестирования приложения теперь поддерживает типы выбора мыши в press жесты, которые выполняются на осях пользовательского интерфейса и осях. Например, создайте оси с графиком и затем протестируйте дважды кликать жест в точке (3, 2).

f = uifigure;
ax = axes(f);
plot(ax,1:10)
tc = matlab.uitest.TestCase.forInteractiveUse;
tc.press(ax,[3 2],'SelectionType','open')

Среда тестирования приложения: Выполните перетаскивают жесты на осях и фигурах с различными типами выбора

Начиная в R2021b, среда тестирования приложения поддерживает drag жесты на фигурах пользовательского интерфейса. Кроме того, когда вы тестируете жест перетаскивания на оси, оси пользовательского интерфейса или фигура пользовательского интерфейса, можно задать тип выбора мыши. Например, создайте фигуру и тормозите его от точки (100, 200) к точке (200, 300) использование жеста щелчка правой кнопкой.

f = uifigure;
tc = matlab.uitest.TestCase.forInteractiveUse;
tc.drag(f,[100 200],[200 300],'SelectionType','alt')

Среда тестирования приложения: Используйте любые единицы измерения в жестах в центре компонентов

Начиная в R2021b, когда вы выполняете жест в центре компонента, компонент или его родительские контейнеры могут использовать любые единицы измерения. В предыдущих релизах среда не поддерживает контейнеры тот непиксель использования модули.

Например, создайте фигуру и установите его Units свойство к 'normalized'. Затем создайте панель на рисунке и нажмите в центре панели.

f = uifigure;
f.Units = 'normalized';
p = uipanel(f);
tc = matlab.uitest.TestCase.forInteractiveUse;
tc.press(p)

Если вы выполняете жест в центре компонента с помощью синтаксиса, который принимает местоположение как вход (например, press(testcase,comp,location)), затем фигура или родительские контейнеры могут использовать только 'pixels' как их единицы измерения.

Функциональность, удаляемая или измененная

Определение diagnostic после аргументов name-value в проверках не рекомендуется

Все еще работает

Запуск в R2021b, когда вы тестируете на равенство с помощью verifyEqualassumeEqualassertEqual, или fatalAssertEqual методы, задавая аргументы name-value перед diagnostic входной параметр не рекомендуется. Поместите аргументы name-value после всех позиционных параметров вместо этого. Несмотря на то, что не рекомендуемый, все еще можно задать diagnostic после аргументов name-value, когда эти аргументы используют name,value синтаксис.

Причина этого изменения состоит в том, что, запускающийся в R2021a, MATLAB поддерживает новый синтаксис для передающих аргументов name-value. В новом синтаксисе имя и аргументы значения соединяются, равняется знаку (name=value), и имя не заключено в кавычки. Чтобы использовать новый синтаксис с методами проверки, задайте позиционные параметры, включая diagnostic, перед name=value аргументы. Если вы задаете diagnostic после name=value аргументы, MATLAB производит ошибку.

Эта таблица показывает пример того, как можно обновить код.

R2021a и ранееЗапуск в R2021b
testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyEqual(testCase,1.5,2, ...
    "RelTol",0.1,"Difference must be within relative tolerance.")
assumeEqual(testCase,1,2, ...
    "AbsTol",0.5,"Difference must be within absolute tolerance.")
testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyEqual(testCase,1.5,2, ...
    "Difference must be within relative tolerance.",RelTol=0.1)
assumeEqual(testCase,1,2, ...
    "Difference must be within absolute tolerance.",AbsTol=0.5)

Для получения дополнительной информации смотрите verifyEqual.

matlab.unittest.TestSuite.fromProject игнорирует файлы, которые не задают процедуры тестирования при создании тестового набора

Изменение поведения

Запуск в R2021b, если проект включает файлы с Test классификация, matlab.unittest.TestSuite.fromProject игнорирует файлы, которые не задают процедуры тестирования, когда вы создаете тестовый набор. Например, если абстрактный TestCase файл определения класса помечен Test классификация, fromProject игнорирует его. В предыдущих релизах MATLAB производит ошибку если fromProject называется на проекте, который использует Test классификация для любых файлов кроме конкретных тестовых файлов. С этим изменением, fromProject становится сопоставимым с matlab.unittest.TestSuite.fromFolder метод: оба метода создают тестовый набор из всех конкретных тестовых файлов и игнорируют любые другие файлы в папке.

Это изменение поведения также применяется testsuite, runtests, и runperf функции, когда они работают с кодом, организованным в файлы и папки в рамках проекта.

Тестовые наборы, созданные из проектов, не могут запуститься без программного обеспечения Java Virtual Machine (JVM)

Изменение поведения

Запуск в R2021b, если вы запускаете MATLAB без Java® Программное обеспечение Virtual Machine (JVM™) и создает набор из тестовых файлов в использовании проекта testsuite, функция использует matlab.unittest.TestSuite.fromProject метод, чтобы создать набор. Если вы затем пытаетесь запустить тестовый набор без программного обеспечения JVM, MATLAB производит ошибку, потому что проект не может быть открыт без программного обеспечения JVM. В предыдущих релизах, когда MATLAB запускается без программного обеспечения JVM, testsuite использование matlab.unittest.TestSuite.fromFolder создать набор из тестовых файлов в проекте и среду тестирования запускает получившийся тестовый набор.

Это изменение поведения также применяется runtests и runperf функции, когда они работают с кодом, организованным в файлы и папки в рамках проекта.

Интерфейсы к внешним языкам

Интерфейс C++: Поддержка функций языка C++

Интерфейс C++ поддерживает эти дополнительные функции языка C++.

Поддержка void** параметры

MATLAB возвращает void* аргумент для void** параметры. Для получения дополнительной информации смотрите пусто ** Типы Входного параметра. Для получения информации об управлении памятью void** параметры, смотрите Владение Передачи Памяти MATLAB.

char [] параметры ведут себя как char * параметры

MATLAB поддерживает char[] параметры или как целое число или как символ (строка), то же самое как char* параметры. Аналогично, Unicode® типы wchar_t[], char16_t[], и char32_t[] ведите себя как wchar_t*, char16_t*, и char32_t*. Для получения дополнительной информации смотрите char C++* и char [] Типы.

Поддержка статических элементов данных

Общедоступный статический и общедоступный const статические элементы данных обработан как свойства только для чтения в MATLAB. Вы не можете изменить значение C++ статический элемент данных в MATLAB. Для получения дополнительной информации смотрите Статические Элементы данных.

Можно использовать общедоступный статический элемент данных (свойство) в качестве типа данных входного параметра или возвратить тип в конструкторе класса, методе или функции. Также можно использовать статическое свойство или метод, чтобы задать форму аргумента. Для получения информации об использовании статических свойств задать форму, смотрите Свойство Использования или Метод как SHAPE.

Интерфейс C++: опции Издателя

Интерфейс C++ поддерживает эти функции конфигурации сборки.

Перезапишите существующие файлы определения библиотеки

Издатели могут автоматически перезаписать существующее определение библиотеки MLX файлы при вызове clibgen.generateLibraryDefinition. Установите аргумент значения имени OverwriteExistingDefinitionFiles на true. Эта опция полезна, когда вы создаете и изменяете файл определения для библиотеки libname.

Когда вы используете эту опцию, MATLAB удаляет definelibname.mlx и definelibnameM, включая любые редактирования вы сделали к файлам.

Опции для определения аргументов

  • По умолчанию, когда вход MATLAB имеет меньше размерностей, чем соответствующий аргумент C++, затем MATLAB вставляет одноэлементные размерности в начале Shape аргумент. Для получения дополнительной информации смотрите, что Размерность Соответствует. Чтобы вставить одноэлементные размерности в конце, установите 'AddTrailingSingletons' аргумент значения имени к true в defineArgument функции - defineArgument (ConstructorDefinition), defineArgument (FunctionDefinition), и defineArgument (MethodDefinition).

  • Если функции C++ использовали параметр символьного массива, чтобы возвратить строку C++, можно задать аргумент так, чтобы функция возвратила отключенную пустым указателем строку. Используйте 'NumElementsInBuffer' аргумент значения имени в defineArgument (FunctionDefinition) или defineArgument (MethodDefinition) функции. Для примера смотрите getMessage функция в таблице Define String Argument.

  • Можно передать владение памяти о функции или параметров метода двойного типа указателя со скалярным выходом к MATLAB с помощью аргумента значения имени DeleteFcn. Для получения дополнительной информации смотрите defineArgument (FunctionDefinition) и defineArgument (MethodDefinition).

  • MATLAB позволяет вам управлять пожизненным управлением объектами, созданными с конструктором путем определения аргумента значения имени ReleaseOnCall в файле определения библиотеки. Для получения дополнительной информации смотрите defineArgument (ConstructorDefinition) и пожизненное управление объектами C++ в MATLAB.

  • Можно использовать метод или свойство задать форму аргумента. Для получения дополнительной информации смотрите Свойство Использования или Метод как SHAPE.

  • Можно передать владение MATLAB памяти о двойных входных параметрах указателя void** и object**. Используйте 'DeleteFcn' аргумент значения имени для defineArgument, как описано во Владении Передачи Памяти MATLAB.

Интерфейс Java: Задайте путь JRE для MATLAB

Можно запустить MATLAB с версией системы среды выполнения Java (JRE™). Для получения информации о версиях Java, совместимых с MATLAB, смотрите Интерфейсы MATLAB на Другие Языки.

Чтобы установить путь JRE в MATLAB, вызвать jenv. Необходимо перезапустить MATLAB, чтобы использовать обновленный путь. Это наборы команд путь для всех будущих сеансов работы с MATLAB, но не изменяет путь для других приложений на вашем компьютере.

В качестве альтернативы можно установить путь от подсказки операционной системы. Вызвать matlab_jenv, затем запустите MATLAB.

Java: Вызовите в MATLAB из программы Java, вызванной MATLAB

Java-разработчики могут использовать com.mathworks.engine.MatlabEngine API getCurrentMatlab метод, чтобы перезвонить в MATLAB из Java. Слияние этого метода в вашем приложении позволяет пользователям MATLAB вызывать функциональность из вашей программы Java.

Для получения информации о разработке этих программ Java смотрите, Перезванивают в MATLAB из Java.

Интерфейс Python: Запустите команды Python и скрипты из MATLAB

pyrun и pyrunfile функции позволяют вам вызвать Python® команды и скрипты из MATLAB. Для получения дополнительной информации смотрите Непосредственно Вызов Функциональность Python из MATLAB

Python: Поддержка комплексных многомерных массивов

Поддержки MATLAB, передающие комплексные данные о многомерном массиве Python и от Python до MATLAB, и для незавершенных и для режимов выполнения из процесса. ​, Например, создайте файл test.py содержа этот код:

def returnData(data):
   return data

Передать комплексный массив MATLAB returnDataВвод:

mc = complex(magic(3));
c = py.test.returnData(mc)
c = 
  Python memoryview:

   8.0000 + 0.0000i   1.0000 + 0.0000i   6.0000 + 0.0000i
   3.0000 + 0.0000i   5.0000 + 0.0000i   7.0000 + 0.0000i
   4.0000 + 0.0000i   9.0000 + 0.0000i   2.0000 + 0.0000i

    Use details function to view the properties of the Python object.

    Use double function to convert to a MATLAB array.

Чтобы преобразовать возвращаемое значение в массив MATLAB, введите:

C = double(c)
C = 3×3 complex    
   8.0000 + 0.0000i   1.0000 + 0.0000i   6.0000 + 0.0000i
   3.0000 + 0.0000i   5.0000 + 0.0000i   7.0000 + 0.0000i
   4.0000 + 0.0000i   9.0000 + 0.0000i   2.0000 + 0.0000i

Для получения информации о MATLAB к отображению типа данных Python см. Матрицы Передачи и Многомерные массивы к Python.

Python: поддержка Версии 3.9

MATLAB теперь поддерживает CPython 3.9, в дополнение к существующей поддержке 2,7, 3.7, и 3.8. Для получения дополнительной информации смотрите Версии Python, Совместимого с продуктами MATLAB Релизом

Документы веб-сервисов WSDL: Apache поддержка версии 3.4.2 CXF

MATLAB поддерживает Apache версия 3.4.2 CXF для использования с веб-сервисами WSDL. Для получения дополнительной информации смотрите Настроенные Инструменты WSDL.

Вопросы совместимости

Загрузите релиз последней версии 3.4.2 инструмента Apache CXF от https://cxf.apache.org / загрузка.

Perl 5.32.1: поддержка MATLAB на Windows

С R2021b MATLAB на Windows поставляется с обновленной версией Perl, версии 5.32.1. См. https://www.perl.org для стандартного распределения Perl, исходного кода Perl и информации об использовании Perl.

Вопросы совместимости

Если вы используете perl команда на платформах Windows, см. https://www.perl.org для получения информации об использовании этой версии языка программирования Perl.

Функциональность, удаляемая или измененная

name=value синтаксические ошибки для вызовов функций Python с помощью py. префикс

Изменение поведения

Начиная в R2021b, ошибки MATLAB, когда вы используете name=value синтаксис для передающих аргументов ключевого слова к функциям Python с помощью py. префикс. В R2021a MATLAB может тихо дать неправильный ответ. Использование pyargs передать аргументы ключевого слова.

Например, print Python функция имеет аргумент sep ключевого слова. Этот оператор Python устанавливает sep аргумент к запятой, сопровождаемой пробелом:

print('comma','separated','values',sep=', ')

Когда вы вызываете этот оператор в MATLAB, MATLAB интерпретирует sep=', ' как name=value аргумент:

py.print('comma','separated','values',sep=', ')
Поведение R2021aПоведение R2021bКак обновить ваш код

py.print(...
    'comma','separated','values',...
    sep=', ')
Тихий неправильный ответ:
comma separated values sep , 

py.print(...
    'comma','separated','values',...
    sep=', ')
Ошибка:
Error using py.print 
Using name=value format is not supported. 
Use pyargs to pass keyword arguments

py.print(...
    'comma','separated','values',...
    pyargs(sep=', '))
comma, separated, values

createSoapMessage, callSoapService, и parseSoapResponse были удалены

Ошибки

Рассмотреть использование matlab.wsdl.createWSDLClient вместо createSoapMessage, callSoapService, и parseSoapResponse функции, чтобы связаться с веб-сервисами с помощью простого протокола доступа к объектам (SOAP). Нет никакой прямой функциональной замены для функций SOAP, но когда вы создаете интерфейс WSDL, у вас есть доступ к функциональности веб-сервиса.

createClassFromWsdl был удален

Ошибки

matlab.wsdl.createWSDLClient функционируйте заменяет createClassFromWsdl функция, чтобы связаться с веб-сервисами из MATLAB с помощью Языка описания веб-сервисов (WSDL). matlab.wsdl.createWSDLClient включает, чтобы указать дополнительную информацию необходимо было получить доступ к документу WSDL. Для получения дополнительной информации смотрите weboptions.

Начать использовать matlab.wsdl.createWSDLClient, выполните эти шаги.

  1. Загрузите поддерживаемые версии Java JDK™ и Apache программы CXF. Для получения дополнительной информации смотрите Настроенные Инструменты WSDL.

  2. Установите пути к этим программам, где jdk путь к установке JDK и cxf путь к программе CXF.

    matlab.wsdl.setWSDLToolPath('JDK',jdk,'CXF',cxf)

Чтобы обновить ваш код, замените вызовы createClassFromWsdl с вызовами matlab.wsdl.createWSDLClient. Например, для веб-сервиса с этим URL:

url = 'https://examplesite.com/samplewebservice';

замените этот вызов createClassFromWsdl:

createClassFromWsdl(strcat(url,'?WSDL'))

с:

matlab.wsdl.createWSDLClient(url)

Примечание

matlab.wsdl.createWSDLClient не поддерживает закодированные RPC документы WSDL.

Аппаратная поддержка

Соединитесь и Управление плата Arduino с помощью Приложения Arduino Explorer

Пакет поддержки MATLAB для Arduino® Оборудование теперь имеет приложение Arduino Explorer.

Используя это приложение, вы можете:

  • Настройте плату Arduino

  • Соединитесь с платой Arduino по USB, Bluetooth®, и WiFi

  • Сконфигурируйте, читайте из и запишите в контакты Arduino

  • Визуализируйте данные из контактов Arduino

  • Запишите и сохраните данные от контактов Arduino до рабочего пространства MATLAB

  • Анализируйте записанные данные

  • Сгенерируйте эквивалентный код MATLAB

Считайте данные из датчика APDS9960, соединенного с оборудованием Arduino

Пакет поддержки MATLAB для Оборудования Arduino позволяет вам считать жест, близость, свет clear и цвет (RGB) данные из APDS9960 датчик соединяется с оборудованием Arduino.

Поддержка CAN экранирует на Оборудовании Raspberry Pi

Используйте Пакет поддержки MATLAB для Оборудования Raspberry Pi™, чтобы считать и записать сообщения CAN из сети CAN на оборудовании Raspberry Pi.

R2021a

Новые возможности, исправления ошибок, Вопросы совместимости

Среда

Live Editor Контролс: Создайте динамические средства управления в live скриптах путем соединения переменных с выпадающими элементами и значениями ползунка

При добавлении выпадающего списка в live скрипт можно заполнить элементы в нем с помощью значений, сохраненных в переменной. При добавлении ползунка можно задать минимум, максимум и переменные использования значений шага.

Например, создайте live скрипт и задайте переменную lastnames это содержит список фамилий.

lastnames = ["Houston","Vega","Obrien","Potter","Rivera","Hanson","Fowler","Tran","Briggs"];

Запустите live скрипт, чтобы создать lastnames и добавьте его в рабочую область. Затем перейдите к вкладке Live Editor, и в разделе Code, выберите Control> Drop Down. В разделе Items меню конфигурации управления выберите lastnames как Variable.

Drop-down list configuration menu with the lastnames variable selected and the lists of item labels and item values populated with the variable values.

Закройте меню конфигурации, чтобы возвратиться к live скрипту. Выпадающий список теперь содержит фамилии, заданные в lastnames.

Drop-down list containing a list of 8 last names.

Если вы добавляете, удаляете или редактируете значения в lastnames, элементы в выпадающем списке обновляются соответственно.

Для получения дополнительной информации смотрите, Добавляют Интерактивные управления к Live Script.

Live Editor Фонтс: Поменяйте имя, стиль, размер и цвет шрифтов программно с помощью настроек

Можно поменять имя, стиль, размер и цвет заголовков, заголовков, текста и кода в настройках использования Live Editor.

Например, этот код изменяет цвет и стиль заголовков в Live Editor:

s = settings;
s.matlab.fonts.editor.title.Style.PersonalValue = {'bold'};
s.matlab.fonts.editor.title.Color.PersonalValue = [0 0 255 1]; 

Этот код увеличивает размер и изменяет шрифт обычного текста в Live Editor:

s = settings;
s.matlab.fonts.editor.normal.Size.PersonalValue = 20;
s.matlab.fonts.editor.normal.Name.PersonalValue = 'Calibri';

Live Editor обновляет все открытые live скрипты и live функции, чтобы показать выбранные шрифты. Когда вы создаете новые live скрипты или функции, они используют новые шрифты также.

live script with a title that is blue and bold, and a line of normal text in calibri size twenty font

Для получения дополнительной информации см. matlab.fonts.

Live Editor Дисплей: Задайте где к отображаемому выводу по умолчанию

Можно изменить местоположение по умолчанию для выхода в новом live скрипте. В зависимости от этой настройки новые live скрипты, которые вы создаете, отображают свой встроенный вывод или справа. Чтобы изменить значение по умолчанию, перейдите к вкладке Home, и в разделе Environment, выберите Preferences. Выберите MATLAB> Editor / Debugger> Display, и затем выберите опцию для Live Editor default view:

  • Output on right — Выведите отображения справа от кода. Каждый выход отображается рядом с линией, которая создает его. Эта опция идеальна когда написание кода.

  • Output inline — Выведите отображения, встроенные с кодом. Каждый выход отображается под линией, которая создает его. Эта опция идеальна для совместного использования.

Live Editor Фанкшнс: Запустите live функции в интерактивном режиме с помощью кнопки Run в MATLAB Online

В MATLAB Online можно теперь запустить live функции в интерактивном режиме с помощью кнопки Run.

Чтобы запустить live функции, которые требуют значений входного параметра или любой другой дополнительной настройки, сконфигурируйте кнопку Run путем нажатия на Rundrop-down arrow и добавления одной или нескольких команд. Для получения дополнительной информации о конфигурировании кнопки Run, смотрите, Конфигурируют кнопку Run для Функций.

Live Editor Букмаркс: Перейдите быстро между линиями

Чтобы перейти быстро между линиями, установите закладки в своих live скриптах или live функциях. Закладки особенно полезны в длинных файлах, когда часто необходимо перемещаться между разделами.

Чтобы установить закладку, поместите курсор на линию, на которой вы хотите установить его. Затем перейдите к вкладке Live Editor и, в разделе Navigate, нажмите Bookmark. Значок закладки появляется слева от линии. Чтобы очистить закладку, с курсором на линии с закладкой, нажимают Bookmark drop-down arrow и выбирают Set/Clear. Также можно очистить закладку путем нажатия на значок закладки слева от линии.

Чтобы перейти к закладке, перейдите к вкладке Live Editor, и в разделе Navigate, нажмите Bookmark drop-down arrow. Затем выберите Previous или Next.

Для получения дополнительной информации о навигации в файлах, смотрите Перейти к Местоположение в Файле.

Средства управления Воспроизведением анимации Live Editor: Интерактивный интерфейс, чтобы управлять анимациями

Управление воспроизведением теперь появляется в рамках окна рисунка после того, как анимация будет сделана, вопроизводя. Это управление воспроизведением обеспечивает способность воспроизвести анимацию и исследовать отдельные системы координат, не имея необходимость повторно выполнять целый live скрипт. Средства управления воспроизведением анимации не поддерживаются для анимаций, сгенерированных movie функция.

Live Editor Перформэнс: Улучшенная производительность при сохранении больших live скриптов или функций

При сохранении больших live скриптов или функций, можно продолжить использовать Live Editor раньше в R2021a, чем в R2020b. В то время как вы продолжаете использовать Live Editor, MATLAB сохранил файл в фоновом режиме. Когда MATLAB закончил сохранить файл, звездочка (*) рядом с именем файла исчезает, указывая, что файл сохранен.

Например, на Windows 10, Intel Xeon E5-1650 CPU система тестирования на 3,60 ГГц, если вы сохраняете live скрипт, содержащий 35 000 строк кода, и затем кликаете по строке заголовка другого документа, открытого в Live Editor, MATLAB сразу, переключается на другой открытый документ. В R2020b существует значимая задержка, прежде чем MATLAB переключится на другой открытый документ.

Браузер документации: Просмотрите веб-документацию по умолчанию

Начиная в R2021a, когда вы запускаете MATLAB с интернет-соединением, Браузер документации отображает веб-документацию по умолчанию. Когда вы запускаете MATLAB в системе без интернет-соединения, или если ваше интернет-соединение становится недоступным, Браузер документации отображает установленную документацию вместо этого.

Чтобы изменить местоположение документации по умолчанию, на вкладке Home, в разделе Environment, нажимают Preferences. Выберите MATLAB> Help и измените Documentation Location. Для получения дополнительной информации смотрите Настройки Справки.

Документация: Просмотрите документацию MATLAB на французском, итальянском и немецком языке

Подмножество документации MATLAB на французском, итальянском и немецком языке имеется в сети к лицензированным пользователям MATLAB. Только подмножество полной документации доступно. Для получения дополнительной информации см. Переведенную Документацию.

MATLAB Drive: Получите местоположение своей корневой папки MATLAB Drive программно

Можно получить местоположение корневой папки MATLAB Drive™ программно, с помощью matlabdrive команда, с вашего рабочего стола или в других средах MATLAB, таких как MATLAB Online. Например, если вам установили Коннектор MATLAB Drive в вашей настольной системе, MATLAB возвращает местоположение вашего MATLAB Drive:

path = matlabdrive
path = 
    'C:\Users\username\MATLAB Drive'

Функциональность, удаляемая или измененная

Изображения PNG в документации сжаты

Изменение поведения

Начиная в R2021a, все изображения PNG, включенные в документацию, сжаты, уменьшая их сохраненный размер на диске. Сжатые изображения должны быть визуально идентичны оригинальным изображениям.

Язык и программирование

Синтаксис Name=Value: Используйте name=value синтаксис для передающих аргументов name-value

MATLAB поддерживает новый синтаксис для передающих аргументов name-value. В новом синтаксисе имя и аргументы значения соединяются знаком "равно", и имя не заключено в кавычки.

Синтаксис Name=value: plot(x,y,LineWidth=2)

Разделенный от запятой синтаксис: plot(x,y,"LineWidth",2)

MATLAB продолжает поддерживать разделенный от запятой name,value синтаксис. Существующие функции и методы поддерживают оба синтаксиса и процесс для записи, что функции и методы с аргументами name-value неизменны.

Используйте новый синтаксис, чтобы помочь идентифицировать аргументы name-value для функций и отличить имена от значений в списках аргументов name-value. Существуют некоторые ограничения на где и как name=value синтаксис может использоваться:

  • Методические рекомендации должны использовать только один синтаксис в любом вызове заданной функции. Однако, если вы действительно смешиваете name=value и name,value синтаксисы в одном вызове, всем name=value аргументы должны появиться после name,value аргументы. Например, plot(x,y,"Color","red",LineWidth=2) допустимая комбинация, но plot(x,y,Color="red","LineWidth",2) ошибки.

  • Точно так же name=value аргументы должны появиться после всех позиционных параметров. Вызов myFunction(name=value,posArgument) ошибки.

  • name=value синтаксис может только использоваться непосредственно в вызовах функции. Они не могут быть перенесены в массив ячеек или дополнительные круглые скобки. Вызов myFunction(a,(name=value)) ошибки.

Получение формата отображения: format функция может добраться и формат дисплея аппарата

format функция может теперь вывести текущий формат отображения Командного окна. Вызов format с выходной переменной возвращает DisplayFormatOptions объект, который описывает текущие форматы числового и межстрочного интервала:

fmt = format
fmt = 
   DisplayFormatOptions with properties:

         NumericFormat: "shortE"
           LineSpacing: "loose"

Можно также использовать DisplayFormatOptions возразите как вход против format изменить формат отображения.

Получение disp Вывод : используйте formattedDisplayText функционируйте, чтобы сохранить disp выведите как строка

formattedDisplayText получает выход disp(obj) как строка. Функция также позволяет вам управлять форматированием полученной строки, включая числовой формат и межстрочный интервал. Например, A вектор, содержащий три логических значения. formattedDisplayText отображает векторные элементы как слова, “верные” или “ложные”:

out = formattedDisplayText(A,"UseTrueFalseForLogical",true)
  out = 
        '   true     false    true
      '

Виртуальное хранилище файлов: mkdir и rmdir теперь сможет создать и удалить файлы из директорий VFS

Начиная в R2021a, rmdir и mkdir могут создать папки в удаленных местоположениях.

Валидация Аргумента функции: Отладчик и профилировщик теперь поддерживаются

Отладчик MATLAB теперь будет применим в arguments блоки функций. При отладке arguments блокируйтесь рабочая область только для чтения. Профилировщик MATLAB теперь запишет линии в блоках аргументов.

Средство просмотра Диаграммы классов: Создайте графические диаграммы классов, чтобы исследовать детали класса и проекты доли

Используйте инструмент Class Diagram Viewer, чтобы создать графические диаграммы классов, включая детали, такие как:

  • Отношения наследования, включая абстрактные классы, mixins, и множественные наследования

  • Списки свойств, методы и события

  • Уровни доступа члена класса

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

Используйте связанный matlab.diagram.ClassViewer класс для доступа к командной строке к схемам.

Сравнения перечисления: используйте isequal сравнить члены перечисления с типами данных text

Классы перечисления теперь имеют реализацию по умолчанию isequal метод. Можно использовать isequal сравнить члены перечисления с векторами символов, строками, и массивами ячеек из символьных векторов или строками. Для получения дополнительной информации смотрите isequal Метод.

ПримерПредыдущий результатРезультат R2021Примечания
function myfun(pi) 
   eval('pi') 
end 

>> myfun 
ans =  

3.1416 
Ошибки

MATLAB разрешает pi как переменная в функциональной рабочей области, таким образом, myfun теперь ошибки, когда pi не задан.

function myfun 
   disp(pi)  
   eval('pi = 1'); 
end 

>> myfun 
3.1416 

pi = 

1 
Тот же выход, но предупреждает о присвоении.

MATLAB разрешает pi как переменная в функциональной рабочей области.

В будущем релизе, myfun ошибки. Это новое поведение сопоставимо с обработкой следующего кода:

function myfun 
   disp(pi)  
   pi = 1; 
end 
% assignLocal.m script: 
local = 1;  

% myfun.m file with local function: 
function myfun 
   local() 
   assignLocal  
   eval("local") 
end 
function local 
   disp("local fx") 
end 

% function call: 
>> myfun 
local fx  

local = 
1 
Тот же выход, но предупреждает о присвоении.

В будущем релизе MATLAB даст приоритет как описано в Порядке приоритета функций. В этом примере приоритет переходит к локальной функции. Это новое поведение сопоставимо с обработкой следующего кода:

function myfun 
   local() 
   assignLocal 
   local() 
end 

eval функция: проверка Контекста, чтобы разрешить идентификаторы

MATLAB теперь разрешает идентификаторы как имена переменных в eval оператор с помощью дополнительного контекста. Например, MATLAB распознает когда вызов eval использует переменную, объявленную в функции.

Вопросы совместимости

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

Код, который предупреждает запуск в R2021a, будет ошибка в будущем релизе.

ПримерПредыдущий результатРезультат R2021Примечания
function myfun(pi) 
   eval('pi') 
end 

>> myfun 
ans =  

3.1416 
Ошибки

MATLAB разрешает pi как переменная в функциональной рабочей области, таким образом, myfun теперь ошибки, когда pi не задан.

function myfun 
   disp(pi)  
   eval('pi = 1'); 
end 

>> myfun 
3.1416 

pi = 

1 
Тот же выход, но предупреждает о присвоении.

MATLAB разрешает pi как переменная в функциональной рабочей области.

В будущем релизе, myfun ошибки. Это новое поведение сопоставимо с обработкой следующего кода:

function myfun 
   disp(pi)  
   pi = 1; 
end 
% assignLocal.m script: 
local = 1;  

% myfun.m file with local function: 
function myfun 
   local() 
   assignLocal  
   eval("local") 
end 
function local 
   disp("local fx") 
end 

% function call: 
>> myfun 
local fx  

local = 
1 
Тот же выход, но предупреждает о присвоении.

В будущем релизе MATLAB даст приоритет как описано в Порядке приоритета функций. В этом примере приоритет переходит к локальной функции. Это новое поведение сопоставимо с обработкой следующего кода:

function myfun 
   local() 
   assignLocal 
   local() 
end 

Функциональность, удаляемая или измененная

format без аргументов не рекомендуется

Все еще работает

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

format

Для более ясного кода явным образом задайте default стиль.

format default

Определение классов и пакетов: Используя schema.m не будет поддерживаться в будущем релизе

Все еще работает

Поддержка классов и пакетов, заданных с помощью schema.m файлы будут удалены в будущем релизе. Замените существующие основанные на схеме классы на классы, заданные с помощью classdef ключевое слово.

compose не принимает недопустимое шестнадцатеричное значение, восьмеричное значение или запаздывающую обратную косую черту

Ошибки

Ранее, когда formatSpec введите, чтобы сочинить содержавший недопустимое шестнадцатеричное значение, восьмеричное значение или запаздывающая обратная косая черта, это выдало бы предупреждение и обрезало бы выход при недопустимом значении. Начиная в R2021a, MATLAB выдаст ошибку вместо этого. С этим изменением сочините, будет ошибка для всего недопустимого formatSpec входные параметры.

Используя get и set получить доступ или изменить формат отображения не рекомендуются

Все еще работает

Используя get и set программно получить доступ или изменить формат цифрового дисплея и интервал строки дисплея не рекомендуются. Используйте настройки вместо этого. Например:

s = settings;
myformat = s.matlab.commandwindow.NumericFormat.ActiveValue
myformat =
    'short'
s.matlab.commandwindow.DisplayLineSpacing.TemporaryValue = 'compact';
myspacing = s.matlab.commandwindow.DisplayLineSpacing.ActiveValue
myspacing =
    'compact'

Для получения дополнительной информации см. matlab.commandwindow Настройки.

Используя feature('EightyColumns') получить доступ и изменить ширину отображения Командного окна не рекомендуются

Все еще работает

Используя команду feature('EightyColumns') или функция ('EightyColumns', value) программно определить или измениться, включен ли предел ширины отображения Командного окна, не рекомендуются. Используйте настройки вместо этого. Например:

s = settings;
s.matlab.commandwindow.UseEightyColumnDisplayWidth.TemporaryValue = 1;
limitwidth = s.matlab.commandwindow.UseEightyColumnDisplayWidth.ActiveValue
limitwidth =
  logical
   0

Для получения дополнительной информации см. matlab.commandwindow Настройки.

Анализ данных

Данные, Предварительно обрабатывающие Задачи Live Editor: Работайте с несколькими табличными переменными и задайте выходной формат для табличного входа

Когда вы работаете с данными в таблице или расписании, эти задачи Live Editor теперь позволяют вам работать с несколькими табличными переменными одновременно:

Можно также выбрать который переменная отобразиться при визуализации результатов.

Кроме того, задачи, которые изменяют переменные, предоставляют новые выходные возможности. Можно возвратить таблицу со всеми переменными, или только с переменными, которые были изменены. Для задач, которые возвращают логические массивы, можно задать размер выхода. Размер может совпадать с размером входной таблицы или таблицы, содержащей только переменные, которые использовались в вычислении.

Чистый Live Editor Данных о Выбросе Задача: Визуализируйте результаты с гистограммой

Чистый Live Editor Данных о Выбросе задача теперь предлагает графики гистограммы для большинства методов обнаружения. Гистограмма может обобщить входные данные, выбросы, убранные данные с выбросами, заполненными, и пороги определения выбросов, и сосредоточить значение.

fillmissing Функция: Задайте пользовательский метод заполнения

Можно теперь задать пользовательский метод для заполнения отсутствующих значений при использовании fillmissing функция. Задайте пользовательский метод как указатель на функцию.

normalize Функция: Нормируйте несколько наборов данных теми же параметрами

normalize может теперь возвратить центрирование, и значения масштабного коэффициента раньше выполняли нормализацию. Можно снова использовать эти параметры, чтобы нормировать последующие наборы данных таким же образом. Например, можно нормировать массив данных A и затем нормируйте второй массив B теми же параметрами:

[Anorm,C,S] = normalize(A);
Bnorm = normalize(B,'center',C,'scale',S);

Новые выходные параметры C и S содержите центрирование и значения масштабного коэффициента, соответственно. Так, чтобы можно было легко снова использовать их на более позднем шаге нормализации, можно также теперь задать 'center' и 'scale' методы нормализации одновременно. Это только два метода нормализации, которые можно задать вместе.

Далее поддерживать эти изменения, когда method 'center' или 'scale', возможные значения methodtype теперь включайте массивы и таблицы. В то время как они methodtype значения предназначаются, чтобы работать с новыми выходными параметрами C и S, также можно вычислить собственные параметры нормализации, чтобы задать.

groupcounts Функция: Отобразите проценты количеств группы

groupcounts теперь информация об отображениях о проценте каждое количество группы представляет.

  • Для входных параметров таблицы и расписания, groupcounts автоматически отображает проценты, представленные каждым количеством группы в выходной таблице.

  • Для входных параметров массивов, groupcounts имеет новый третий выходной аргумент, чтобы возвратить проценты, представленные каждым количеством группы.

Вопросы совместимости

Когда groupcounts работает с данными в таблице или расписании, выход содержит дополнительную табличную переменную для процентов. Проценты находятся в области значений [0 100] и включены в табличную переменную Percent.

Любой код, что ссылки определенные табличные переменные незатронуты. Однако вы можете должны быть обновить код, который зависит от количества переменных в выходной таблице.

ts2timetable Функция: преобразуйте timeseries объекты к расписаниям

Преобразовывать timeseries объекты к расписаниям, используйте ts2timetable функция.

table и timetable Функции: Задайте имена размерности с помощью 'DimensionNames' аргумент значения имени

Когда вы составляете таблицы и расписания, можно задать их имена размерности при помощи 'DimensionNames' аргумент значения имени с этими функциями:

В предыдущих релизах вы могли поменять имена размерности только путем составления таблицы или расписания и затем изменения его DimensionNames свойство.

Функциональность, удаляемая или измененная

Табличные имена размерности не могут совпадать с зарезервированными именами

Изменение поведения

MATLAB повышает ошибку, если вы присваиваете имя размерности, которое совпадает с одним из этих зарезервированных имен: 'Properties''RowNames' Имена переменных, или ':'. В предыдущих релизах MATLAB повысил предупреждение и изменил имена размерности так, чтобы они отличались от зарезервированных имен.

Например, если вы составляете таблицу и затем присваиваете 'Properties' как имя размерности, результатом является ошибка.

T = array2table(magic(3));
T.Properties.DimensionNames = {'Rows','Properties'}

'SamplingRate' будет удален

Предупреждает

'SamplingRate' аргумент значения имени будет удален в будущем релизе. Используйте 'SampleRate' вместо этого. Соответствующее свойство расписания также называют SampleRate.

Для обратной совместимости все еще можно задать 'SamplingRate' как имя аргумента значения имени. Однако значение присвоено SampleRate свойство.

Это изменение в поведении влияет на функции расписания, показанные в списке:

Импорт и экспорт данных

XML-файлы: Считайте, запишите и импортируйте XML-файлы с помощью readtable, readtimetable, и другие функции

readtablewritetable, readtimetable, writetimetable, и detectImportOptions функции теперь поддерживают чтение и запись XML-файлов. Этот список обрисовывает в общих чертах добавленные возможности каждой функции.

  • readtable и readtimetable — Считайте данные XML в MATLAB как таблица или расписание. Можно задать дополнительные аргументы name-value, чтобы управлять как readtable и readtimetable обработайте данные XML. Например, задайте ‘ImportAttributes’,false проигнорировать узлы атрибута.

  • writetable и writetimetable — Запишите таблицу или расписание в MATLAB к XML-файлу. Задайте дополнительные аргументы name-value, чтобы управлять как writetable и writetimetable обработайте данные XML. Например, задайте ‘AttributeSuffix','_att' указывать что все переменные таблицы или расписания с суффиксным '_att' должен быть записан как атрибуты в выходном XML-файле.

  • detectImportOptionsdetectImportOptions функционируйте теперь возвращает XMLImportOptions возразите, когда вы вызовете его на XML-файле. Его поведение, когда вы вызываете его на других типах файлов, не изменилось. Используйте XMLImportOptions объект с readtable настроить настройки импорта. Например:

    • Импортируйте только подмножество данных с помощью SelectedVariableNames свойство.

    • Задайте имена и типы данных переменных во входном файле с помощью VariableNames и VariableTypes свойства.

    • Управляйте импортом определенных узлов в XML-файле с помощью аргументов name-value, таких как 'TableSelector', 'RowSelector', или 'VariableSelectors'.

Для получения дополнительной информации смотрите XMLImportOptions.

MATLAB API для Усовершенствованной обработки XML: Создайте, считайте, запишите, преобразуйте и запросите XML

Используйте MATLAB API для обработки XML (MAXP), чтобы разработать усовершенствованные приложения, которые создают, читают, пишут, преобразовывают и запрашивают XML-документы. MAXP состоит из этих пакетов:

  • matlab.io.xml.dom — Классы для создания, чтения и записи XML-файлов и строк в соответствии со стандартом W3C DOM.

  • matlab.io.xml.transform — Классы для преобразования XML-документов от одного типа до другого в соответствии со стандартом XSLT 1.0.

  • matlab.io.xml.xpath — Классы для запроса XML-документов с помощью выражений XPath 1.0.

XML-файлы: Укажите префиксы пространства имен XML для оценки выражений XPath с помощью readtable, readstruct, и другие функции

Используйте RegisteredNamespaces аргумент значения имени, чтобы задать префиксы пространства имен это readtable, readtimetable,readstruct, XMLImportOptions, и detectImportOptions используйте при оценке выражений XPath в XML-файле. RegisteredNamespaces может использоваться, когда вы также оцениваете выражение XPath, заданное селекторным аргументом значения имени, таким как StructSelector для readstruct, или VariableSelectors для readtable и readtimetable.

readstruct функция автоматически обнаруживает префиксы пространства имен, чтобы указать для использования в оценке XPath, но можно также указать новые префиксы пространства имен с помощью RegisteredNamespaces аргумент значения имени. Вы можете указать новый префикс пространства имен, когда узел XML имеет пространство имен URL, но никакой заявленный префикс пространства имен в XML-файле. В этом случае можно задать RegisteredNamespaces как массив строк, содержащий префикс пространства имен и связанный URL.

Например, оцените выражение XPath на XML-файле под названием example.xml который не содержит объявление префикса пространства имен. Задайте 'RegisteredNamespaces' как [“myprefix”, “https://www.mathworks.com”] присваивать префиксный myprefix к URL https://www.mathworks.com.

data = readstruct("example.xml", "StructSelector", "/myprefix:Data",...
 "RegisteredNamespaces", [“myprefix”, “https://www.mathworks.com”])

В получившейся структуре префикс пространства имен и URL появятся как атрибуты, принадлежащие элементу, указанному в StructSelector аргумент значения имени.

Низкоуровневые функции ввода-вывода файлов и удаленные данные: Выполните операции чтения и операции записи на удаленно хранивших файлах

Можно теперь использовать низкоуровневые функции ввода-вывода файлов, такой как fopen, fread, и fwrite, работать с файлами, хранившими в удаленных местоположениях. Некоторые поддерживаемые удаленные местоположения включают Amazon S3™ и Windows Azure® Устройство хранения данных блоба.

При чтении из или записи в удаленное местоположение, необходимо задать полный путь с помощью универсального локатора ресурса (URL). Например, откройте двоичный файл от облака Amazon S3.

fid = fopen(“s3://bucketname/path_to_file/example.bin”); 

Для получения дополнительной информации о подготовке MATLAB, чтобы получить доступ к вашему сервису оперативного хранения, смотрите работу с Удаленными данными.

save и load функции и удаленные данные: Сохраните, загрузите и добавьте данные к удаленно сохраненным v7.3 MAT-файлам

Можно теперь получить доступ к v7.3 MAT-файлам, сохраненным в удаленных местоположениях, таких как Amazon S3 и Windows Azure Blob Storage, с помощью save и load функции.

При сохранении, загружая или добавляя данные к удаленному местоположению, необходимо задать полный путь с помощью универсального локатора ресурса (URL). Например, загрузите MAT-файл от облака Amazon S3.

load(“s3:://bucketname/path_to_file/example.mat”);

Для получения дополнительной информации о подготовке MATLAB, чтобы получить доступ к вашему сервису оперативного хранения, смотрите работу с Удаленными данными.

Чтение Онлайновых Данных: Считайте файлы по HTTP и HTTPS с помощью readtableaudioread, и другие функции чтения

Считайте файлы из Интернета URL путем определения filename когда строка, которая содержит протокол, вводит 'http://' или 'https://'. Это позволяет вам считать данные из их первичных онлайновых источников.

Эта функциональность поддерживается этими функциями: audioreadaudioinfo, parquetread, parquetinforeadtable, readtimetable, readvars, readstruct, readmatrix, readcell, readlines, и detectImportOptions.

Формат данных паркета: Используйте категориальные данные в формате данных паркета

Считайте, запишите и анализируйте данные о паркете, которые содержат categorical тип данных.

Эта функциональность поддерживается этими функциями: parquetread, parquetwrite, parquetinfo, и parquetDatastore.

Хранилища данных: Считывайте все данные от datastore с помощью параллельной обработки

Можно использовать параллельную обработку при Считывении все данные от datastore (требует Parallel Computing Toolbox). Параллельная обработка приводит к улучшенной производительности при чтении данных, особенно с удаленными данными.

Функции Сжатия данных: Улучшенная функциональность в zipразархивация и taruntar

На Windows, macOS, и системах Linux:

  • zip может сжать отдельный файл любого размера.

  • zip может сжать любое количество файлов в одном вызове функции.

  • tar может сжать группу файлов любого совокупного размера.

Кроме того, в системах Windows, unzip и untar замените недопустимые символы на символы нижнего подчеркивания, если они происходят в путях записи исходного файла.

imfinfo функция: Получите информацию обо всем Adobe Digital Negative (DNG) теги файла

imfinfo функция возвращает информацию обо всех тегах файла DNG как индивидуум, названный полями в структуре output. Для полного списка тегов файла DNG см. Главу 4 Adobe Digital Negative (DNG) Спецификация.

jsonencode: Добавьте добавление отступа в текст JSON

Используйте jsonencode 'PrettyPrint' опция, чтобы отобразить текст JSON с добавлением отступа двух пробелов.

s.Width = 800;
s.Height = 600;
s.Title = 'View from the 15th Floor';
s.Animated = false;
s.IDs = [116, 943, 234, 38793];
jsonencode(s,'PrettyPrint',true)
ans = 
    '{
       "Width": 800,
       "Height": 600,
       "Title": "View from the 15th Floor",
       "Animated": false,
       "IDs": [
         116,
         943,
         234,
         38793
       ]
     }'

Функциональность, удаляемая или измененная

H5I.get_name функция только принимает названные типы данных HDF5 как входные параметры.

Изменение поведения

Начиная в R2020a, H5I.get_name функция только принимает фиксировавший (ранее названный named) типы данных HDF5 как входные параметры, и будет ошибка, если вы передадите другие типы данных как вход. В релизах R2019b и ранее, H5I.get_name не делает ошибки, если вы передаете другие типы данных как вход.

Чтобы проверить, что вход является зафиксированным типом данных HDF5, вызовите H5T.committed функция на нем. H5T.committed функция возвращает значение 1 если вход является зафиксированным типом данных HDF5 и значением 0 если это не.

imfinfo теперь возвращает теги Adobe DNG, принадлежащие версиям 1.2 до 1,5 в индивидууме, названном полями в структуре output

Изменение поведения

Когда вы вызываете imfinfo функция на Adobe® Файл DNG, это теперь возвращает теги, принадлежащие версиям 1.2 до 1,5 как индивидуум, названный полями в структуре output. Ранее теги, принадлежащие этим версиям, хранились в 'UnknownTags' поле структуры output. Для полного списка тегов файла DNG см. Главу 4 Adobe Digital Negative (DNG) Спецификация.

imread читает первую систему координат в файле GIF по умолчанию

Изменение поведения

Начиная в R2021a, когда вы читаете файл GIF, не задавая дополнительные аргументы, imread функционируйте читает первую систему координат по умолчанию. Ранее imread считайте все системы координат в файле по умолчанию.

Чтобы считать все системы координат в порядке, что они появляются в файле GIF, задайте значение 'Frames' аргумент значения имени как 'all'.

serial функция будет удалена

Все еще работает

serial и его свойства объектов будут удалены. Ранее serial и его свойства объектов не рекомендовались. Использование serialport и его свойства вместо этого.

В этом примере показано, как связать с устройством последовательного порта с помощью рекомендуемой функциональности.

ФункциональностьИспользуйте это вместо этого
s = serial("COM1");
s.BaudRate = 115200;
fopen(s)
s = serialport("COM1",115200);

Смотрите переход ваш код к serialport Интерфейс для получения дополнительной информации об использовании рекомендуемой функциональности.

Математика

Алгоритмы графика: Вычислите все пути, все циклы и базис цикла

graph и digraph объекты имеют новые функции, чтобы вычислить пути и циклы:

  • allpaths — Вычислите все пути между двумя узлами в a graph или digraph объект.

  • allcycles — Вычислите все циклы в a graph или digraph объект.

  • cyclebasis — Вычислите основной базис цикла a graph объект.

  • hascycles — Определите ли a graph или digraph объект содержит циклы.

griddedInterpolant Объект: Используйте многозначную интерполяцию, чтобы интерполировать несколько наборов данных одновременно

griddedInterpolant может теперь интерполировать несколько наборов данных на той же сетке в тех же точках запроса. Например, если вы задаете 2D сетку, трехмерный массив значений в узлах решетки и 2D набор точек запроса, затем griddedInterpolant возвращает интерполированные значения в точках запроса для каждой 2D страницы в трехмерном массиве значений.

Ранее эта функциональность была доступна в interp1 для 1D интерполяции, но этого улучшения griddedInterpolant добавляет поддержка многозначной интерполяции N-D.

eig Функция: Улучшенный алгоритм для скошено-эрмитовых матриц

eig теперь имеет улучшенный алгоритм для входных матриц, которые являются скошено-эрмитовыми. С вызовом функции [V,D] = eig(A), где A является скошено-эрмитовым, eig теперь гарантии, что матрица собственных векторов V унитарно и диагональная матрица собственных значений D является чисто мнимым.

cdf2rdf Функция: Улучшенный алгоритм для всех входных параметров

cdf2rdf имеет улучшенный алгоритм для всех входных матриц, который уменьшает ошибки округления с плавающей точкой в вычислении.

Функциональность, удаляемая или измененная

Продолжение линии: Эллипсис после оператора, обработанного как пробел

Изменение поведения

Ранее, если замещающий знак следовал за оператором в матричном или массиве ячеек, он заставил оператор быть обработанным как унарный. Эллипсы будут теперь обработаны как пробел во всех случаях.

Старое поведениеНовое поведение
x = [1 -...
2]
x = 
    1 -2

Ранее этот код был эквивалентен выражению, x = [1 -2].

x = [1 -...
2]
x = 
    -1

Теперь замещающий знак будет обработан как пробел, таким образом, этот код будет эквивалентен выражению, x = [1 - 2].

Графика

Создайте Live Editor Графика Задача: Создайте графики в интерактивном режиме и сгенерируйте код

Создать Live Editor Графика Тэск делает генерацию и исследование визуализации для данных простыми и интерактивными. С этой задачей можно выбрать данные, вы хотите визуализировать и выбрать тип графика, который лучше всего представляет те данные. В качестве альтернативы можно исследовать визуализацию, доступную в MATLAB, чтобы найти, что желаемый график вводит и добавляет данные. Эта задача создает метки для визуализации на основе данных и может использоваться, чтобы добавить или настроить дополнительные параметры визуализации.

bubblecloud Функция: Визуализируйте отношения части-к-целому

Используйте bubblecloud функция, чтобы проиллюстрировать отношение между элементами в вашем наборе данных и наборе в целом. Например, можно визуализировать данные, собранные из различных городов, и представлять каждый город как пузырь, размер которого пропорционален значению для того города.

A bubble cloud chart.

tiledlayout Функция: Управляйте схемой индексации мозаики

Управляйте, увеличиваются ли индексы мозаики через строки или вниз столбцы размещения путем установки TileIndexing свойство TiledChartLayout объект. Выберите одну из следующих опций:

  • 'rowmajor' — Постепенно увеличьте индексы мозаики через первую строку прежде, чем переместиться в следующую строку. Это поведение по умолчанию.

  • 'columnmajor' — Постепенно увеличьте индексы вниз первый столбец прежде, чем переместиться в следующий столбец. Эта схема индексации совпадает с линейной индексацией для массивов.

nexttile функция заполняет мозаики согласно схеме индексации. Если вы изменяете индексацию мозаики заполненного размещения, положения мозаики изменяются, чтобы совпадать с новой схемой.

PolarAxes Объекты: используйте CurrentPoint свойство или вызов ginput получить позицию курсора в полярных осях

Запросите CurrentPoint свойство PolarAxes объект получить местоположение последнего нажатия кнопки в осях. ginput функционируйте также поддерживает координаты запроса полярных осей.

Графики поля точек и Постоянные Линии: Создайте несколько графиков рассеивания или постоянных линий целиком

  • scatter, polarscatter, и swarmchart функции теперь принимают те же комбинации матриц и векторов как plot функция делает. В результате можно визуализировать несколько наборов данных, целиком довольно использующих hold функция между графическим выводом команд.

  • xline и yline функции теперь принимают векторы из значений для создания нескольких вертикальных или горизонтальных ссылочных линий. Можно также задать отдельные метки для каждой линии с помощью массива строк или массива ячеек.

Scatter plot of multiple data sets.

Пределы по осям: задайте LimitsChangedFcn коллбэк, который выполняется, когда пределы оси изменяются

Задайте LimitsChangedFcn функция обратного вызова на любом типе объекта линейки, такого как числовая линейка. Функция обратного вызова выполняется, когда пределы соответствующей оси изменяются. Например, можно задать коллбэк в приложении, чтобы обновить другой аспект пользовательского интерфейса когда пользовательские панорамирования в осях.

Пределы по осям: Управляйте пределами по осям

Управляйте пределами по осям для своих графиков путем установки XLimitMethod, YLimitMethod, или ZLimitMethod на осях. Выберите одни из следующих значений свойств:

  • 'tickaligned' — Выровняйте ребра поля осей с отметками деления, которые являются самыми близкими к вашим данным без исключения любых данных. Это - опция по умолчанию.

  • 'tight' — Соответствуйте полю осей плотно вокруг данных путем установки пределов по осям, равных области значений данных.

  • 'padded' — Соответствуйте полю осей вокруг данных с тонким полем дополнения на каждой стороне. Ширина поля составляет приблизительно 7% вашей области значений данных.

Plots that use the 'tickaligned', 'tight', and 'padded' limit methods.

exportgraphics и copygraphics Функции: Задайте RGB, CMYK или полутоновый выход

Выберите цветовое пространство при экспорте или копировании графики. Задайте Colorspace аргумент значения имени, когда вы вызываете exportgraphics или copygraphics функции. Выберите одну из следующих опций:

  • 'rgb' — Получите содержимое RGB истинного цвета. Это - пробел цвета по умолчанию.

  • 'gray' — Преобразуйте содержимое в шкалу полутонов.

  • 'cmyk' (exportgraphics только) — Преобразуют содержимое в голубой цвет, пурпурный, желтый цвет, и черный (CMYK) прежде, чем экспортировать содержимое как файл EPS.

colororder Функция: Управление раскрашивает совмещенные графики

colororder функционируйте теперь поддерживает графики, созданные с stackedplot функция.

Метки в виде галочки: Автоматически вращайте метки в виде галочки

Когда вы вручную задаете метки деления или метки в виде галочки для графика, метки в виде галочки автоматически вращаются, чтобы дать самое лучшее представление, учитывая размер фигуры и количество меток в виде галочки.

A bar chart that shown at two different sizes with different tick angles.

patch и errorbar Функции: Расширенная поддержка типов данных

patch и errorbar функции теперь поддерживают больше типов данных:

  • patch функция принимает числовой, datetime, длительность и категориальные значения для x - y - и z - координаты.

  • errorbar функция принимает числовой, datetime, длительность и категориальные значения для x - и y - координаты. Это также принимает числовой и значения длительности для длин значения погрешности выше, ниже, и по обе стороны от точек данных.

Географические Графики: Доступ basemaps использование дополнительных типов аутентификации прокси-сервера

Можно теперь получить доступ к basemaps для географических осей и графиков с помощью дополнительных типов аутентификации прокси-сервера.

  • На Windows можно использовать Основной, Обзор, NTLM, Согласовать (SPNEGO), и аутентификация Kerberos.

  • На Linux и macOS, можно использовать Основной, Обзор и аутентификация NTLM.

До R2021a географические оси и графики поддержали только типы без аутентификации или со Стандартной аутентификацией. Для получения дополнительной информации об определении настроек прокси-сервера, смотрите Использование веб-Настройки MATLAB Для Настроек Прокси-сервера.

Функциональность, удаляемая или измененная

Мозаика располагающие с интервалами и дополняющие опции для мозаичных размещений графика изменилась

Изменение поведения

Когда вы создаете мозаичное размещение графика, часть TileSpacing и Padding свойства обеспечивают различный результат или имеют новые имена.

Новый TileSpacing опциями является 'loose', 'compact', 'tight', и 'none'. Новый Padding опциями является 'loose', 'compact', и 'tight'. Следующие таблицы описывают, как предыдущие опции относятся к новым опциям.

TileSpacing Изменения

Предыдущий TileSpacing ОпцияR2021a TileSpacing ОпцияКак обновить ваш код

'normal'

Tiled chart layout with 'normal' tile spacing in R2020b and earlier releases.

'loose'

Tiled chart layout with 'loose' tile spacing in R2021a.

Рассмотрите изменяющиеся экземпляры 'normal' к 'loose'.

'normal' опция больше не рекомендуется, но она продолжает работать, и нет никаких планов удалить ее.

'compact'

Tiled chart layout with 'compact' tile spacing.

'compact'

Tiled chart layout with 'compact' tile spacing.

Никакие изменения не необходимы.

Не применяется

'tight'

Tiled chart layout with 'tight' tile spacing in R2021a.

'tight' новая опция. Это обеспечивает тот же результат как 'none' делает в предыдущих релизах.

'none'

Tiled chart layout with 'none' tile spacing in R2020b.

'none'

Tiled chart layout with 'none' tile spacing in R2021a.

'none' опция удаляет весь пробел между полями прилегающего участка и перекрытие меток в виде галочки с соседними полями графика.

Чтобы сохранить интервал между полями графика, измените экземпляры 'none' к 'tight'.

Padding Изменения

Предыдущий Padding ОпцияR2021a Padding ОпцияКак обновить ваш код

'normal'

Tiled chart layout with 'normal' padding in R2020b.

'loose'

Tiled chart layout with 'loose' padding in R2021a.

Рассмотрите изменяющиеся экземпляры 'normal' к 'loose'.

'normal' опция больше не рекомендуется, но она продолжает работать, и нет никаких планов удалить ее.

'compact'

Tiled chart layout with 'compact' padding.

'compact'

Tiled chart layout with 'compact' padding.

Никакие изменения не необходимы.

'none'

Tiled chart layout with 'none' padding in R2020b.

'tight'

Tiled chart layout with 'tight' padding in R2021a.

Рассмотрите изменяющиеся экземпляры 'none' к 'tight'.

'none' опция больше не рекомендуется, но она продолжает работать, и нет никаких планов удалить ее.

Передача пустой метки к legend функция не использует запись от легенды

Изменение поведения

Когда вы вызываете legend функционируйте и задайте метку как пустой символьный вектор, пустую строку или пустой элемент в массиве ячеек или массиве строк, соответствующая запись не использована от легенды. В R2020b и более ранних релизах, запись появляется в легенде без метки.

Например, этот код строит две синусоиды и ссылочную линию в y=0. Затем это создает легенду с тремя метками, где последняя метка пуста. В R2020b третья линия появляется в легенде без метки. В R2021a третья линия не использована от легенды.

x = 0:0.2:10;
plot(x,sin(x),x,sin(x+1));
hold on
yline(0,'--')
legend('sin(x)','sin(x+1)','')

Comparison of empty legend labels in R2020b and R2021a.

Чтобы сохранить запись в легенде без метки, включайте пробел в метку. Например, чтобы обновить предыдущий код, задайте последнюю метку как вектор символов, содержащий пробел (' ').

legend('sin(x)','sin(x+1)',' ')

В качестве альтернативы, если вы не хотите отображать пробел, можно передать отдельные объекты линии legend функция с массивом меток. Чтобы получить отдельные объекты линии, вызовите каждую функцию построения графика с выходным аргументом.

x = 0:0.2:10;
p = plot(x,sin(x),x,sin(x+1));
hold on
line0 = yline(0,'--');
legend([p(1) p(2) line0], {'sin(x)','sin(x+1)',''});

XData, YData, и ZData свойства на Patch объекты, созданные с fill и fill3 возвращаемые значения функций исходного типа данных

Изменение поведения

XData, YData, и ZData свойства на Patch объект, созданный fill или fill3 функции возвращают координаты с помощью исходного типа входных данных, вместо того, чтобы возвратить их как double значения.

В предыдущих релизах datetime, длительность и категориальные координаты преобразованы в double значения, когда они хранятся в XData, YData, и ZData свойства.

Например, этот код создает заполненный многоугольник с datetime x - координаты. Затем это вычисляет x2 использование значений сохранено в XData свойство. В R2020b, h.XData и x2 double массивы. В R2021a, h.XData и x2 массивы datetime.

x = datetime('01-Jan-2018') + days([0 1 1 0]);
y = [0 0 1 1];
h = fill(x,y,'red');
x2 = h.XData + 1;

Сохранить double значения в вашем коде, получите double значения от Vertices свойство Patch объект. x - y - и z - координаты хранится как double значения в первых, вторых, и третьих столбцах Vertices массив.

x2 = h.Vertices(:,1) + 1;

В качестве альтернативы используйте ruler2num функция. Передайте координатные значения и соответствующую линейку оси к ruler2num функция.

ax = gca;
x2 = ruler2num(h.XData,ax.XAxis) + 1;

Графические объекты и компоненты пользовательского интерфейса, измеренные с помощью 'points''inches', и 'centimeters' модули увеличатся в размере на macOS платформах

Изменение поведения в будущем релизе

В будущем релизе, графических объектах и объектах пользовательского интерфейса, которые имеют Units или FontUnits набор свойств к 'points''inches', или 'centimeters' будет использовать значение преобразования 1 пикселя = 1/96-й дюйм на macOS платформах. Текущее значение преобразования составляет 1 пиксель = 1/72-й дюйм. В результате эти объекты и текстовые элементы отобразятся в 1.33 раза больше, чем их предыдущий размер. Это изменение обеспечит более читаемый размер стандартного шрифта и гарантирует сопоставимый размер объекта через Windows и macOS платформы.

Следующие объекты используют стоимость единицы 'pixels' по умолчанию и не будет затронут этим изменением:

  • Компоненты пользовательского интерфейса в App Designer или в приложениях, созданных с uifigure функция

  • Компоненты пользовательского интерфейса в приложениях, созданных в GUIDE и перемещенных на App Designer с помощью GUIDE для Инструмента Миграции App Designer для MATLAB

  • Объекты осей создали использование uiaxes функция

Для большей части управления при калибровке и разметке графических объектов и компонентов пользовательского интерфейса, используйте значение 'pixels' для Units и FontUnits свойства. Чтобы обеспечить размеры объекта в текущих и будущих релизах, сделайте эти обновления в своем коде:

  • Объекты с Units или FontUnits установите на 'points' — Обновите значение свойства от 'points' к 'pixels'.

  • Объекты с Units или FontUnits установите на 'inches' — Обновите значение свойства от 'inches' к 'pixels' и умножьте весь Position значения 72.

  • Объекты с Units или FontUnits установите на 'centimeters' — Обновите значение свойства от 'centimeters' к 'pixels' и умножьте весь Position значения 72/2.54.

Например, этот код создает кнопку в окне рисунка с его положением, заданным в дюймах:

uicontrol('Units','inches','Position',[0.6 0.1 1.75 0.5]);

В будущем релизе кнопка, созданная этим кодом, отобразится в 1.33 раза больше на macOS платформах. Чтобы обеспечить размер и положение кнопки в текущих и будущих релизах, обновите код к:

uicontrol('Units','pixels','Position',[50 10 126 36]);

Выровняйтесь Распределяют Инструмент, будет удален в будущем релизе

Предупреждает

Выравнивание Распределяет Инструмент, будет удален в будущем релизе.

Чтобы управлять расположением нескольких графиков в фигуре, создайте мозаичное размещение графика с помощью tiledlayout функцию вместо этого.

Чтобы выровнять или распределить графические объекты в фигуре, выберите Tools > Align или Tools > Distribute из панели инструментов фигуры вместо этого.

Создание приложений

uihyperlink Функция: Добавьте и сконфигурируйте активируемые кликом мыши ссылки в приложениях и на холсте App Designer

Чтобы создать ссылку, вызовите uihyperlink функционируйте или, в App Designer, перетащите гиперссылку компонент пользовательского интерфейса от Component Library на холст.

Гиперссылка компоненты пользовательского интерфейса поддерживается только в приложениях App Designer и в цифрах созданный с uifigure функция.

uitree Функция: Добавьте и сконфигурируйте деревья флажка в приложениях и на холсте App Designer

Дерево флажка является стилизованным с флажками слева от каждого элемента. Можно теперь создать деревья флажка в приложениях и на холсте App Designer. Деревья флажка допускают более легкий выбор нескольких древовидных узлов.

В приложениях, созданных программно с uifigure функционируйте, создайте дерево флажка использование uitree функция путем определения стиля 'checkbox'.

В App Designer создайте дерево флажка путем перетаскивания его от Component Library на холст.

Interpreter Свойство: Разработайте текст и уравнения отображения в метках с HTML и ПРОПИТАЙТЕ ЛАТЕКСОМ разметку

Используйте Interpreter свойство на Label объекты (созданный с uilabel функция), чтобы включить разметку в тексте метки. Чтобы добавить разметку HTML, установите Interpreter свойство к 'html'. Чтобы добавить разметку LATEX, установите Interpreter свойство к 'latex'.

Для получения дополнительной информации смотрите Label Properties.

WindowStyle Свойство: Создайте фигуры пользовательского интерфейса, которые остаются на переднем плане

Чтобы сохранить определенное окно UI Figure перед другими окнами, установите WindowStyle свойство к 'alwaysontop'. В отличие от модальных фигур, окна UI Figure с этой установкой свойства не ограничивают взаимодействия клавиатуры и мыши.

'alwaysontop' значение свойства является доступным только созданным использованием в цифрах uifigure функция.

Для получения дополнительной информации смотрите UI Figure Properties.

scroll Функция: Прокрутите к местоположению в компоненте таблицы UI программно

Используйте scroll функционируйте, чтобы прокрутить в компоненте таблицы UI программно. Задайте местоположение прокрутки как верхнюю часть, нижнюю часть, оставленную, или правая сторона таблицы, или как определенная строка, столбец или ячейка таблицы.

Доступность компонента пользовательского интерфейса: выберите ListBox элементы, Table ячейки, ColorPicker цвета и DatePicker меню с помощью клавиатуры

Можно теперь использовать горячие клавиши, чтобы изменить особое внимание и сделать выборы в различных компонентах пользовательского интерфейса. Эти ярлыки поддерживаются для компонентов созданное использование в цифрах  uifigure function функция.

КомпонентДействие Горячая клавиша
ListBox with Multiselect набор свойств к 'off'Переключите выбор поля списка.  Space
ListBox with Multiselect набор свойств к 'on'Выберите все элементы.Ctrl +A
Переместите особое внимание на предыдущий элемент и выбор переключателя.Shift +Up
Переместите особое внимание на следующий элемент и выбор переключателя.Shift +Down
Переместите особое внимание на предыдущий элемент, не переключая выбор.Ctrl +Up
Переместите особое внимание на следующий элемент, не переключая выбор.Ctrl +Down
Выбор  Toggle элемента в настоящее время в особом внимании.Ctrl +Space
TableВыберите ячейку таблицы в верхнем левом углу.Ctrl +Home
Выберите ячейку таблицы в нижнем правом углу.Ctrl +End
ColorPicker селектор градиента Переместите селектор градиента.Клавиши со стрелками
ColorPicker ползунок оттенка Переместите ползунок оттенка.Up и Down
DatePickerЦикл между выпадающими меню, кнопками и календарем.Tab

Дизайнер приложений: Используйте пользовательские компоненты пользовательского интерфейса в App Designer

Можно теперь сконфигурировать пользовательские классы компонента пользовательского интерфейса, чтобы появиться в Component Library App Designer и использоваться в интерактивном режиме в Design View.

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

  • Задайте свой собственный класс компонента пользовательского интерфейса путем создания подкласса matlab.ui.componentcontainer.ComponentContainer базовый класс.

  • Вызовите appdesigner.customcomponent.configureMetadata функционируйте и задайте путь к классу компонента .m файл.

  • Используйте получившееся диалоговое окно, чтобы сконфигурировать метаданные, сопоставленные с компонентом, включая имя компонента, значок, автора и категорию.

Это создает resources папка с метаданными App Designer. Чтобы просмотреть компонент в Component Library App Designer, добавьте папку, содержащую файл класса компонента и сгенерированный resources папка к пути MATLAB.

Чтобы совместно использовать ваш пользовательский компонент пользовательского интерфейса для других, чтобы использовать в App Designer, совместно используйте и файл класса компонента и resources папка.

Для получения дополнительной информации смотрите, Конфигурируют Пользовательские Компоненты пользовательского интерфейса для App Designer.

Дизайнер приложений: Изменение масштаба и панорамирование в холсте и увеличение редактора Представления кода

Чтобы увеличить масштаб или в холсте App Designer и в редакторе Code View, содержите Ctrl и переместите колесико прокрутки или нажмите Ctrl +Plus и Ctrl +Minus. Чтобы возвратиться к шкале по умолчанию, нажмите Ctrl +Alt+0. Изменение масштаба не влияет на Component Library, Component Browser или Code Browser.

К панорамированию в холсте App Designer используйте одно из следующего:

  • Click и перетаскивает со средней кнопкой мыши.

  • Содержите Space при перетаскивании с левой кнопкой мыши.

Вопросы совместимости

В предыдущих релизах Ctrl +Plus и Ctrl +Minus горячие клавиши масштабировал рабочий стол Разработчика целого приложения.

Дизайнер приложений: Управляйте настройками цветов и установками позиций табуляции в Представлении кода с помощью настроек MATLAB

Окрасьте и перейдите, настройки применились к редактору MATLAB, теперь также применены Редактор App Designer.

Кроме того, можно теперь изменить цвет фона App Designer код только для чтения. Доступ к этой установке во вкладке App Designer настроек MATLAB.

Для получения дополнительной информации смотрите, Персонализировали Внешний вид Представления кода.

Дизайнер приложений: Настройте размещения разделения экрана в редакторе App Designer

Чтобы просмотреть ваш документ в горизонтальном или вертикальном режиме разделения экрана в редакторе Code View App Designer, выберите размещение в панели инструментов App Designer.

Среда тестирования приложения: Выполните жесты на панелях и таблицах

Среда тестирования приложения поддерживает жесты на большем количестве компонентов пользовательского интерфейса:

Среда тестирования приложения: Закройте аварийное диалоговое окно перед окном рисунка

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

fig = uifigure;
uialert(fig,'File not found','Invalid File')

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.dismissAlertDialog(fig)

Веб-приложения и Автономные приложения: Всплывающие подсказки поддержаны в графике

Графика, созданная в веб-приложениях и автономных приложениях, поддерживает всплывающие подсказки. Используйте всплывающие подсказки в этих приложениях, как вы были бы в фигурах MATLAB.

Функциональность, удаляемая или измененная

GUIDE будет удален в будущем релизе

Предупреждает

Среда GUIDE и guide функция будет удалена в будущем релизе.

После того, как GUIDE удален, существующие приложения GUIDE продолжат запускаться в MATLAB, но не будут доступным для редактирования использованием среды GUIDE перетаскивания. Чтобы продолжить редактировать существующее приложение GUIDE и справку обеспечивают ее совместимость с будущими релизами MATLAB, используют одну из предложенных перечисленных в таблице стратегий миграции.

Разработка приложенийСтратегия миграцииКак мигрировать
Частая или продолжающаяся разработкаПереместите свое приложение на App Designer.Используйте GUIDE для инструмента миграции App Designer для MATLAB на mathworks.com.
Минимальное или случайное редактированиеЭкспортируйте свое приложение в один файл MATLAB, чтобы управлять вашим размещением приложения и кодом с помощью функций MATLAB.Откройте приложение в GUIDE и выберите File> Export to MATLAB-file.

Чтобы создать новые приложения, используйте App Designer и appdesigner функцию вместо этого. App Designer является средой разработки рекомендуемого приложения в MATLAB.

Чтобы узнать больше о мигрирующих приложениях, см. Стратегии Миграции GUIDE.

Для получения дополнительной информации о App Designer, перейдите к Сравнению GUIDE и App Designer на mathworks.com.

Шаблоны GUIDE были удалены

Все шаблоны GUIDE кроме пустого графический интерфейса пользователя были удалены. Чтобы создать новые приложения в интерактивном режиме, используйте App Designer и appdesigner функцию вместо этого.

Графические объекты и компоненты пользовательского интерфейса, измеренные с помощью 'points''inches', и 'centimeters' модули увеличатся в размере на macOS платформах

Изменение поведения в будущем релизе

В будущем релизе, графических объектах и объектах пользовательского интерфейса, которые имеют Units или FontUnits набор свойств к 'points''inches', или 'centimeters' будет использовать значение преобразования 1 пикселя = 1/96-й дюйм на macOS платформах. Текущее значение преобразования составляет 1 пиксель = 1/72-й дюйм. В результате эти объекты и текстовые элементы отобразятся в 1.33 раза больше, чем их предыдущий размер. Это изменение обеспечит более читаемый размер стандартного шрифта и гарантирует сопоставимый размер объекта через Windows и macOS платформы.

Следующие объекты используют стоимость единицы 'pixels' по умолчанию и не будет затронут этим изменением:

  • Компоненты пользовательского интерфейса в App Designer или в приложениях, созданных с uifigure функция

  • Компоненты пользовательского интерфейса в приложениях, созданных в GUIDE и перемещенных на App Designer с помощью GUIDE для Инструмента Миграции App Designer для MATLAB

  • Объекты осей создали использование uiaxes функция

Для большей части управления при калибровке и разметке графических объектов и компонентов пользовательского интерфейса, используйте значение 'pixels' для Units и FontUnits свойства. Чтобы обеспечить размеры объекта в текущих и будущих релизах, сделайте эти обновления в своем коде:

  • Объекты с Units или FontUnits установите на 'points' — Обновите значение свойства от 'points' к 'pixels'.

  • Объекты с Units или FontUnits установите на 'inches' — Обновите значение свойства от 'inches' к 'pixels' и умножьте весь Position значения 72.

  • Объекты с Units или FontUnits установите на 'centimeters' — Обновите значение свойства от 'centimeters' к 'pixels' и умножьте весь Position значения 72/2.54.

Например, этот код создает кнопку в окне рисунка с его положением, заданным в дюймах:

uicontrol('Units','inches','Position',[0.6 0.1 1.75 0.5]);

В будущем релизе кнопка, созданная этим кодом, отобразится в 1.33 раза больше на macOS платформах. Чтобы обеспечить размер и положение кнопки в текущих и будущих релизах, обновите код к:

uicontrol('Units','pixels','Position',[50 10 126 36]);

Производительность

Умножение Разреженной матрицы: Улучшенная производительность, умножающая большие разреженные матрицы

Эффективность умножения матриц улучшилась при умножении разреженных матриц. Повышение производительности является результатом добавленной поддержки многопоточности в операции, и поэтому ускорение поправляется как матричный размер и количество ненулевого увеличения.

Например, если вы умножаете два 1e5- 1e5 случайные разреженные матрицы приблизительно с двумя миллионами ненулей, эффективность в R2021a о 4.4x быстрее, чем в R2020b на машине с 6 физическими ядрами.

function timingSparseMult
rng default
A = sprand(1e5,1e5,0.0002);
B = sprand(1e5,1e5,0.0002);
tic
C = A*B;
toc
end

Аппроксимированные времена выполнения:

R2020b: 2,2 с

R2021a: 0,5 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызова функционального timingSparseMult.

Разреженные Линейные системы: Улучшенная производительность решая разреженные линейные системы A*X = B с многостолбцовым B

Решение линейной системы формы A*X = B путем выполнения X = A\B показывает улучшенную производительность когда A разреженная квадратная матрица и B матрица с двумя или больше столбцами. Ускорение применяется к шагу решения вычисления, но не шагу факторизации. Повышение производительности является результатом добавленной поддержки многопоточности, и поэтому ускорение поправляется как количество столбцов в B увеличения.

Например, если вы решаете A*X = B использование 1e4- 1e4 разреженная матрица коэффициентов приблизительно с 40 000 ненулей и B матрица с 100 столбцами, эффективность в R2021a о 5x быстрее, чем в R2020b на машине с 6 физическими ядрами. Этот код использует decomposition учитывать матрицу коэффициентов, поэтому только процесс решения синхронизирован. Если вы используете X = A\B вместо этого, вы все еще видите ускорение, но время, требуемое учитывать матрицу, включено и не изменилось.

function timingSparseBackslashMultRHS
rng default
A = sprand(1e4,1e4,0.0003) + speye(1e4);
B = sprand(1e4,100,0.002);
dA = decomposition(A);
tic
x = dA\B;
toc
end

Аппроксимированные времена выполнения:

R2020b: 1,5 с

R2021a: 0,3 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызова функционального timingSparseBackslashMultRHS.

vecnorm Функция: Улучшенная производительность, работающая с данными с несколькими столбцами

Эффективность vecnorm функция улучшилась для всех типов нормы, когда данные имеют 16 или больше столбцов и по крайней мере 217 элементы.

Улучшение также применяется к данным массива N-D, которые могут быть переставлены в матрице с необходимым количеством столбцов. Ускорение варьируется в зависимости от типа вычисляемой нормы.

Например, если вы вычисляете 2-норму 1000 1 000 3 массивами по третьему измерению, эффективность в R2021a о 7.3x быстрее, чем в R2020b.

function timingVecnorm
rng default
N = 1000;
A = rand(N,N,3);
for k = 1:200
  D = vecnorm(A,2,3);
end
end

Аппроксимированные времена выполнения:

R2020b: 8,8 с

R2021a: 1,2 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц с помощью timeit функция:

timeit(@timingVecnorm)

ismember Функция: Улучшенная производительность для входных параметров ячейки

ismember функция показывает улучшенную производительность, работающую с cell входные параметры. Ускорение зависит от размера и размещения данных с самым большим ускорением, когда вход имеет много ячеек, которые содержат немного элементов в каждой ячейке.

Например, если вы используете ismember чтобы сравнить два 1000 1 массива ячеек с 10 элементами в каждой ячейке, эффективность в R2021a о 4.7x быстрее, чем в R2020b.

function timingIsmember
a = num2cell(char(randi(127,[1000 10])),2);
b = num2cell(char(randi(127,[1000 10])),2);
tic
for ii = 1:1e4
  ismember(a,b); 
end
toc
end

Аппроксимированные времена выполнения:

R2020b: 6,6 с

R2021a: 1,4 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызова функционального timingIsmember.

unique Функция: Улучшенная производительность для числового, логического, char и входных параметров ячейки

unique функция показывает улучшенную производительность, работающую с числовым, logical'char', и cell входные параметры. Ускорение обычно поправляется как размер входных увеличений, и улучшение применяется при использовании любых дополнительных флагов кроме 'legacy' флаг.

Например, если вы работаете с 100 1 массивом ячеек с 10 элементами в каждой ячейке, эффективность в R2021a о 3.3x быстрее, чем в R2020b.

function timingUniqueCell
a = num2cell(char(randi(127,[100 10])),2);
tic
for ii = 1:1e5
  b = unique(a); 
end
toc
end

Аппроксимированные времена выполнения:

R2020b: 3,9 с

R2021a: 1,2 с

Кроме того, если вы используете unique на числовом входе с 10 000 элементов и задают три выходных параметров с 'stable' опция, эффективность в R2021a о 3.5x быстрее, чем в R2020b.

function timingUniqueNumeric
a = rand(10000,1);
tic
for ii=1:1e4
  [C,ia,ic] = unique(a,'stable');
end
toc
end

Аппроксимированные времена выполнения:

R2020b: 9,4 с

R2021a: 2,7 с

В обоих случаях код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызывания функций timingUniqueCell и timingUniqueNumeric.

Функции графика: узел изменения Улучшенной производительности и списки ребер

graph и digraph функции, которые изменяют узел и списки ребер графика, показывают улучшенную производительность. Это применяется к функциям addedge, rmedge, addnode, rmnode, subgraph, и reordernodes. Улучшение применяется к графикам, которые не имеют никаких свойств узла (или только имена узла), и графики без свойств ребра (или только вес ребра). Улучшение является самым примечательным, когда одна из этих функций много раз вызывается в цикле, и самое большое улучшение применяется к графикам, которые имеют и имена узла и вес ребра.

Например, если вы используете addedge в цикле, чтобы добавить новые ребра с именами узла и весом ребра к пустому графику, эффективность в R2021a о 13x быстрее, чем в R2020b.

function timingAddedge
names = string(('A':'Z')') + (1:10);
names = names(1:100);
rng default
g = graph;
for ii = 1:1e3
    g = addedge(g, names(randi(100)), names(randi(100)), randn);
end
end

Аппроксимированные времена выполнения:

R2020b: 2,6 с

R2021a: 0,2 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц при помощи timeit функция:

timeit(@timingAddedge)

Панель инструментов осей: Появляется незамедлительно, когда оси готовы

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

Реорганизация Компонентов пользовательского интерфейса: Улучшенная производительность при реорганизации компонентов пользовательского интерфейса в фигуре пользовательского интерфейса

Программно перестраивающие существующие компоненты пользовательского интерфейса на рисунке, созданном с uifigure функция показывает улучшенную производительность.

Например, если вы сортируете 50 панелей в размещении сетки, эффективность в R2021a приблизительно 1.9x быстрее, чем в R2020b.

function timingSortComp
    % Create components
    panels = {};
    fig = uifigure;
    g = uigridlayout(fig,[1,1],'RowHeight',40);
    g.Scrollable = true;
    num = 50;
    for i = 1:num
        p = uipanel(g);
        uilabel(p,'Text',['Panel ', num2str(i)],'Position',[10 10 70 22]);
        g.RowHeight{end} = 40;
        panels{end+1} = p;   
    end
    drawnow;

    % Rearrange components
    tic
    order = length(panels):-1:1;
    for i = 1:length(order)
        panels{i}.Layout.Row = order(i);
    end
    drawnow;
    toc
end

Аппроксимированные времена выполнения:

R2020b: 0,70 с

R2021a: 0,36 с

Код был синхронизирован на Windows 10, Intel Xeon E5-1650 CPU система тестирования на 3,60 ГГц путем вызова функционального timingSortComp.

Взаимодействия фигуры пользовательского интерфейса: Более быстрые ответы на прокрутку, перемещение указателя, и изменяют размер взаимодействий в фигурах пользовательского интерфейса

В цифрах созданный с uifigure функция, следующие взаимодействия имеют улучшенную производительность:

  • Прокрутка на рисунке с WindowScrollWheelFcn коллбэк или объект с предопределенным поведением прокрутки

  • Изменение размеров видимой фигуры с SizeChangedFcn коллбэк или объект с предопределенным поведением при изменении размера

  • Перемещение указателя мыши на рисунке с WindowButtonMotionFcn коллбэк, когда фигура содержит любые компоненты пользовательского интерфейса кроме компонентов осей

Это увеличение эффективности более примечательно при использовании сенсорной панели, чтобы взаимодействовать с фигурой.

Например, прокрутка для масштабирования в на графике, созданном кодом ниже, является более сглаженной и более быстро реагирующей в R2021a, чем в R2020b.

t1 = datetime(2019,1,1);
t2 = datetime(2020,1,1);
dates = linspace(t1,t2,10000);
data = rand(10000,10);
fig = uifigure;
stackedplot(fig,dates,data);

На Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц, ответы на действие прокрутки:

R2020b: Когда вы увеличиваете масштаб графика путем прокрутки в течение приблизительно двух секунд, график имеет о пятисекундной задержке завершения анимации изменения масштаба.

R2021a: анимация изменения масштаба сразу завершается после того, как вы закончите действие прокрутки.

Графики в Приложениях: Улучшенная производительность для графиков в полярной системе координат, визуализации объема, строит больше чем с 16 осями и более старыми системами

Отображая графики в полярной системе координат, визуализация объема или больше чем 16 осей в приложении имеет улучшенную производительность. Улучшение влияет на графики, отображенные в приложениях:

  • Графики, которые отображены в приложении, созданном с App Designer

  • Графики, отображенные на рисунке, созданном с uifigure функция

Системы с более старыми графическими драйверами могут испытать улучшение для всех типов графиков, которые создаются в рамках приложений, и фигуры упомянули выше. Например, драйверы Intel ранее, чем версия 10.0.0.0 для систем Windows испытают дополнительные улучшения.

Этот код создает полярный график и выполняет for цикл, который изменяет значения theta в каждой итерации. for цикл выполняется о 2x быстрее, чем в R2020b.

function timingPolar
f = uifigure;
pax = polaraxes('parent',f);
theta = 0:0.01:2*pi;
rho = sin(2*theta).*cos(2*theta);
pp = polarplot(pax, theta,rho);
pax.FontSize = 12;
drawnow

tic;
for i=1:100
    pp.ThetaData = pp.ThetaData + .02*pi;
    drawnow
end
toc
end

Аппроксимированные времена выполнения:

R2020b: 10,15 с

R2021a: 5,30 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызова функционального timingPolar.

Графики в Приложениях: Улучшенная производительность для графиков с большими количествами маркеров

Производительность улучшается для изменения определенных типов графиков в приложениях. Можно наблюдать улучшение, когда следующие условия верны:

  • Графики отображены в приложении App Designer, или они отображены на рисунке, созданном с uifigure функция.

  • Ваша система запускает локально установленную версию MATLAB на современном Windows или macOS системе.

  • Вы запускаете код или из окна команды MATLAB или в программном файле (.m файл).

Обратите внимание на то, что графики, созданные в live скриптах, не показывают это улучшение.

Графики обычно содержат большие количества маркеров, и ваш код обновляет аспект тех маркеров, таких как их положения. Улучшение является более значительным, когда вы увеличиваете число маркеров. Например, если вы создаете график рассеивания с 10 миллионами маркеров и меняете положения маркера 10 раз, эффективность в R2021a о 1.3x быстрее, чем в R2020b.

function timingScatter
f = uifigure;
a = axes(f);
x = rand(1e7, 2);
s = scatter(a,x(:,1),x(:,2),'Marker','*');
drawnow;

tic;
for i=1:10
    x = rand(1e7,2);
    s.XData = x(:,1);
    s.YData = x(:,2);
    drawnow
end
toc
end

Аппроксимированные времена выполнения:

R2020b: 19,43 с

R2021a: 14,88 с

Код был синхронизирован на macOS 10.14.6, Ядро Intel i9 центральный процессор система тестирования на 3,60 ГГц путем вызова функционального timingScatter.

Live Editor: Улучшенная производительность при сохранении больших live скриптов или функций

При сохранении больших live скриптов или функций, можно продолжить использовать Live Editor раньше в R2021a, чем в R2020b. В то время как вы продолжаете использовать Live Editor, MATLAB сохранил файл в фоновом режиме. Когда MATLAB закончил сохранить файл, звездочка (*) рядом с именем файла исчезает, указывая, что файл сохранен.

Например, на Windows 10, Intel Xeon E5-1650 CPU система тестирования на 3,60 ГГц, если вы сохраняете live скрипт, содержащий 35 000 строк кода, и затем кликаете по строке заголовка другого документа, открытого в Live Editor, MATLAB сразу, переключается на другой открытый документ. В R2020b существует значимая задержка, прежде чем MATLAB переключится на другой открытый документ.

Инструменты разработки программного обеспечения

Проекты: Перечислите все ссылки на проекты текущего проекта

Можно теперь использовать listAllProjectReferences программно перечислять все проекты в ссылочной иерархии заданного проекта.

Проекты: Перечислите файлы проекта, на которые повлияли,

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

Зависимость Анализатор: Найдите требуемые дополнения

Начиная в R2021a, Зависимость Анализатор обнаруживает и перечисляет требуемые дополнения, включая приложения и тулбоксы, для целого проекта или для выбранных файлов. Зависимость Анализатор не может обнаружить требуемые пакеты поддержки. Для получения дополнительной информации смотрите, Находят Необходимые продукты и Дополнения.

Среда Модульного тестирования: Создайте исполнителей тестов с помощью альтернативного синтаксиса

Можно теперь использовать testrunner функция, чтобы создать бегуна для тестов, созданных с помощью среды модульного тестирования MATLAB или Simulink® Test™. В предыдущих релизах можно явным образом создать бегуна только путем вызова одного из статических методов matlab.unittest.TestRunner класс.

Используйте testrunner функция, чтобы создать бегуна по умолчанию, минимального бегуна без плагинов, установленных или бегуна, сконфигурированного для вывода текста. Например, создайте бегуна по умолчанию, чтобы запустить тесты в тестовом классе.

suite = testsuite('MyTestClass');
runner = testrunner;
results = run(runner,suite);

Среда Модульного тестирования: Инициализируйте свойства параметризации во время создания набора

Начиная в R2021a, можно задать свойства параметризации, которые не имеют значения по умолчанию. Эта функция полезна, когда параметры не могут быть определены в то время, когда MATLAB загружает тестовое определение класса. Чтобы инициализировать свойство параметризации во время создания тестового набора, используйте статический метод с TestParameterDefinition атрибут. Для получения дополнительной информации смотрите, Задают Параметры во Время Создания Набора.

Среда Модульного тестирования: Запустите тесты параллельно на основанном на потоке пуле

Можно теперь запустить тесты на основанном на потоке параллельном пуле (требует Parallel Computing Toolbox). Чтобы запустить тесты с помощью рабочих потока, запустите основанный на потоке пул и затем вызовите runInParallel метод или runtests функция с UseParallel аргумент пары "имя-значение".

Основанные на потоке параллельные пулы поддерживают только подмножество функциональности среды тестирования и MATLAB. Для получения дополнительной информации смотрите runInParallel или runtests.

Среда Модульного тестирования: Запустите тесты в MATLAB Online в интерактивном режиме

Начиная в R2021a, можно запустить тесты в MATLAB Online в интерактивном режиме. Когда вы открываете .m файл, задающий функциональный или основанный на классах тест в MATLAB Online, панель инструментов позволяет вам запустить все тесты в файле или запустить текущий тест в файле. Кроме того, можно настроить тестовый прогон с опциями, такими как запущение тестов параллельно (требует Parallel Computing Toolbox), или запускающие тесты с заданным уровнем выходной детали.

Раздел Run Tests во вкладке Editor панели инструментов обеспечивает альтернативу программно запущению тестов с runtests функция. Для получения дополнительной информации смотрите Запущенные Тесты в Редакторе.

Среда тестирования приложения: Выполните жесты на панелях и таблицах

Среда тестирования приложения поддерживает жесты на большем количестве компонентов пользовательского интерфейса:

Среда тестирования приложения: Закройте аварийное диалоговое окно перед окном рисунка

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

fig = uifigure;
uialert(fig,'File not found','Invalid File')

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.dismissAlertDialog(fig)

Функциональность, удаляемая или измененная

Символьные данные не поддерживаются в пользовательских примерах demos.xml файл

Изменение поведения

При запуске в R2021a, при создании пользовательских примеров, символьные данные не поддерживаются в описании demos.xml файл. Если у вас есть demos.xml файл, который содержит символьные данные, такие как <>, ', "и, &, описание не появляется правильно в Браузере документации.

Исправить существующий demos.xml это содержит символьные данные, используйте patchdemoxmlfile функция. patchdemoxmlfile исправляет заданный demos.xml файл, заменяя символьные данные на несимвольные данные.

Например, исправьте demos.xml файл в папке D:\Work\mytoolbox\help:

patchdemoxmlfile D:\Work\mytoolbox\help

Интерфейсы к внешним языкам

Интерфейс C++: Поддержка функций языка C++

Интерфейс C++ поддерживает эти дополнительные функции языка C++.

Интерфейс C++: опции Издателя и анализ

Интерфейс C++ поддерживает эти функции конфигурации сборки.

  • Сгенерируйте интерфейс от заголовка и источника (.cpp) файлы. Передайте .cpp или .hpp файл в clibgen.generateLibraryDefinition SourceFiles аргумент.

  • Сгенерируйте интерфейс от заголовка и .dll файл для Microsoft Visual Studio® компиляторы. Передайте .dll файл в clibgen.generateLibraryDefinition LibraryFiles аргумент.

  • Улучшенные сообщения поиска и устранения неисправностей.

Пакеты Java, которые будут удалены

Пакеты Java и подпакеты, которые в настоящее время поставляются с MATLAB, не будут доступны в MATLAB в будущем релизе.

Вопросы совместимости

Чтобы продолжить использовать пакет Java, установите его файл JAR и добавьте файл JAR в статический путь в MATLAB с помощью инструкций в Статическом Пути.

Engine Java: поддержка объектов значения MATLAB

Чтобы работать с объектами значения MATLAB в приложении механизма Java, используйте com.mathworks.matlab.types.ValueObject класс в Сводных данных Engine API Java. Можно создать объект значения в MATLAB, возвратить его в Java и вызвать его методы. Для получения информации об отображении типов данных Java к типам данных MATLAB смотрите Преобразования типов данных Java.

Интерфейс Python и Engine: поддержка Версии 3.6 прекращена

Поддержка версии 3.6 Python прекращена.

Вопросы совместимости

Чтобы гарантировать постоянную поддержку ваших приложений, обновите до поддерживаемой версии Python, любой версии 3.7 или 3.8. Для получения дополнительной информации смотрите Версии Python, Совместимого с продуктами MATLAB Релизом.

Perl 5.32.0: поддержка MATLAB на Windows

С R2021a MATLAB на Windows поставляется с обновленной версией Perl, версии 5.32.0.

  • Смотрите www.perl.org для стандартного распределения Perl, источника Perl и информации об использовании Perl.

  • См. https://metacpan.org/pod/HTML::Parser для стандартного распределения HTML::Parser, исходный код и информация об использовании HTML::Parser.

  • См. https://metacpan.org/pod/HTML::Tagset для стандартного распределения HTML:Tagset, исходный код и информация об использовании HTML:Tagset.

Вопросы совместимости

Если вы используете perl команда на платформах Windows, смотрите www.perl.org для получения информации об использовании этой версии языка программирования Perl.

Аппаратная поддержка

Поддержка добавляется для датчиков IMU

Пакет поддержки MATLAB для Оборудования Raspberry Pi теперь предоставляет генерации кода и соединенной поддержке IO функциям Raspberry Pi для этих датчиков IMU:

  • HTS221

  • LPS22HB

  • LSM303C

  • LSM6DSL

  • LSM9DS1

  • MPU-6050

  • MPU-9250

Новые функциональности добавляются к приложению Raspberry Pi Resource Monitor

Raspberry Pi Resource Monitor App от Пакета поддержки MATLAB для Оборудования Raspberry Pi был улучшен до:

  • Отобразите периферийные устройства, используемые в MATLAB или приложении Simulink, развернутом на оборудовании Raspberry Pi

  • Включите или отключите периферийные устройства

  • Проверяйте на недостающие библиотеки и пакеты

  • Отобразите все процессы, в настоящее время работающие на оборудовании Raspberry Pi

R2020b

Новые возможности, исправления ошибок, Вопросы совместимости

Среда

MATLAB Online Доступность: Используйте программу экранного доступа, чтобы взаимодействовать с Командным окном и создать скрипты и функции

В MATLAB Online можно использовать программу экранного доступа, чтобы взаимодействовать с Командным окном, создать и отредактировать скрипты и функции в Редакторе, и перейти через инструменты рабочего стола MATLAB. Используя программу экранного доступа не поддерживается в Live Editor.

Для получения дополнительной информации смотрите Использование Программа экранного доступа в MATLAB Online.

Live Editor Имэджес: Добавьте альтернативный текст в изображения

Можно добавить альтернативный текст в изображение в live скрипте или функционировать, чтобы сделать его доступным для индивидуумов, использующих программу экранного доступа. Чтобы добавить альтернативный текст, щелкните правой кнопкой по изображению и выберите Edit Image... из контекстного меню. Добавьте текст в поле редактирования Alt Text.

Live Editor Имэджес: Измените размер изображений

Чтобы изменить размер изображения в live скрипте или функционировать, щелкните правой кнопкой по изображению и выберите Edit Image... из контекстного меню. Затем чтобы задать размер относительно исходного размера изображения, выберите Relative (%) и задайте ширину и высоту изображения как процент оригинального изображения. Чтобы задать абсолютный размер, выберите Absolute (px) и задайте ширину и высоту изображения в пикселях. Чтобы возвратиться к исходному размеру изображения, щелкните правой кнопкой по изображению и выберите Reset Image.

Live Editor Хиперлинкс: Перейдите к существующим файлам от live скрипта или live функции с помощью ссылок

Используйте гиперссылки, чтобы перейти к существующим файлам от live скрипта или live функции. Чтобы вставить гиперссылку на существующий файл, выберите текст, чтобы соединиться в текущем файле, перейти к вкладке Insert и нажать Hyperlink. Отредактируйте свой (дополнительный) текст отображения, выберите Existing File, и затем введите или просмотрите путь к файлу.

Для получения дополнительной информации о добавляющих гиперссылках в live скрипты и live функции, смотрите Файлы формата в Live Editor.

Live Editor Экспорт: Экспорт все live скрипты и live функции в папке к стандартному формату

Можно экспортировать все live скрипты и live функции в папке к стандартному формату. Доступные форматы включают PDF, Microsoft Word, HTML и LaTeX. Чтобы экспортировать содержимое папки, на вкладке Live Editor, выбирают Save> Export Folder.... Затем задайте формат экспорта, местоположение папки, которая будет экспортироваться, и местоположение для экспортируемых файлов.

Dialog box for specifying folder export options

Для получения дополнительной информации об экспорте live скриптов и live функций, смотрите Live скрипты Доли и Функции.

matlabRelease Объект: запросите информацию о релизе MATLAB

matlabRelease новый объект, который позволяет быстро запросить информацию о MATLAB вашей системы. isMATLABReleaseOlderThan позволит вам определять, является ли ваш текущий релиз MATLAB более старым, чем заданный релиз. Используйте эти функции, чтобы быстро проверить версии выпуска.

Функциональность Параллели запроса: Определите, доступна ли поддержка функциональности Parallel Computing Toolbox

Можно теперь запросить, параллельна ли поддержка графического процессора и функциональности пула, доступно в установке MATLAB с помощью следующих функций:

Используйте эти функции, чтобы проверять поддерживаемую функциональность и постараться не выполнять код, который использует определенные аппаратные ограничения.

Инструмент сравнения: Сравните текстовые файлы в MATLAB Online

Начиная в R2020b, можно сравнить текстовые файлы в MATLAB Online с помощью visdiff функция. Чтобы сравнить текстовые файлы, в Командном окне, введите:

 visdiff('filename1.m','filename2.m');

Язык и программирование

pattern Объект и Функции: Совпадайте с шаблонами в текстовых функциях

Паттены являются интуитивной альтернативой регулярным выражениям для соответствия с шаблонами в тексте. Функции шаблона могут быть объединены вместе в выражениях для того, чтобы создать комплексные шаблоны, которые могут затем использоваться в качестве входных параметров для ищущих текст функций. Например, чтобы задать шаблон для MATLAB выпускают имена, которые запускаются с "R", сопровождаемого годом из четырех знаков, и затем или "a" или "b":

pat = "R" + digitsPattern(4) + ("a"|"b");

Совпадайте с тем шаблоном в строке:

str = "String arrays were introduced in R2016b. Patterns were added in R2020b.";
extract(str,pat)
ans =
  2x1 string array
    "R2016b"
    "R2020b"

Для получения дополнительной информации смотрите pattern.

extract Функция: Извлеките подстроки из строк

Чтобы извлечь подстроки из строк, используйте extract функция. Можно задать подстроку, которая будет извлечена как текст или при помощи pattern возразите, чтобы совпадать с текстом в подстроке.

Функции: Новая валидация функционирует для аргументов и свойств

Следующие функции спроектированы для использования в валидации свойства и аргументе функции.

  • mustBeA Подтвердите то значение, прибывает из одного из заданных классов

  • mustBeNonmissing Подтвердите то значение, не отсутствует

  • mustBeFloat Подтвердите то значение, массив с плавающей точкой

  • mustBeScalarOrEmpty Подтвердите то значение, скаляр или пустой

  • mustBeVector Подтвердите то значение, вектор

  • mustBeInRange Подтвердите то значение, находится в заданной области

  • mustBeFile Подтвердите тот путь, относится к файлу

  • mustBeFolder Подтвердите тот вход path, относится к папке

  • mustBeValidVariableName Подтвердите то входное имя, допустимое имя переменной

  • mustBeText Подтвердите то значение, массив строк, вектор символов или массив ячеек из символьных векторов

  • mustBeTextScalar Подтвердите то значение, одна часть текста

  • mustBeNonzeroLengthText Подтвердите то значение, массив строк, вектор символов или массив ячеек из символьных векторов, который имеет ненулевую длину

underlyingType, isUnderlyingType, и mustBeUnderlyingType Функции: Запросите базовый тип данных классов

class функция полезна, чтобы определить класс переменной. Однако некоторые классы в MATLAB могут содержать базовые данные, которые имеют другой тип по сравнению с какой class возвращается. Классы в качестве примера включают gpuArray, dlarray, и distributed массивы. underlyingType, isUnderlyingType, и mustBeUnderlyingType функции теперь обеспечивают простой способ запросить базовые типы данных тех классов.

Для большинства классов, class(X) и underlyingType(X) дайте тот же ответ. Однако для классов, которые могут содержать базовые данные другого типа, возвращаемые значения отличаются. Для gpuArray X это содержит данные типа double, например, class(X) возвращает 'gpuArray', тогда как underlyingType(X) возвращает базовый тип данных MATLAB, 'double'.

height и width Функции: Возвратите количество строк или столбцов в массиве

height и width функции теперь работают с массивами в дополнение к таблицам. height возвращает количество строк в массиве и width возвращает количество столбцов.

Преобразования класса: операции Присвоения преобразуют больше классов во встроенные типы данных

В операторах присваивания, таких как A(1:k) = C, где A имеет встроенный тип данных, такой как double, MATLAB пытается преобразовать C быть совпадающим типом данных как A использование серии преобразований. То поведение преобразования изменилось.

  • Ранее только одно преобразование было предпринято. Это преобразование попыталось использовать функцию преобразования класса, такую как logical(C) или double(C), получить переменную с совпадающим типом данных как A.

  • Теперь, если первое преобразование перестало работать, или если оно возвращает тип, который отличается от A, затем MATLAB делает попытку вторичного преобразования с cast(C,"like",A). Если C принадлежит классу, который задает a cast метод, который поддерживает "like" отметьте, и тот метод возвращает значение с тем же типом как A, затем MATLAB использует получившееся значение, чтобы выполнить присвоение в A.

Если обе попытки преобразования перестали работать, то MATLAB выдает MATLAB:invalidConversion ошибка.

Пример кода, который использовал для ошибки, но теперь выполняется,

a = 1:6;
g = distributed([11 12 13]);
a(1:3) = g
a =

    11    12    13     4     5     6

Вопросы совместимости

Некоторые операторы присваивания, которые раньше выдавали ошибку теперь, выполняются. Если ваш код использовал ошибки, которые MATLAB выдал для тех преобразований, такой как в try/catch блокируйтесь, затем ваш код больше не может фиксировать те ошибки.

Функциональность, удаляемая или измененная

hex2dec, bin2dec, и base2dec Функции: Предупреждение о проблемах, когда входные параметры больше или равны flintmax

Изменение поведения

Начиная в R2020b, hex2dec, bin2dec, и base2dec функции выдают предупреждение, когда их входные параметры имеют значения, больше, чем или равный flintmax. В предыдущих релизах эти функции не выдавали предупреждение, когда их входные параметры имели такие значения.

Эти функции теперь выдают предупреждение потому что входные параметры, представляющие целые числа, больше, чем или равный flintmax не может быть представлен точно так же, как значения с плавающей точкой с двойной точностью.

Преобразовывать значения, больше, чем flintmax точно, рассмотрите одну из этих альтернатив:

  • Вместо скалярных вводов текста используйте шестнадцатеричные или бинарные литералы, представляющие те же значения. Когда вы пишете значение как литерал, MATLAB хранит его как целое число, которое представляет значение точно. Для получения дополнительной информации смотрите Шестнадцатеричные и Двоичные значения.

  • Преобразовывать шестнадцатеричные входные параметры, больше, чем flintmax, можно использовать sscanf функция с %lx оператор. Когда вы используете %lx, конвертированные значения являются целыми числами, которые имеют uint64 тип данных. Эти целые числа имеют достаточно устройства хранения данных, чтобы представлять значения, больше, чем flintmax точно.

    .

Определение классов и пакетов: Используя schema.m не будет поддерживаться в будущем релизе

Все еще работает

Поддержка классов и пакетов, заданных с помощью schema.m файлы будут удалены в будущем релизе. Замените существующие основанные на схеме классы на классы, заданные с помощью classdef ключевое слово.

Анализ данных

Неявное расширение: для calendarDurationкатегориальныйdatetime, и duration массивы, автоматически расширьте размерности длины 1 при применении поэлементных операций и функций

calendarDurationкатегориальныйdatetime, и duration массивы теперь поддерживают неявное расширение для определенных операций и функций. В предыдущих релизах эти операции и функции только поддержали неявное расширение для числовых и логических массивов.

Неявное расширение является обобщением скалярного расширения. Со скалярным расширением скаляр расширяется, чтобы быть одного размера с другим массивом, чтобы упростить поэлементные операции. С неявным расширением поэлементные операторы и перечисленные в таблице функции могут неявно расширить свои входные параметры, чтобы быть одного размера, пока массивы имеют совместимые размеры. Два массива имеют совместимые размеры, если для каждой размерности размеры размерности входных параметров являются или тем же самым или одним из них, 1. Смотрите Совместимые Размеры Массивов для Основных Операций и Массив по сравнению Матричных операций для получения дополнительной информации.

Для каждого оператора или функции, таблица показывает типы данных, которые получили поддержку неявного расширения в R2020b.

Оператор или функция

Типы данных с новой поддержкой неявного расширения в R2020b

+

-

calendarDurationdatetime, и duration

.*

calendarDurationкатегориальный, и duration

./

.\

duration

.^

'none'

==

~=

categoricaldatetime, и duration

<

<=

>

>=

categorical (только порядковые массивы), datetime, и duration

max

min

categorical (только порядковые массивы), datetime, и duration

mod

rem

duration

isbetween

datetime и duration

Вопросы совместимости

Если ваш код использует какой-либо из поэлементных операторов или упомянутых выше функций и использует ошибки, которые MATLAB возвращает в несовпадающие размеры, особенно в try/catch блокируйтесь, затем ваш код больше не может фиксировать те ошибки. Это изменение - то, потому что некоторые комбинации входных размеров, которые ранее вызвали ошибки, теперь допустимы.

Например, в более старых релизах MATLAB, вы не могли добавить строку и вектор-столбец, которые являются duration векторы, но те операнды теперь допустимы для сложения с неявным расширением. Другими словами, выражение как seconds([1 2]) + seconds([1; 2]) ранее возвращенный ошибка несоответствия размера, но теперь это выполняется.

normalize Функция: Масштабируйте данные межквартильным размахом

Можно использовать 'medianiqr' метод с normalize функционируйте, чтобы сосредоточить данные по медиане 0 и масштабировать их, чтобы иметь межквартильный размах 1. Кроме того, при использовании 'scale' метод, новый 'iqr' опция позволяет вам масштабировать данные межквартильным размахом.

groupsummary Функция: Обобщите данные с помощью функций, которые требуют нескольких входных параметров

При определении итогового расчета, groupsummary теперь указатели на функцию поддержек и анонимные функции, которые требуют больше чем одного входного параметра.

fillmissing Функция и Чистый Пропавший Live Editor Данных Задача: Задайте максимальный размер разрыва, чтобы заполнить

При заполнении недостающих данных с помощью fillmissing функция, можно использовать 'MaxGap' пара "имя-значение", чтобы заполнить только разрывы недостающих данных до заданного размера. При использовании Чистого Пропавшего Live Editor Данных задача введите размер разрыва рядом с Max gap to fill.

Чистый Live Editor Данных о Выбросе Задача: Задайте выбросы на основе порогов процентили

Чистый Live Editor Данных о Выбросе задача теперь предлагает опцию, чтобы задать выбросы в данных как точки за пределами области значений процентили. Чтобы использовать эту опцию, выберите Percentiles как Detection method и задайте значения для Lower threshold и Upper threshold.

Функциональность, удаляемая или измененная

table и timetable Типы данных: Превратитесь в выбор имени размерности при объединении или присоединении таблиц и расписаний

Изменение поведения

В R2020b, когда вы комбинируете таблицы и расписания, названия размерности выходной таблицы происходят от первых имен размерности не по умолчанию во входной таблице и расписаниях. В предыдущих релизах названия размерности всегда происходили от первого входа, даже когда та таблица или расписание имели имена размерности по умолчанию.

Например, если TT1 и TT2 расписания и TT2 имеет имя не по умолчанию 'Start' как имя его первой размерности, затем когда вы конкатенируете расписания, выход также имеет 'Start' как имя его первой размерности. Имя первой размерности TT1 'Time', но это - имя размерности по умолчанию. В предыдущих релизах именем первой размерности выхода был 'Time' потому что то имя было в первом входном расписании.

TT1 = timetable(seconds(1:2)',[1;2]);
TT2 = timetable(seconds(1:2)',[3;4]);
TT2.Properties.DimensionNames{1} = 'Start';
TT = [TT1 ; TT2]
TT =

  4×1 timetable

    Start    Var1
    _____    ____

    1 sec     1  
    2 sec     2  
    1 sec     3  
    2 sec     4  

Это изменение в поведении влияет на функции в этом списке.

  • cat

  • horzcat

  • innerjoin

  • outerjoin

  • setxor

  • union

  • vertcat

Повторно синхронизируйте Live Editor Расписания Задача: Используйте линейную интерполяцию в качестве общего правила по умолчанию для корректировки данных

Изменение поведения

В R2020b линейная интерполяция является общим правилом по умолчанию для корректировки данных в Повторно синхронизировать Live Editor Расписания задача. В предыдущих релизах общее правило по умолчанию состоит в том, чтобы заполнить разрывы в выходном расписании с отсутствующими значениями.

Однако даже в R2020b правило по умолчанию возвращается к заполнению разрывов с отсутствующими значениями, если любое из этих условий соблюдают:

  • Времена строки входного расписания не сортируются.

  • Входное расписание имеет по крайней мере одну переменную, тип данных которой не является числовым, datetime, или duration.

Импорт и экспорт данных

readstruct и writestruct функции: Считайте и напишите структурированные данные в XML-файлах

Считайте и напишите структурированные данные, сохраненные в XML-файлах с помощью readstruct и writestruct функции:

  • Используйте readstruct функционируйте, чтобы считать структурированные данные, сохраненные как XML-файлы.

  • Используйте writestruct функционируйте, чтобы записать структуры MATLAB в XML-файлы.

readlines функция: Прочитайте строки в текстовом файле как массив строк

Используйте readlines функционируйте, чтобы прочитать каждую строку в текстовом файле как массив строк N-1, где N является количеством линий в текстовом файле. Для получения дополнительной информации смотрите readlines.

Файлы электронной таблицы: Настройте форматирование при записывании данные в файлы электронной таблицы с PreserveFormat и AutoFitWidth

writecell, writetable, writematrix, и writetimetable функции имеют две новых пары "имя-значение", которые включают вам в файлы электронной таблицы формата: 'PreserveFormat' и 'AutoFitWidth'.

  • 'PreserveFormat' задает, сохранить ли форматирование существующей ячейки исходных данных.

  • 'AutoFitWidth' задает, настроить ли автоматически ширину столбца файла электронной таблицы, чтобы соответствовать данным.

imread функция и Tiff объект: Считайте изображения из Aperio SVS и файлов TIFF, содержащих сжатие JPEG2000

imread функционируйте и Tiff объект может теперь считать файлы изображений микроскопии Aperio SVS и файлы изображения TIFF со сжатием JPEG2000.

ArrayDatastore объект: Создайте хранилища данных из данных в оперативной памяти

arrayDatastore функция создает datastore из данных в оперативной памяти. Можно объединить ArrayDatastore объекты с хранилищами данных, которые содержат дисковые данные (такие как ImageDatastore и TabularTextDatastore объекты) использование combine и transform функции. Выбрать пути который ArrayDatastore возразите читает и возвращает данные, задайте эти свойства: 'IterationDimension'ReadSize , и 'OutputType'. Для получения дополнительной информации смотрите arrayDatastore.

Datastore: Преобразуйте несколько хранилищ данных с помощью transform функция

transform функция теперь принимает несколько хранилищ данных как вход. Задайте каждый datastore как другой входной параметр.

ds = transform(@fcn, ds1, ds2, ds3);

transform функция создает один TransformedDatastore объект от получившегося преобразования. Для получения дополнительной информации о TransformedDatastore возразите, смотрите TransformedDatastore.

FileDatastore объект: Переставьте и создайте подмножества FileDatastore

Можно использовать shuffle и subset функции, чтобы переставить и создать подмножества FileDatastore объект. Необходимо использовать 'ReadMode','file' аргумент пары "имя-значение" использованию subset и shuffle на FileDatastore объект.

writeall функция: Запишите данные из текста и файлов электронной таблицы различным группам строки в файлах Parquet

В R2020b, при записи, чтобы устелить паркетом файлы с помощью writeall функция, вы не должны устанавливать ReadSize свойство TabularTextDatastoreSpreadsheetDatastore, или ParquetDatastore объекты к 'file'. writeall запишет объем данных, заданный ReadSize свойство datastore отдельной группе строки в файле Parquet.

fileparts функция: Проанализируйте имена файлов, заданные как массивы ячеек из символьных векторов и строковые массивы

fileparts функция теперь принимает массивы ячеек из символьных векторов и строковые массивы как входные имена файлов.

Аудио устройства: Обновите доступные аудио устройства с помощью audiodevreset функция

Можно использовать audiodevreset функционируйте, чтобы обновить доступные аудио устройства после добавления или удаления устройства от вашей машины. Используйте audiodevinfo функционируйте, чтобы просмотреть обновленный список аудио устройств.

Звуковые файлы и веб-данные: Считайте и запишите удаленно хранившие звуковые файлы с помощью audioreadaudiowrite, и audioinfo

Можно получить доступ к звуковым файлам, хранившим в удаленных местоположениях, таких как Amazon S3, Windows Azure Blob Service и HDFS™, с помощью audioread, audiowrite, и audioinfo функции.

При чтении данных из удаленного местоположения необходимо задать полный путь с помощью универсального локатора ресурса (URL). Например, считайте .wav файл от облака Amazon S3.

audio = audioread('s3://bucketname/path_to_file/sample_audio.wav');
Для получения дополнительной информации о подготовке MATLAB, чтобы получить доступ к вашему сервису оперативного хранения, смотрите работу с Удаленными данными.

Файлы HDF5 и веб-данные: Считайте и запишите удаленно сохраненные файлы HDF5 с помощью существующих функций HDF5

Функции MATLAB HDF5 могут теперь работать с удаленными файлами. Используйте существующий высокий уровень и низкоуровневые функции, чтобы считать и записать файлы, хранившие в удаленных местоположениях, таких как Amazon S3, Windows Azure Blob Service и HDFS.

При чтении данных из удаленного местоположения необходимо задать полный путь с помощью универсального локатора ресурса (URL). Например, отобразите метаданные файла HDF5 от облака Amazon S3.

 h5disp('s3://bucketname/path_to_file/my_file.h5');
Для получения дополнительной информации о подготовке MATLAB, чтобы получить доступ к вашему сервису оперативного хранения, смотрите работу с Удаленными данными.

Файлы HDF5: Считайте и запишите имена файлов, закодированные с помощью символов Unicode

Можно теперь считать и записать имена файлов, закодированные как символы Unicode с помощью функций высокоуровневого и низкого уровня HDF5 в MATLAB.

Научные Библиотеки Формата файла: библиотека NetCDF обновила до 4.7.3

Библиотека NetCDF обновляется до версии 4.7.3.

Библиотеки Формата Файла изображения: библиотека LibTIFF обновила до версии 4.1.0

Библиотека LibTIFF обновляется до версии 4.1.0.

Интерфейс Bluetooth: Поддержка связи с bluetooth-устройствами

Можно теперь использовать MATLAB, чтобы связать с bluetooth-устройствами и передать и получить ASCII и двоичные данные.

Начните с новым интерфейсом путем просмотра списка всех bluetooth-устройств на использующем компьютеры bluetoothlist. В этом примере модуль Bluetooth HC-06 соединяется к компьютеру.

list = bluetoothlist
list=1×4 table
        Name            Address        Channel          Status      
    _____________    ______________    _______    __________________
       
    "HC-06"          "98D331FB3B77"    1          "Ready to connect"     
Затем создайте bluetooth возразите, запишите данные к устройству и читайте из него. В этом примере HC-06 сконфигурирован как устройство закольцовывания.
b = bluetooth("HC-06");
write(b,1:10);
read(b,10);

Для получения дополнительной информации смотрите Коммуникацию Bluetooth.

Клиентский Интерфейс TCP/IP: Новые функции и свойства

Клиентский интерфейс TCP/IP имеет новый набор функций и свойств.

Можно все еще выполнить следующие операции с помощью существующих функций:

  • Создайте клиентскую связь TCP/IP с сервером TCP/IP с помощью tcpclient функция.

  • Считайте данные из удаленного хоста с помощью read функция.

  • Запишите данные к удаленному хосту с помощью write функция.

Можно теперь выполнить следующие операции с помощью новых функций:

  • Запустите эхо сервер TCP/IP с помощью echotcpip функция.

  • Прочитайте строку данных о строке ASCII из удаленного хоста с помощью readline функция.

  • Запишите линию данных о строке ASCII к удаленному хосту с помощью writeline функция.

  • Установите терминатор строки для связи строки ASCII с удаленным хостом с помощью configureTerminator функция.

  • Установите функцию обратного вызова и инициируйте условие для связи с удаленным хостом с помощью configureCallback функция.

  • Сбросьте буферы для связи с удаленным хостом с помощью flush функция.

Начните с клиентским интерфейсом TCP/IP путем создания a tcpclient объект, соединенный с TCP/IP, повторяет сервер, записывая данные к нему, и читая из него.

echotcpip("on",3030)
t = tcpclient("localhost",3030)
write(t,1:5,"uint8")
read(t,5);

Для получения дополнительной информации смотрите Коммуникацию TCP/IP.

Интерфейс Последовательного порта: Улучшенная производительность

serialport интерфейс показывает улучшенную производительность по serial интерфейс. Например, этот код для записи и чтения данных с serialport объект о 1.1x быстрее, чем код для записи и чтения данных с serial объект со скоростью в бодах по умолчанию 9 600.

% s is a serial object
function timingTest(s,bytecount)
fwrite(s,1:bytecount,"uint8");   
fread(s,bytecount,"uint8");
end
% s is a serialport object
function timingTest(s,bytecount)   
write(s,1:bytecount,"uint8");   
read(s,bytecount,"uint8");
end

Аппроксимированные времена выполнения для различных скоростей в бодах следуют:

 s.BaudRate
96001920056000115200
serial120 мс68 мс31 мс23 мс
serialport109 мс55 мс21 мс11 мс

Код был синхронизирован на Windows 10, Intel(R) Xeon(R) CPU E5-1650 v4 система тестирования на 3,60 ГГц с помощью timeit функция:

bytecount = 100;
timeit(@()timingTest(s,bytecount))
Тесты были сделаны с помощью последовательного петлевого коннектора.

Для получения дополнительной информации смотрите Устройства Последовательного порта.

Функциональность, удаляемая или измененная

'PreserveVariableNames' свойство readtable больше не рекомендуется

Изменение поведения

'PreserveVariableNames' свойство readtable был удален. Используйте 'VariableNamingRule' пара "имя-значение" вместо этого. Задайте одно из следующих значений:

  • 'preserve' имена переменных консервов, которые не являются допустимыми идентификаторами MATLAB, такими как имена переменных, которые включают символы non-ASCII и пробелы.

  • 'modify' преобразует недопустимые имена переменных в допустимые идентификаторы MATLAB.

UnderlyingDatastore свойство TransformedDatastore больше не рекомендуется

Изменение поведения

UnderlyingDatastore свойство TransformedDatastore был удален. Используйте UnderlyingDatastores свойство вместо этого. Вызов UnderlyingDatastores свойство возвращает массив ячеек, содержащий нуль или больше хранилищ данных. Для получения дополнительной информации смотрите TransformedDatastore.

partition функция добавляет остающиеся наблюдения в первые существующие разделы

Изменение поведения

Если вы задаете много разделов в partition функция, которая не является числовым фактором количества файлов в datastore, partition функция поместит каждое из остающихся наблюдений в существующих разделах, начиная с первого раздела.

Количество существующих разделов, которые содержат дополнительное наблюдение, равно остатку, полученному при делении количества файлов в datastore количеством разделов. Например, если ваш объект datastore содержит 23 файла, которые вы хотите разделить в 3 части, первые два раздела что partition создает будет содержать 8 файлов, и последний раздел будет содержать 7 файлов.

Сертификат сервера и валидация имени узла включены по умолчанию при доступе к серверам OPeNDAP с интерфейсом NetCDF

Изменение поведения

В R2020b интерфейс MATLAB NetCDF соединяется только с доверяемыми конечными точками протокола доступа к данным (DAP) по умолчанию. Ранее, когда вы получали доступ к серверу OPeNDAP, и сертификат сервера и валидация имени узла были отключены по умолчанию.

Чтобы изучить, как отключить сертификат сервера и валидацию имени узла при доступе к серверу OPeNDAP, смотрите Импорт Файлы NetCDF и Данные OPeNDAP.

isSingleReadPerFile был удален

isSingleReadPerFile функция matlab.io.datastore.FileWritable класс был удален.

Математика

Оптимизируйте Задачу Live Editor: Решите задачи оптимизации в интерактивном режиме

Оптимизировать задача Live Editor позволяет вам оптимизировать многомерные функции или решить скалярные уравнения в интерактивном режиме. Задача обеспечивает визуальный способ получить доступ fminbnd, fminsearch, fzero, и lsqnonneg решатели и набор их опции. Для примера смотрите, Оптимизируют Live Editor Тэска.

pagemtimes Функция: Выполните умножение матриц на страницах массивов N-D

Используйте pagemtimes функция, чтобы выполнить обработанное в пакетном режиме умножение матриц на страницах массивов N-D. В этом контексте массив N-D обработан как контейнер для нескольких 2D матриц.

pagetranspose и pagectranspose Функции: Транспонируйте страницы массивов N-D

Используйте pagetranspose и pagectranspose функции, чтобы транспонировать страницы массива N-D. В этом контексте массив N-D обработан как контейнер для нескольких 2D матриц.

svdsketch Функция: Вычислите факторы SVD матричного эскиза низкого ранга

svdsketch вычисляет факторы сингулярного разложения (SVD) эскиза низкого ранга входной матрицы. Эта операция сохраняет самые важные функции матрицы на основе заданного допуска. Для больших матриц, svdsketch может обычно вычислять аппроксимированный SVD быстрее, чем svds.

Функциональность, удаляемая или измененная

'cubic' метод interp1 выполняет кубическую свертку

Изменение поведения

В R2020b, 'cubic' метод интерполяции interp1 выполняет кубическую свертку. 'v5cubic' и 'cubic' методы интерполяции теперь выполняют тот же тип интерполяции, которая сопоставима с поведением interp2, interp3, и interpn. Кубический метод интерполяции свертки предназначается для однородно распределенных данных, и это отступает к 'spline' интерполяция для нерегулярно распределенных данных.

В предыдущих релизах, 'cubic' совпал с 'pchip', и только 'v5cubic' выполняемая кубическая свертка.

Графика

bubblechart, bubblechart3, и polarbubblechart Функции: Создайте пузырьковые графики в 2D, 3-D, и в полярных координатах

Используйте bubblechart и bubblechart3 функции, чтобы создать пузырьковые графики на 2D и 3-D Декартовых пробелах, соответственно. Используйте polarbubblechart функция, чтобы создать пузырьковые графики в полярных координатах.

Используйте следующие функции, чтобы настроить различные аспекты ваших пузырьковых диаграмм:

  • bubblelegend функция — Иллюстрирует соответствие между пузырьковыми размерами и значениями данных.

  • bubblelim функция — Управление соответствие между относительными пузырьковыми размерами и значениями данных.

  • bubblesize — Управляйте абсолютными пузырьковыми размерами в точках, где одна точка равняется 1/72 дюйма.

A bubble chart with a bubble legend, a 3-D bubble chart, and a polar bubble chart.

Графики роя и Scatter объекты: Визуализируйте распределения дискретных данных

Используйте swarmchart функция, чтобы визуализировать распределения рассеянных точек в дискретных значениях X. Используйте swarmchart3 функция, чтобы визуализировать распределения для комбинаций дискретного X и Y. Обе функции возвращают Scatter объекты, которые имеют эти новые свойства:

  • XJitter, YJitter, и ZJitter — Управляйте алгоритмом для распространения (дрожания) точки вдоль x - y - или z - размерности.

  • XJitterWidth, YJitterWidth, и ZJitterWidth— Управляйте максимальной суммой дрожания.

A swarm chart, a 3-D swarm chart, and a scatter plot with jitter along the y-dimension.

scatter Функция: Варьируйтесь прозрачность через все точки

Когда вы создаете график рассеивания с помощью scatter функция, можно варьироваться уровень прозрачности через точки путем установки AlphaData и AlphaDataMapping свойства Scatter объект.

Two series of scatter plots with varying levels of transparency.

tiledlayout и nexttile Функции: Улучшенное размещение легенд, и шкалы палитры и совместно использованные художественные оформления

Улучшенное размещение легенды и шкалы палитры

  • Можно теперь поместить совместно использованные легенды, совместно использованные шкалы палитры или дополнительные оси в любую из четырех внешних мозаик вокруг периметра мозаичного размещения графика. Для получения дополнительной информации смотрите nexttile.

    Tiled chart layout with shared colorbar in an outer tile.

  • Мозаичные размещения графика также оказывают больше поддержки для расположения легенд. Когда вы добавляете легенду в график, размещение оказывает лучшую поддержку для 'best', 'bestoutside', и 'none' опции местоположения.

Более сопоставимое размещение для разделяемых художественных оформлений и полярных осей

  • Когда вы включаете совместно использованные художественные оформления (такие как совместно использованные заголовки и шкалы палитры) и вручную настраиваете соотношения сторон осей, представление лучше и более сопоставимо с другими размещениями.

  • Представление также лучше для размещений, содержащих полярные оси с 'flow' расположение мозаики.

axis Функция: Заполните пределы по осям, чтобы показать отображенные на графике данные около пределов более ясно

Задайте 'padded' опция при вызове axis функционируйте, чтобы заполнить верхнее и нижние пределы x - и y - ось. Эта опция полезна, когда ваш график отображает данные около одного или нескольких пределов по осям.

Two plots with padded axis limits.

Заголовки, Подзаголовки и Подписи по осям: Добавьте подзаголовки в графики и выровняйте заголовки и подписи по осям с полем графика

Создайте подзаголовки

  • Создайте заголовок и подзаголовок для графика путем вызова title функция с двумя векторами символов или аргументами строки.

  • Для большего количества управления внешним видом каждого текстового объекта вызовите title и subtitle функции отдельно.

Plot with a title and subtitle.

Выровняйте заголовки и подписи по осям к полю графика

  • Выровняйте заголовок путем установки TitleHorizontalAlignment свойство осей к 'left', 'right', или 'center'.

  • Выровняйте подпись по осям путем установки LabelHorizontalAlignment свойство объекта линейки к 'left', 'right', или 'center'. Используйте XAxis, YAxis, или ZAxis свойство на объекте осей получить доступ к объекту линейки.

Например, этот код создает график с выровненным по левому краю заголовком и подписями по осям.

plot([0 3 1 6])
title('Experimental Results')
xlabel('Input Values')
ylabel('Measured Values')
ax = gca;
ax.TitleHorizontalAlignment = 'left';
ax.XAxis.LabelHorizontalAlignment = 'left';
ax.YAxis.LabelHorizontalAlignment = 'left';

Plot with left-aligned title and axis labels.

Всплывающие подсказки: Настройте содержимое всплывающей подсказки на автономной визуализации

Добавьте или удалите строки из всплывающих подсказок на автономной визуализации, которую вы создаете из таблиц. Можно настроить всплывающие подсказки для этой автономной визуализации:

  • Графики тепловой карты создали использование heatmap функция

  • Графики поля точек с крайними гистограммами, созданными с помощью scatterhistogram функция

  • Географические пузырьковые диаграммы создали использование geobubble функция

  • Параллельные графики координат создали использование parallelplot функция

Чтобы добавить или удалить строки, щелкните правой кнопкой по графику и наведите на Modify Data Tips. Затем выберите или отмените выбор табличных переменных.

turbo Палитра: jet альтернатива палитры с более перцепционно универсальными переходами

Используйте turbo палитра, чтобы отобразить визуализацию с помощью палитры, которая похожа на jet, но с более перцепционно универсальными переходами вдоль цветовой шкалы. Перцепционно универсальные палитры помогают вам визуализировать различия в своих данных более точно.

Эти шкалы палитры показывают различие между turbo и jet палитры. turbo палитра находится на верхней части, и jet палитра находится на нижней части.

Comparison of turbo and jet colormaps.

Редактор палитры: Настройте палитры с помощью модернизированного интерфейса

Настройте палитры с помощью модернизированного интерфейса Редактора Палитры. Начиная в R2020b, можно использовать Редактор Палитры для:

  • Импортируйте палитру как m-by-3 массив из рабочей области.

  • Сохраните индивидуально настраиваемую палитру как переменную рабочей области.

  • Переключите размещение, раскрашивает палитру.

  • Инвертируйте порядок, раскрашивает палитру.

  • Измените число элементов в палитре.

Modernized colormap editor

boxchart Функция: Используйте цвет, чтобы дифференцироваться между графиками поля

Используйте цвет, чтобы дифференцироваться между графиками поля путем определения 'GroupByColor',cgroupdata аргумент пары "имя-значение" boxchart. Функция создает график поля для каждой группы данных и присваивает тот же цвет группам с тем же cgroupdata значение. Можно задать цветную сгруппированную переменную с или без позиционной сгруппированной переменной. Для примера смотрите Использование Позиционные и Цветные Сгруппированные переменные.

im2gray и cmap2gray: Преобразуйте изображения и палитры к шкале полутонов

Используйте im2gray функционируйте, чтобы преобразовать окрашенный изображениями в шкалу полутонов. Используйте cmap2gray функционируйте, чтобы преобразовать палитру в шкалу полутонов.

validatecolor Функция: Вычислите нормированные триплеты RGB для названий цвета, шестнадцатеричных цветовых кодов или целочисленных значений

Используйте validatecolor функция, чтобы вычислить нормированные значения триплета RGB для цветов, заданных любым из следующих способов:

  • Названия цвета, такие как 'red' или 'green'

  • Шестнадцатеричные цветовые коды, такие как '#FF0000' или '#F00'

  • Целочисленные триплеты RGB, такие как uint8([255 0 0])

Маркеры: Задайте горизонтальные или вертикальные маркеры линии для графиков

Создайте графики с горизонтальными или вертикальными маркерами линии, когда вы вызовете функции построения графика такой как plot или scatter. Задайте горизонтальные маркеры линии с помощью подчеркивания ('_') символ. Задайте вертикальные маркеры линии с помощью трубопровода ('|') символ.

Sample plot that uses horizontal and vertical line markers.

surfc и meshc Функции: Задайте Z-уровень для контуров на объемных поверхностных диаграммах и сетчатых графиках

Когда вы создаете поверхность или сетчатый график с линиями контура с помощью surfc или meshc функции, можно отобразить контуры в любом z - уровень путем определения ZLocation свойство Contour объект. ZLocation свойство может иметь значение 'ZMin'zmax , или числовое значение. Значением по умолчанию является 'ZMin', который соответствует самому низкому уровню, показанному в поле графика.

Surface plots with contours at different z-levels.

animatedline Функция: Создайте анимированные линии в графиках в полярной системе координат

Создайте анимированные графики в полярной системе координат путем вызова animatedline функция и определение PolarAxes возразите как первый входной параметр.

colororder Функция: Управление раскрашивает географические пузырьковые диаграммы

colororder функционируйте теперь поддерживает графики, созданные с geobubble функция.

Функциональность, удаляемая или измененная

Вызов alpha функция с alphadata'FaceAlpha' , или alphadatamapping аргументы изменяют Scatter объекты в осях

Изменение поведения

Scatter объекты в осях затронуты, когда вы вызываете alpha функция с alphadata'FaceAlpha' , или alphadatamapping аргументы, не задавая конкретный объект в осях, чтобы изменить.

В R2020a и более ранних релизах, alphadata'FaceAlpha' , и alphadatamapping аргументы не оказывают влияния на Scatter объекты в осях.

Например, этот код создает объемную поверхностную диаграмму и график рассеивания, и затем вызывает alpha функция, чтобы варьироваться прозрачность вдоль x - размерность. В R2020a только изменяется объемная поверхностная диаграмма, когда вы вызываете alpha функция. В R2020b затронуты оба графика.

[X,Y] = meshgrid(-10:10);
Z = ones(21,21) * -2;
surf(X,Y,Z)
hold on
scatter([-8 2 4 -5 5 3],[7 4 2 -1 -7 0],200,'filled')
alpha('x')

Surface and scatter plots in the same axes after executing alpha('x') in R2020a and R2020b.

Предотвратить Scatter объекты от изменения, задайте объект изменить в качестве первого аргумента к alpha функция. Например, чтобы обновить предыдущий код, вызовите surf функция с выходным аргументом s. Затем передайте s к alpha функция, чтобы изменить только Surface объект.

[X,Y] = meshgrid(-10:10);
Z = ones(21,21) * -2;
s = surf(X,Y,Z)
hold on
scatter([-8 2 4 -5 5 3],[7 4 2 -1 -7 0],200,'filled')
alpha(s,'x')

Палитра 'default' опция для тепловой карты отображает синюю палитру вместо parula

Изменение поведения

Установка палитры на тепловой карте строит диаграмму к 'default' устанавливает палитру графика на синюю палитру по умолчанию для графиков тепловой карты. В R2020a и предыдущих релизах, 'default' опция изменяет палитру в parula.

Чтобы задать палитру по умолчанию для графика тепловой карты, передайте график colormap функция.

h = heatmap(rand(10));
colormap(h,'default')

Только графики тепловой карты затронуты этим изменением.

rbbox и dragrect не отображайте прямоугольники за пределами окна рисунка

Изменение поведения

Если вы начинаете перетаскивать прямоугольник с помощью rbbox или dragrect функции и затем перемещают часть его мимо ребра окна рисунка, только часть прямоугольника, который является в окне, отображается. В R2020a и более ранних релизах, целый прямоугольник отображается, даже часть, которая находится вне окна рисунка.

Это изменение не влияет на значения, возвращенные rbbox или dragrect.

Этот код и таблица сравнивают поведение rbbox в R2020a и R2020b.

waitforbuttonpress
[finalRect] = rbbox
R2020aR2020b

A rectangle displayed partially inside and outside of a figure

finalRect =

   332   290   311   126

Part of a rectangle displayed inside a figure. A cursor is outside of the figure.

finalRect =

   332   290   311   126

Всплывающие подсказки на графиках, созданных из таблиц, отображают первое имя размерности и имена строки

Изменение поведения

Когда вы создаете график из таблицы, всплывающие подсказки включают информацию о строке, которую вы предоставляете. Например, если вы меняете первое имя размерности таблицы, затем отображение всплывающих подсказок то имя вместо Row. Кроме того, если вы задаете имена строки для таблицы, затем всплывающие подсказки отображают имена строки вместо номеров строк.

По умолчанию первым именем размерности табличных массивов является 'Row' и имена строки пусты. Это означает, что поведение в R2020b только отличается от более ранних релизов, когда вы изменяете DimensionNames или RowNames свойства table массив.

Например, загрузите patients набор данных и составляет таблицу. Поменяйте имена размерности от {'Row','Variables'} к {'Patient','Data'} и строка называет от {} к LastName. Затем создайте график рассеивания с крайними гистограммами. Изображение показывает различия во всплывающих подсказках для R2020a и R2020b.

load patients
tbl = table(LastName,Age,Gender,Height,Weight);
tbl.Properties.DimensionNames = {'Patient','Data'};
tbl.Properties.RowNames = LastName;
scatterhistogram(tbl,'Height','Weight')

Comparison of data tips for R2020a and R2020b. The last row of the R2020a data tip shows Row 23 and the last row of the R2020b data tip shows Patient Lewis.

Графики, затронутые этим изменением:

  • Графики тепловой карты создали использование heatmap функция

  • Рассейтесь графики гистограммы создали использование scatterhistogram функция

  • Географические пузырьковые диаграммы создали использование geobubble функция

  • Параллельные графики координат создали использование parallelplot функция

Создание приложений

uitable Функция: Сконфигурируйте ширину столбцов, чтобы использовать взвешенную переменную или автоматически настроить, чтобы соответствовать данным

Сконфигурируйте ширину столбцов компонентов таблицы UI. Можно использовать взвешенную переменную ширину, или можно автоматически настроить ширину, чтобы соответствовать данным и именам столбцов.

Чтобы задать взвешенную переменную ширину, установите ColumnWidth значение свойства к номеру, соединенному с 'x' символ (например, '2x'). Чтобы сконфигурировать столбцы, чтобы автоматически настроить к именам столбцов и данным, установите ColumnWidth значение свойства к 'fit'.

'fit' и 'Nx' ColumnWidth значения свойств поддерживаются только в App Designer и uifigure- основанные приложения.

Для получения дополнительной информации смотрите Свойства таблиц.

scroll Функция: Прокрутите к верхней части или нижней части текстовой области программно

Используйте scroll функционируйте, чтобы прокрутить к верхней части или нижней части компонента текстовой области программно.

WindowStyle Свойство: Создайте модальные фигуры пользовательского интерфейса

Чтобы ограничить взаимодействия клавиатуры и мыши определенным окном UI Figure, установите WindowStyle свойство к 'modal'. Для получения дополнительной информации смотрите, UI Figure Properties.

Icon Свойство: Задайте пользовательские значки для окон UI Figure и нажатия панели инструментов и инструментов переключателя

Можно теперь добавить пользовательские значки в фигуры, созданные с uifigure функция. Можно также задать пользовательские значки как файлы изображений для нажатия панели инструментов и переключить инструменты в App Designer или uifigure- основанные приложения. Чтобы задать пользовательский значок, установите Icon значение свойства к файлу изображения или m- n- 3 массив истинного цвета.

Для нажатия и инструментов переключателя, созданных в App Designer и uifigure- основанные приложения, используйте Icon свойство задать значки вместо CData свойство.

Для получения дополнительной информации смотрите UI Figure PropertiesPushTool Properties или ToggleTool Properties.

WordWrap Свойство: Перенесите длинный текст, чтобы соответствовать ширине определенных компонентов пользовательского интерфейса

Используйте WordWrap свойство препятствовать тексту то, чтобы быть отсеченным горизонтально, когда ширина вашего компонента пользовательского интерфейса меньше, чем текст, вы хотите отобразиться. LabelФлажокПереключатель, Button, StateButtonКнопка-переключатель, и TextArea объекты поддерживают WordWrap свойство.

Установка WordWrap значение свойства к 'on' повреждает текст в новые строки так, чтобы каждая линия соответствовала в компоненте. Это старается не нарушать обещания, если это возможно. Когда значение установлено к 'off' текст не переносится.

Для получения дополнительной информации смотрите Label Properties.

Enable Свойство: Выключите и включите взаимодействие для групп панели и кнопок

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

Например, когда Enable свойство панели установлено в 'on' можно взаимодействовать с ним, и с компонентами пользовательского интерфейса в нем, пока им включают. Когда Enable свойство установлено в 'off', вы не можете взаимодействовать с панелью или ее содержимым. Изменение значения Enable свойство для панели не изменяет значение Enable свойство для компонентов пользовательского интерфейса содержится в нем. Enable свойство для групп кнопок ведет себя таким же образом.

Enable свойство поддерживается только для панелей и групп кнопок в App Designer и uifigure- основанные приложения.

Для получения дополнительной информации смотрите Panel Properties.

BackgroundColor Свойство: Выберите цвет фона для размещений сетки

Установите BackgroundColor свойство на GridLayout объекты (созданный с uigridlayout функция. Цвет фона по умолчанию совпадает с цветом по умолчанию для всех родительских контейнеров, таких как фигуры и панели.

Собственные компоненты: Разработайте свой собственный класс компонентов пользовательского интерфейса

Задайте свой собственный класс компонентов пользовательского интерфейса путем создания подкласса matlab.ui.componentcontainer.ComponentContainer базовый класс. Создайте класс, чтобы сделать составные компоненты пользовательского интерфейса, которые используют несколько MATLAB компоненты пользовательского интерфейса или графические объекты.

Создание класса обладает этими преимуществами:

  • Удобный интерфейс — Когда пользователи хотят настроить аспект вашего компонента пользовательского интерфейса, они могут установить свойство вместо того, чтобы иметь необходимость изменить и повторно выполнить ваш код. Пользователи могут изменить свойства в командной строке или смотреть их в Property Inspector.

  • Инкапсуляция — Организация вашего кода таким образом позволяет вам скрывать детали реализации от своих пользователей. Вы реализуете методы, которые выполняют вычисления и управляют базовыми графическими объектами.

Для получения дополнительной информации см. Обзор Разработки Компонента пользовательского интерфейса.

Дизайнер приложений: Позвольте только один рабочий экземпляр своего приложения за один раз

В App Designer можно выбрать, может ли приложение запустить несколько экземпляров за один раз или только один экземпляр.

Чтобы изменить поведение запуска вашего приложения, выберите Узел приложений из Component Browser. Затем от раздела Code Options вкладки Inspector выберите или очистите Single Running Instance.

Когда Single Running Instance выбран, и вы запускаете приложение многократно, MATLAB снова использует существующий экземпляр и выявляет его вместо того, чтобы создать новый. Когда Single Running Instance не выбран, затем новый экземпляр приложения создается каждый раз, когда вы запускаете его, в то время как существующие экземпляры приложения также продолжают запускаться.

Выбор или очистка Single Running Instance не изменяют поведение запуска App Designer приложения. Независимо от опции Single Running Instance App Designer всегда закрывает существующий экземпляр приложения прежде, чем создать новый.

Для получения дополнительной информации смотрите, Управляют Кодом в Представлении кода App Designer.

Дизайнер приложений: Измените порядок размещения компонентов пользовательского интерфейса

Чтобы изменить порядок размещения (также известный как z-порядок) компонентов в вашем приложении, выберите компонент. Затем в панели инструментов App Designer расширьте Reorder выпадающее меню от раздела Arrange вкладки Canvas и выберите опцию переупорядочивания. В качестве альтернативы щелкните правой кнопкой по компоненту и выберите опцию в меню Reorder.

Дизайнер приложений: Добавьте и сконфигурируйте компоненты панели инструментов на холсте App Designer

Добавьте компонент панели инструментов в свое приложение путем перетаскивания один от Component Library на холст. Сконфигурируйте панель инструментов путем добавления нажатия или инструментов переключателя к нему. Затем добавьте значки в инструменты и сконфигурируйте их коллбэки.

Дизайнер приложений: Чертите компоненты пользовательского интерфейса на холсте App Designer

В App Designer можно теперь чертить компоненты пользовательского интерфейса от Component Library на холсте.

Чтобы чертить компонент на холсте, выберите его из Component Library и затем переместите ваш курсор через холст. Курсор превращается в перекрестие. Щелкните своей мышью, чтобы добавить компонент в холст в его размере по умолчанию или перетаскивание, чтобы измерить компонент, когда вы добавляете его.

Дизайнер приложений: Найдите различия и объедините приложения

Можно использовать Инструмент Сравнения, чтобы найти различия между приложениями. Инструмент Сравнения подсвечивает различия в коде двух приложений. Чтобы запустить сравнение двух приложений, перейдите к вкладке Home, и в разделе File, нажмите Compare, и затем выберите файлы, которые вы хотите сравнить. Чтобы запустить сравнение с Браузера текущей папки, выберите файл, щелкните правой кнопкой и выберите Compare Against.

Также можно объединить изменения в коллбэке и служебных функциях от одного файла до другого. Слияние изменений может быть полезным при решении конфликтов между различными версиями приложения. Чтобы объединить два приложения, в Инструменте Сравнения, нажимают кнопку Merge Mode, чтобы запустить слияние. Используйтеmerge кнопку, чтобы заменить содержимое на правой панели с содержимым от левой панели. Правая панель содержит объединенный результат. Чтобы сохранить результат, нажмите кнопку Save Result.

Для получения дополнительной информации смотрите, Выдерживают сравнение и Приложения Слияния.

Графическая Поддержка: Создайте больше графиков в приложениях с полной поддержкой любого типа осей

Все рабочие процессы графического вывода теперь поддерживаются в приложениях App Designer и в приложениях, создаваемых программно с uifigure функция. Например:

  • Можно добавить больше типов графиков к приложению, включая pareto, plotmatrix, и boxplot.

  • Можно поместить любой тип осей или автономной визуализации (таких как a heatmap) непосредственно в контейнер с возможностью прокрутки или в GridLayout.

  • Можно поместить мозаичное размещение графика непосредственно в контейнер с возможностью прокрутки или в GridLayout.

Кроме того, UIAxes объекты теперь имеют те же свойства и опции как Axes объекты имеют для настройки их внешнего вида и поведения:

  • Можно использовать InnerPosition свойство выровнять компоненты пользовательского интерфейса с полем графика.

  • Можно использовать PositionConstraint свойство управлять пробелом вокруг поля графика, когда вы добавляете или изменяете художественные оформления, такие как заголовки и подписи по осям.

  • Units свойство UIAxes возразите теперь поддерживает все модули: 'pixels''normalized''inches''centimeters''points', и 'characters'. Значением по умолчанию является 'pixels'.

  • Можно использовать ButtonDownFcnPickableParts , и HitTest свойства сделать UIAxes возразите получают и отвечают на клики мыши.

Графическая Поддержка: Идентифицируйте координаты и текст отображения путем нажатия или ответвления

Можно теперь идентифицировать координаты или отобразить текст в заданных местоположениях путем нажатия или ответвления в фигурах App Designer или фигурах, созданных с uifigure функция. Чтобы идентифицировать координаты осей, вызовите ginput функция. Затем выберите местоположения, чтобы идентифицировать путем нажатия или ответвления. Чтобы отобразить текст, вызовите gtext функционируйте и задайте текст в качестве аргумента. Затем выберите местоположения для текста путем нажатия или ответвления. Для получения дополнительной информации об использовании ginput и gtext функции в рамках App Designer, смотрите Графику Отображения в App Designer.

Кроме того, можно теперь переместить приложения GUIDE то использование ginput или gtext. Для получения дополнительной информации см. Стратегии Миграции GUIDE.

Получение приложения: Получите пользовательские интерфейсы с помощью exportapp и getframe

Получите все графическое содержимое в приложении, включая компоненты пользовательского интерфейса, как файл изображения, файл PDF или матрица изображений в вашем рабочем пространстве MATLAB.

  • Вызовите exportapp функционируйте, чтобы получить содержимое как JPEG, PNG или файл TIFF, или как файл PDF, содержащий векторную графику.

  • Вызовите getframe функция с возвращаемым аргументом, чтобы получить содержимое как матрицу изображений в вашей рабочей области. Чтобы гарантировать все компоненты пользовательского интерфейса включены, задают фигуру как первый входной параметр getframe функция. Фигура может быть той, созданной с uifigure функция, или это может быть фигура в приложении App Designer. По умолчанию App Designer хранит фигуру в UIFigure свойство приложения.

Среда тестирования приложения: Выполните выбирают жесты на элементах контекстного меню

chooseContextMenu метод включает, вы, чтобы протестировать выбираете жесты на элементах контекстного меню для компонентов пользовательского интерфейса. Например, создайте контекстное меню с двумя пунктами меню в фигуре пользовательского интерфейса и выберите один из пунктов меню.

fig = uifigure;
cm = uicontextmenu(fig);
m1 = uimenu(cm,'Text','Menu1');
m2 = uimenu(cm,'Text','Menu2');
fig.ContextMenu = cm;

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.chooseContextMenu(fig,m1)

Среда тестирования приложения: Выполните перетаскивают жесты на осях пользовательского интерфейса и осях

Среда тестирования приложения поддерживает drag жесты на осях и осях пользовательского интерфейса. Когда вы тестируете жест перетаскивания на оси или оси пользовательского интерфейса, среда подражает пользователю, управляющему компонентом, и настраивает пределы осей на основе различия между значениями остановки и запуском. Например, создайте оси с графиком и затем перетащите от точки (3, 2) к точке (4, 2).

f = uifigure;
ax = axes(f);
plot(ax,1:10)

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.drag(ax,[3 2],[4 2])

Среда тестирования приложения: Выполните жесты на инструментах нажатия и инструментах переключателя

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

Функциональность, удаляемая или измененная

App Designer StartupFcn является теперь коллбэком приложения вместо фигуры

Изменение поведения

Коллбэк StartupFcn является теперь коллбэком приложения вместо фигуры пользовательского интерфейса. Кроме того, приложение является теперь корневым узлом в иерархии Component Browser App Designer. Имя узла приложений совпадает с именем вашего файла MLAPP.

Когда вы загружаете приложения, созданные с MATLAB R2020a или ранее в R2020b, узел приложений автоматически добавляется к иерархии. Чтобы получить доступ к коллбэку StartupFcn, выберите узел приложений из Component Browser. Затем выберите коллбэк из вкладки Callbacks. Код в вашем startupFcn функция обратного вызова не изменяется.

Component Browser showing the StartupFcn options for the ImageHistogramsAppExample app node.

App Designer иерархия Component Browser теперь использует z-порядок компонентов

Изменение поведения

Иерархия Component Browser App Designer теперь перечисляет компоненты согласно их порядку размещения (z-порядок) вместо их порядка создания.

GridLayout фон более не прозрачен

Изменение поведения

GridLayout объекты теперь имеют BackgroundColor свойство и они более не прозрачны. Цвет фона по умолчанию является цветом по умолчанию для всех контейнеров (например, фигуры и панели).

Если ваше приложение имеет размещение сетки в контейнере, который имеет цвет не по умолчанию, то установленный BackgroundColor свойство GridLayout возразите против того цвета, чтобы сохранить внешний вид вашего приложения.

Если ваше приложение имеет объекты позади сетки, что вы хотите остаться видимыми, переместить те объекты в сетку путем создания их дочерними элементами GridLayout объект.

BackgroundColor свойство UIAxes не оказывает влияния

Изменение поведения

Установка BackgroundColor свойство на UIAxes объект больше не оказывает влияния. Область вокруг поля графика прозрачна независимо от значения BackgroundColor свойство.

Чтобы произвести тот же эффект как выбирание цвета фона в предыдущих релизах, создайте панель с желаемым BackgroundColor значение, и затем помещает UIAxes в панели.

UIAxes появитесь позади всех других объектов на рисунке

Изменение поведения

Порядок размещения (также названный z-порядком) объектов на рисунке изменился так, чтобы UIAxes объекты и их содержимое появляются позади других компонентов пользовательского интерфейса на рисунке. Это поведение сопоставимо с поведением других типов осей.

Например, этот код создает фигуру, кнопку, и затем UIAxes объект.

fig = uifigure;
b = uibutton(fig);
uax = uiaxes(fig);

В R2020a, выполняя предыдущий код отображает UIAxes перед кнопкой, как показано на рисунке слева. Рисунок справа показывает поведение в R2020b, где UIAxes появляется позади компонентов пользовательского интерфейса независимо от порядка создания.

Comparison of button and UIAxes stacking order in R2020a and R2020b.

Порядок объектов перечислен в Children свойство фигуры также отражает это изменение. UIAxes объект всегда после компонентов пользовательского интерфейса в списке.

fig.Children
ans = 

  2×1 graphics array:

  Button    (Button)
  UIAxes

Графики в UIAxes может расширить вне границ осей

Изменение поведения

Объекты графика, такие как линии не могут отсечь к границам, заданным OuterPosition свойство UIAxes. Линия расширяет вне границ когда ее Clipping свойство установлено в 'off'. В предыдущих релизах линии отсекают к OuterPosition независимо от значения Clipping свойство. Например, график слева показывает поведение R2020a, и график справа показывает поведение R2020b. В обоих случаях, Clipping свойства линий установлены в 'off'.

Comparison of clipping behavior in R2020a and R2020b.

Чтобы препятствовать тому, чтобы содержимое осей перекрылось с компонентами в вашем приложении, установите Clipping свойство каждого объекта в осях к 'on'.

Шкалы палитры и легенды отображены с UIAxes имейте тот же родительский элемент как UIAxes

Изменение поведения

Когда вы создаете график в UIAxes объект, и затем создает шкалу палитры или легенду для того графика, родительский объект шкалы палитры или легенды совпадает с родительским объектом UIAxes объект. В предыдущих релизах родительским объектом шкалы палитры или легенды является UIAxes объект.

UIAxes SizeChangedFcn коллбэк был удален

Ошибки

SizeChangedFcn коллбэк для UIAxes объекты были удалены. Если ваше приложение требует коллбэка, который выполняется, когда размер изменений осей, создайте SizeChangedFcn коллбэк для родительской фигуры или другого контейнера.

Производительность

sum Функция: Улучшенная производительность суммируя первую размерность числовых массивов

Эффективность sum функция улучшилась при работе с первой размерностью числовых входных параметров:

  • sum(A,1) и sum(A,'all') быстрее для матрицы или массива N-D A.

  • sum(v) быстрее для строки или вектор-столбца v.

Это повышение производительности было добавлено для single входные параметры в R2017b, и это было теперь добавлено для всех других числовых типов в R2020b: double, logical, и целочисленные типы данных (int8, int16, …).

Например, если вы суммируете элементы вектора с 1e9 элементы в цикле, эффективность в R2020b о 1.4x быстрее, чем в R2020a.

function timingSum
x = 1/100; 
v = x*ones(1e9,1);

tic
for i = 1:10
  b = sum(v);
end 
toc
end

Аппроксимированные времена выполнения:

R2020a: 2,0 с

R2020b: 1,4 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызова функционального timingSum.

Вопросы совместимости

Это повышение производительности является результатом изменений кода, которые также приводят к различному набору поведений округления в sum. Новый алгоритм уменьшает количество ошибки округления в вычислениях, которая приводит к более точному результату в целом. Поэтому выход sum может измениться немного в R2020b по сравнению с R2020a при работе с числовыми входными параметрами, даже при том, что результаты между этими двумя версиями численно эквивалентны.

polyfit Функция: Улучшенная производительность подходящие данные

Эффективность polyfit функция улучшилась для входных данных всех размеров и припадков любого порядка.

Например, если вы соответствуете квадратичному полиному к вектору с 500 элементами в цикле, эффективность в R2020b о 25x быстрее, чем в R2020a.

function timingPolyfit
rng default
x = 1:500;
y = -0.3*x + 2*randn(1,500);

for i = 1:1e4
    p = polyfit(x,y,2);
end
end

Аппроксимированные времена выполнения:

R2020a: 3,5 с

R2020b: 0,14 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц с помощью timeit функция:

timeit(@timingPolyfit)

Вопросы совместимости

Повышение производительности является результатом изменений в polyfit алгоритм, которые также приводят к более точным результатам. Поэтому выход polyfit может измениться немного в R2020b по сравнению с R2020a, даже при том, что результаты между этими двумя версиями численно эквивалентны.

accumarray Функция: Улучшенная производительность со значениями заливки и определенными указателями на функцию

Эффективность accumarray функция улучшилась в этих случаях:

  • Когда вы используете @sum по умолчанию функция накопления и задает fillval входной параметр.

  • Когда вы указываете, что накопление функционирует как @min или @max.

Например, когда вы накапливаете вектор с 10 000 элементов в выходной вектор с 100 элементами и задаете значение заливки, эффективность в R2020b о 14x быстрее, чем в R2020a.

function timingAccumarrayFillVal
rng default
subs = randi(1e2,1e4,1);
val = randn(1e4,1);
sz = [1e2 1];
fillval = 1;
 
for k = 1:2e4
  A = accumarray(subs,val,sz,[],fillval);
end
end

Аппроксимированные времена выполнения:

R2020a: 11,2 с

R2020b: 0,8 с

Кроме того, когда вы накапливаете вектор с 10 000 элементов в выходной вектор с 100 элементами и задаете функцию накопления как @min или @max, эффективность в R2020b о 8.4x быстрее, чем в R2020a.

function timingAccumarrayFcnHandle
rng default
subs = randi(1e2,1e4,1);
val = randn(1e4,1);
sz = [1e2 1];
 
for k = 1:2e4
  A = accumarray(subs,val,sz,@max);
end
end

Аппроксимированные времена выполнения:

R2020a: 7,6 с

R2020b: 0,9 с

В каждом случае код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц с помощью timeit функция:

timeit(@timingAccumarrayFillVal)
timeit(@timingAccumarrayFcnHandle)

spdiags Функция: Улучшенная производительность, создающая разреженные полосные матрицы

Эффективность spdiags функция улучшилась на коэффициент до 3x при построении разреженных полосных матриц.

Например, если вы создаете большую полосную разреженную матрицу порядка 1e7 с 11 ненулевыми диагоналями эффективность в R2020b о 2.6x быстрее, чем в R2020a.

function timingSpdiags
n = 1e7;
B = randn(n,11);
d = -5:5;

tic
A = spdiags(B, d, n, n);
toc
end

Аппроксимированные времена выполнения:

R2020a: 11,1 с

R2020b: 4,2 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызова функционального timingSpdiags.

uilistbox: Улучшенная производительность при установке нескольких элементов в поле списка

Установка значений свойств на a uilistbox показывает улучшенную производительность при работе с большим количеством выбранных пунктов. Например, этот код о 117x быстрее, чем в предыдущем релизе:

function timingTest
lb = uilistbox;
lb.Items = "Item " + (1:1000);
lb.ItemsData = 1:1000;
lb.Multiselect = true;
lb.Value = 1:800;
end

Аппроксимированные времена выполнения:

R2020a: 4,7 с

R2020b: 0,04 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц с помощью timeit функция:

timeit(@timingTest)

uitree: Улучшенная производительность при создании многих узлов в дереве

uitreenode функция показывает улучшенную производительность при создании большого количества узлов, порожденных к uitree. Например, этот код, который создает дерево с 3 000 узлов, о 2.4x быстрее, чем в предыдущем релизе:

function timingTest
t1to3000 = [];
fig = uifigure;
tree = uitree(fig);
drawnow
for i=1:3000
    treeNodeText = ['t' num2str(i)];
    t1to3000(i) = uitreenode('Parent',tree,'Text',treeNodeText);
end
drawnow
end

Аппроксимированные времена выполнения:

R2020a: 81,4 с

R2020b: 33,7 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц с помощью timeit функция:

timeit(@timingTest)

Маркеры Всплывающей подсказки: Улучшаемая производительность рендеринга маркеров всплывающей подсказки в объемных поверхностных диаграммах больших наборов данных, созданных в фигурах пользовательского интерфейса и MATLAB Online

В цифрах созданный с uifigure функционируйте и в MATLAB Online, маркеры всплывающей подсказки для объемных поверхностных диаграмм больших наборов данных представляют быстрее и перемещаются больше постоянно в R2020b, чем в R2020a. Это улучшение видно, когда оси создаются с любым axes или uiaxes функция.

Например, на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,6 ГГц с NVIDIA® Видеокарта Quadro P600, когда вы перемещаете свою мышь быстро через сюжетные линии, созданные этим кодом, маркер всплывающей подсказки, перемещается более гладко и отслеживает ваше движение мыши более тесно в R2020b, чем в R2020a.

fig = uifigure;
ax = axes(fig);
surf(ax,peaks(75))

Snippet of a plot in a UI figure that illustrates a data tip marker and a data tip

Инструменты разработки программного обеспечения

CodeCompatibilityReport: неподдерживаемая функциональность будет теперь предупреждение о проблемах

Отчет совместимости кода будет теперь проверять и уведомлять вас относительно некоторой неподдерживаемой функциональности в рамках кода.

Зависимость Анализатор: Экспортируйте в архив и сгенерируйте отчет зависимости

Анализ зависимостей для проектов улучшен и включает новые возможности:

  • Экспортируйте файлы в диаграмме зависимостей в архив.

  • Сохраните результаты анализа зависимостей в печатаемом отчете.

  • Займитесь расследованиями, где в ваших файлах зависимость к продукту введена.

  • Определите, какие файлы, если таковые имеются, используют функциональности общие для различные Продукты Mathworks.

Для получения дополнительной информации смотрите, Анализируют Зависимости от Проекта.

Система контроля версий: Улучшенный рабочий процесс, чтобы настроить систему контроля версий Git

Рабочий процесс, чтобы настроить Git улучшен и упрощен.

  • Вы не должны устанавливать Git командной строки, чтобы полностью использовать Git с MATLAB. Можно теперь объединить ветви с помощью встроенного интегрирования Git.

  • Для недавно созданных проектов с помощью Git и для проектов, которые переключились на Git от другой системы контроля версий, MATLAB автоматически генерирует .gitattributes файл и заполняет его со списком общих двоичных файлов. Вы не должны вручную регистрировать двоичные файлы, чтобы предотвратить повреждение.

Для получения дополнительной информации смотрите Настроенную Систему контроля версий Git.

Проекты: Измените тип файла определения проекта и сохраните историю системы контроля версий

Можно теперь использовать matlab.project.convertDefinitionFiles программно изменить управление файлами определения проекта от типа, выбранного, когда вы сначала создали проект к новому типу. matlab.project.convertDefinitionFiles сохраняет историю системы контроля версий вашего проекта. Чтобы избежать любых проблем слияния, убедитесь, что преобразовали тип файла определения только однажды для вашего проекта.

Среда Модульного тестирования: Запустите тесты параллельно в кластерах и облаках

Можно теперь запустить тесты в кластерах и облаках с помощью MATLAB Parallel Server™. Чтобы запустить тесты на удаленном параллельном пуле, используйте тот же API предложения среды по тому, чтобы запустить тесты на локальном параллельном пуле. Другими словами, используйте runInParallel метод или runtests функция с 'UseParallel' аргумент пары "имя-значение".

Среда Модульного тестирования: Запустите тесты параллельно с автономными приложениями

Начиная в R2020b, можно создать автономные приложения, которые поддерживают запускающие тесты параллельно. Чтобы гарантировать, что MATLAB Compiler может расположиться и пакет все компоненты, требуемые для того, чтобы запустить тесты параллельно, используйте эту директиву в своей программе:

%#function parallel.Pool
Для получения дополнительной информации смотрите Компиляцию Модульные тесты MATLAB.

Среда Модульного тестирования: Сообщите о валидности разделяемых испытательных стендов

Начиная в R2020b, можно сообщить о валидности разделяемых испытательных стендов к среде тестирования. Разделяемый испытательный стенд допустим, если состояние тестовой среды, сконфигурированное фиксатором, обеспечено в течение сеанса тестирования.

Чтобы сообщить о валидности разделяемого фиксатора, замените needsReset метод matlab.unittest.fixtures.Fixture класс. При выполнении нескольких тестовых классов как одного набора среда разъединяет разделяемый испытательный стенд и настраивает его для последующих классов если needsReset возвращает true.

Среда тестирования приложения: Выполните выбирают жесты на элементах контекстного меню

chooseContextMenu метод включает, вы, чтобы протестировать выбираете жесты на элементах контекстного меню для компонентов пользовательского интерфейса. Например, создайте контекстное меню с двумя пунктами меню в фигуре пользовательского интерфейса и выберите один из пунктов меню.

fig = uifigure;
cm = uicontextmenu(fig);
m1 = uimenu(cm,'Text','Menu1');
m2 = uimenu(cm,'Text','Menu2');
fig.ContextMenu = cm;

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.chooseContextMenu(fig,m1)

Среда тестирования приложения: Выполните перетаскивают жесты на осях пользовательского интерфейса и осях

Среда тестирования приложения поддерживает drag жесты на осях и осях пользовательского интерфейса. Когда вы тестируете жест перетаскивания на оси или оси пользовательского интерфейса, среда подражает пользователю, управляющему компонентом, и настраивает пределы осей на основе различия между значениями остановки и запуском. Например, создайте оси с графиком и затем перетащите от точки (3, 2) к точке (4, 2).

f = uifigure;
ax = axes(f);
plot(ax,1:10)

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.drag(ax,[3 2],[4 2])

Среда тестирования приложения: Выполните жесты на инструментах нажатия и инструментах переключателя

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

Функциональность, удаляемая или измененная

Очистка SVN больше не удаляет неимеющие версию или проигнорированные файлы

Изменение поведения

Начиная в Обновлении R2020a 5, очистка SVN только удаляет устаревшие блокировки и незаконченные транзакции. Это не удаляет неимеющие версию или проигнорированные файлы.

Можно вручную удалить неимеющие версию и проигнорированные файлы.

  1. В Браузере текущей папки кликните по заголовку SVN, чтобы отсортировать файлы по их состоянию SVN.

  2. Выберите файлы Not Under Source Control.

  3. Щелкните правой кнопкой и выберите Delete.

Для получения дополнительной информации смотрите, Получают Блокировки Файла SVN.

ProfileReport был удален

Ошибки

ProfileReport класс был удален. Используйте CoverageReport или CoberturaFormat вместо этого. По сравнению с ProfileReport, эти два класса генерируют более точные отчеты покрытия кода.

Чтобы обновить ваш код, измените экземпляры ProfileReport к CoverageReport или CoberturaFormat. Эта таблица показывает пример того, как можно обновить код.

ПреждеПосле
import matlab.unittest.TestRunner
import matlab.unittest.plugins.CodeCoveragePlugin  
import matlab.unittest.plugins.codecoverage.ProfileReport

runner = TestRunner.withNoPlugins;
plugin = CodeCoveragePlugin.forFolder('myTests', ...
    'Producing',ProfileReport); 
runner.addPlugin(plugin)
import matlab.unittest.TestRunner
import matlab.unittest.plugins.CodeCoveragePlugin
import matlab.unittest.plugins.codecoverage.CoverageReport

runner = TestRunner.withNoPlugins;
plugin = CodeCoveragePlugin.forFolder('myTests', ...
    'Producing',CoverageReport); 
runner.addPlugin(plugin)

Создать Отчет Покрытия профилировщика MATLAB, не задавая ProfileReport формат, смотрите, Определяют Покрытие кода Используя Профилировщик.

Индексация порядка изменилась в, выбирают жесты в группах кнопок

Изменение поведения

Со средой тестирования приложения вы можете choose переключатель или кнопка-переключатель с помощью названия кнопки или его индекса в группе кнопок. Начиная в R2020b, когда вы выбираете переключатель или кнопку-переключатель с помощью индекса, индексов среды в Buttons свойство ButtonGroup объект. В предыдущих релизах среда индексирует в Children свойство ButtonGroup объект. С этим изменением индекс соответствует порядку, в котором создаются кнопки. Например, создайте группу кнопок, которая имеет шесть кнопок-переключателей.

f = uifigure;
bg = uibuttongroup(f);
tb1 = uitogglebutton(bg,'Position',[11 165 140 22],'Text','One');
tb2 = uitogglebutton(bg,'Position',[11 140 140 22],'Text','Two');
tb3 = uitogglebutton(bg,'Position',[11 115 140 22],'Text','Three');
tb4 = uitogglebutton(bg,'Position',[11 90 140 22],'Text','Four');
tb5 = uitogglebutton(bg,'Position',[11 65 140 22],'Text','Five');
tb6 = uitogglebutton(bg,'Position',[11 40 140 22],'Text','Six');

Эта таблица показывает результат выбрать жеста на кнопке-переключателе, которая задана с индексом 2.

ТестЗапуск в R2020bR2020a и ранее
tc = matlab.uitest.TestCase.forInteractiveUse;
tc.choose(bg,2)

MATLAB выбирает кнопку-переключатель tb2, который является вторым элементом bg.Buttons массив. tc.choose(bg,2) синтаксис эквивалентен tc.choose(bg,'Two').

MATLAB выбирает кнопку-переключатель tb5, который является вторым элементом bg.Children массив. tc.choose(bg,2) синтаксис эквивалентен tc.choose(bg,'Five').

Если это изменение поведения влияет на ваш код, обновите индекс или замените его на соответствующее название кнопки.

Интерфейсы к внешним языкам

Интерфейс C++: поддержка nullptr

Можно теперь передать nullptr к функциям C++. Для получения дополнительной информации смотрите nullptr Типы аргумента.

Интерфейс C++: Создайте интерфейс с исходными файлами C++

Можно создать интерфейс MATLAB к библиотеке C++ или алгоритму от исходных файлов, которые содержат полноценные внедрения для библиотеки. Используйте SupportingSourceFiles пара "имя-значение" в clibgen.generateLibraryDefinition функция. Для примера смотрите, Публикуют Интерфейс к Библиотеке C++ Используя Исходные файлы.

Python: поддержка Версии 3.8

MATLAB теперь поддерживает CPython 3.8, в дополнение к существующей поддержке 2,7, 3.6, и 3.7. Для получения дополнительной информации смотрите, Конфигурируют Вашу Систему, чтобы Использовать Python.

Python: Оконечный Интерпретатор Python и запускает новый в том же сеансе работы с MATLAB

Когда вы запускаете Интерпретатор Python в режиме из процесса, можно отключить интерпретатор и запустить новый, не перезапуская MATLAB. Для получения дополнительной информации смотрите Перезагрузку Интерпретатор Python Из процесса.

mxCreateString C Матричные API-функции: поддержка UTF-8

Матричный API C mxCreateString функция теперь признает, что UTF-8 закодировал данные в дополнение к поддержке закодированных строк страницы локального кода (LCP) для назад совместимости. mxArrayToUTF8String функция возвращается, UTF-8 закодировал данные.

Кроме того, mexPrintf, mexEvalString, mexEvalStringWithTrap, mexErrMsgIdAndTxt, и mexWarnMsgIdAndTxt C функции теперь признают, что UTF-8 закодировал данные в дополнение к поддержке закодированных строк LCP для назад совместимости.

MATLAB Data API: создайте matlab::data::Object массивы

Используйте matlab::data::ArrayFactory createArray метод, чтобы создать matlab::data::ObjectArray и createScalar метод, чтобы создать скалярный matlab::data::ObjectArray. Можно использовать [] индексация и matlab::data::TypedIterator<T> получить доступ к элементам matlab::data::ObjectArray.

Поддержка компилятора, измененная для создания интерфейсов C++, файлов MEX, и автономного движка MATLAB и приложений MAT-файла

ПоддержкаКомпиляторПлатформа

Добавленный

версии gcc 5.x и выше. Если вы используете версию 4.0 или ранее, то MATLAB выводит предупреждение.

Linux

Чтобы гарантировать постоянную поддержку создания ваших файлов MEX, рассмотрите обновление до другого поддерживаемого компилятора. Для актуального списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы.

Функциональность, удаляемая или измененная

Пакеты Java, которые будут удалены

Изменение поведения в будущем релизе

Определенные библиотеки Java (файлы JAR) используемый Продуктами Mathworks не могут быть включены в будущие релизы. Чтобы продолжить использовать функциональность от этих библиотек, установите файлы JAR и добавьте их в путь к классу, используемый MATLAB. Для получения информации о добавляющих файлах JAR к статическому пути к классу смотрите Статический Путь.

Недокументированный com.mathworks Пакеты Java, которые будут удалены

Предупреждает

Отчет Совместимости кода MATLAB перечисляет com.mathworks Классы Java как Unsupported functionality that might cause errors. За исключением зарегистрированных интерфейсов и классов в com.mathworks.engine и com.mathworks.matlab.types пакеты (API MATLAB Engine для Java) и Клиентский API Java для использования с MATLAB Compiler SDK™ и MATLAB Production Server™, всем другим com.mathworks Интерфейсы Java и классы не документированы и могут быть изменены или удалены, не предупреждая в будущих релизах. Для устойчивости кода избегайте использования любого из этих недокументированных интерфейсов Java или классов.

Аппаратная поддержка

Live Editor Тэск: В интерактивном режиме получите изображения от Веб-камеры USB в интерактивном режиме и сгенерируйте код MATLAB в live скрипте.

Используйте Live Editor Acquire Webcam Image ТЭСКА в Пакете поддержки MATLAB для Веб-камер USB, чтобы соединиться с веб-камерой, установить свойства и изображения получения, не пишущий код MATLAB. Задача предоставляет вам средства управления, которые помогают вам установить значения разрешения веб-камеры и другие специфичные для изображения и специфичные для устройства свойства. Задача также автоматически генерирует код MATLAB, который становится частью вашего live скрипта.

Чтобы использовать задачи в Live Editor, на вкладке Live Editor, в меню Task, выбирают задачу. В качестве альтернативы в блоке кода в live скрипте, начните вводить имя задачи и выберите задачу из предложенных завершений команды. Для получения дополнительной информации о задачах Live Editor, смотрите, Добавляют Интерактивные Задачи к Live Script (MATLAB).

Функциональность, удаляемая или измененная

mkrMotorCarrier функция будет удалена в будущем релизе

Предупреждает

Запуск R2020b, использование mkrMotorCarrier функция выдаст предупреждающее сообщение. Эта функция будет удалена в будущем релизе. Используйте motorCarrier вместо mkrMotorCarrier связывать с Моторным оборудованием Несущей MKR.

MKRMotorCarrier библиотека будет удалена в будущем релизе

Предупреждает

Запуск R2020b, использование 'MKRMotorCarrier' библиотека выдаст предупреждающее сообщение. Эта библиотека будет удалена в будущем релизе. Используйте 'MotorCarrier' библиотека вместо 'MKRMotorCarrier' при создании связи с Arduino, оборудование с помощью arduino объект.

R2020a

Новые возможности, исправления ошибок, Вопросы совместимости

Среда

Графики Пламени профилировщика: Исследуйте и улучшайте производительность своего кода визуально

Перепроектированный Профилировщик теперь включает график пламени, который позволяет вам визуально исследовать результаты эффективности выполнения своего кода. Можно использовать график пламени, чтобы идентифицировать функции, которые используют существенное количество времени.

Например, этот график пламени показывает результаты эффективности для вызванной функции solvelotka. Широкие графики представляют функции, которые используют большую часть времени. Можно использовать Профилировщик, чтобы исследовать те функции и определить, может ли выполнение быть ускорено.

Для получения дополнительной информации смотрите Профиль Ваш Код, чтобы Улучшать Производительность.

Выполнение Цикла Live Editor: Улучшенная производительность, когда рабочие циклы в live скриптах

Циклы, запущенные значительно быстрее в live скриптах. Например, live скрипт, содержащий этот код, который запускает цикл один миллион раз и отображает текущую итерацию цикла каждые десять тысяч итераций, приблизительно 42x быстрее.

for t = 1:1000000
    if ~mod(t, 10000)
        disp(t)
    end
end

Аппроксимированные времена выполнения:

R2019b: 2,291 с

R2020a: 0,054 с

Код был синхронизирован в системе тестирования Windows 10 с Intel на 3,6 ГГц Xeon CPU E5-1650 CPU путем выполнения вышеупомянутого live скрипта.

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

Анимация Live Editor Выход: Улучшенная производительность при анимации графиков в live скриптах

Анимации цикла for отображаются быстрее в live скриптах. Например, live скрипт, содержащий этот код, который создает анимацию цикла for графика синусоиды, приблизительно 1.3x быстрее.

tic
x = 0:0.1:10*pi;
y = sin(x);
xlim([0 10*pi])
ylim([-1 1])
hold on
p = plot(x(1),y(1));
for k=1:length(x)
    p.XData = x(1:k);
    p.YData = y(1:k);
   drawnow
end
toc
Аппроксимированные времена выполнения:

R2019b: 8,875 с

R2020a: 6,633 с

Код был синхронизирован в системе тестирования Windows 10 с Intel на 3,6 ГГц Xeon CPU E5-1650 CPU путем выполнения вышеупомянутого live скрипта.

Live Editor Респонсивенесс: Улучшенная производительность с расширенным использованием

Live Editor обеспечивает его эффективность взаимодействия (такую как ввод и прокрутка) когда рабочий MATLAB за длительные периоды времени. В предыдущих релизах, эффективности взаимодействия Live Editor, уменьшаемого в зависимости от времени.

Изменения Значения Управления Live Editor: Запустите весь необходимый код по изменениям значения

Можно сконфигурировать управление, чтобы запустить текущий раздел и любой устаревший код выше его, когда значение управления изменяется. Это гарантирует, что, когда значение изменений управления, любой измененный или еще не запускаются, разделы выше запущены также. Чтобы сконфигурировать управление, щелкните правой кнопкой по управлению и выберите Configure Control. Затем в поле Run выберите опцию Current section and modified or not yet run sections above.

Для получения дополнительной информации о добавлении средств управления к live скрипту, смотрите, Добавляют Интерактивные управления к Live Script.

FileEncoding : Сохраните файлы кода MATLAB (.m) и другие файлы простого текста как UTF-8 закодировали файлы по умолчанию

С R2020a, значений по умолчанию MATLAB к сохранению новых файлов простого текста с помощью UTF-8 без метки порядка байтов (BOM). Это включает файлы, созданные с редактором MATLAB и edit или fopen функции, а также файлы журнала MATLAB и файлы, созданные с diary функция. В Редакторе это включает все файлы кода MATLAB с .m расширение, такое как скрипты и функции. При открытии существующих файлов, Редактора и других функций как type или fopen автоматически определите текущее кодирование. Редактор сохранил файлы с их текущим кодированием, если различный не выбран из Сохранения как диалоговое окно. Например, чтобы сохранить файл с помощью устаревшего специфичного для локали кодирования для совместимости с более ранним релизом MATLAB, выберите Save> Save As... в разделе File по вкладке Editor. В диалоговом окне, которое появляется, выберите желаемое кодирование из одной из опций Save as type.

MATLAB использует Unicode внутренне так, чтобы это могло представлять все буквы и символы, независимо от платформы, языка или локали. UTF-8 был принят как кодировка символов MATLAB по умолчанию, чтобы гарантировать, что все кодовые точки Unicode могут быть правильно представлены в файлах и потоках байтов. MATLAB также поддерживает другие кодировки символов для назад совместимости и функциональной совместимости. Для получения дополнительной информации смотрите Концепции Установки локализации для Интернационализации.

Текущее кодирование отображено рядом с именем файла в строке состояния Редактора или, если редактор Виндоу прикрепляется, Настольная строка состояния.

Многочисленные источники в Браузере документации: Ищите документацию MathWorks и пользовательскую документацию вместе в одном браузере

Когда вы ищете документацию в Браузере документации, Браузер документации отображает и результаты документации MathWorks и установил пользовательские результаты документации. Чтобы переключиться между двумя типами результатов, используйте фасеты Source, которые появляются на левой стороне страницы. Например, чтобы просмотреть результаты документации MathWorks, выберите MathWorks как источник. Чтобы просмотреть установленные пользовательские результаты документации, выберите Supplemental Software как источник.

Веб-Документация: Просмотрите документацию MathWorks относительно сети без входа в систему

Если ваши настройки документации собираются просмотреть документацию относительно сети, теперь можно просмотреть документацию для большинства продуктов без входа в систему.

Для получения дополнительной информации об установке вашего местоположения документации, смотрите Настройки Справки.

Интернационализация: UTF-8 как системное кодирование на Mac и платформах Windows

На платформе Mac MATLAB использует UTF-8 в качестве своего системного кодирования, чтобы выровняться с macOS.

На платформе Windows, если опция Use Unicode UTF-8 for worldwide language support включена в диалоговом окне настроек Windows Region, то MATLAB использует UTF-8 в качестве своего системного кодирования.

Язык и программирование

switch Функция: Сравните объекты более гибко

MATLAB позволяет вам использовать объекты класса в switch операторы, если объекты поддерживают eq функция. В предыдущих релизах можно использовать объекты класса в switch операторы, только если выход перегруженного eq функция является логическим значением. Начиная в R2020a, выходе eq может быть или логическое значение или конвертируемый к логическому значению. Для получения дополнительной информации смотрите Объекты В Условных операторах.

copyfile и movefile Функции: Доступ к веб-сервисам устройства хранения данных как Amazon Web Services и Устройство хранения данных Блоба Azure

Можно теперь использовать copyfile и movefile функции, чтобы работать с удаленными файлами и папками. Чтобы получить доступ к удаленным местоположениям, необходимо задать полный путь с помощью универсального локатора ресурса (URL). Например, скопируйте файл от облака Amazon S3 до папки myFolder.

mkdir myFolder
copyfile s3://bucketname/path_to_file/my_image.jpg myFolder

Для получения дополнительной информации о подготовке MATLAB, чтобы получить доступ к вашему сервису оперативного хранения, смотрите работу с Удаленными данными.

dbup и dbdown Команды: Переключитесь между рабочими областями с одним шагом

Когда вы отлаживаете свой код, можно теперь изменить текущую рабочую область и функциональный контекст к любой рабочей области и функциональный контекст на стеке с одним шагом. Задайте количество уровней, которые вы хотите переместить в стек как входной параметр к dbup и dbdown команды.

bin2dec и hex2dec Функции: Преобразуйте текст, который включает бинарные или шестнадцатеричные префиксы и суффиксы

bin2dec и hex2dec функции преобразуют вводы текста, которые включают те же префиксы и суффиксы, используемые для записи бинарных и шестнадцатеричных литералов.

Например, эти вызовы bin2dec возвратите то же значение:

bin2dec('111')
bin2dec('0b111')
bin2dec('0b111s32')

Точно так же эти вызовы hex2dec возвратите то же значение:

hex2dec('FF')
hex2dec('0xFF')
hex2dec('0xFFs32')

Для получения дополнительной информации о синтаксисе для использования этих префиксов и суффиксов, смотрите Шестнадцатеричные и Двоичные значения.

dec2bin и dec2hex Функции: Преобразуйте отрицательные числа

dec2bin и dec2hex функции преобразуют отрицательные числа с помощью дополнительных двоичных значений своего two.

Например, эти вызовы dec2bin и dec2hex преобразуйте отрицательные числа.

dec2bin(-1)
ans =

    '11111111'
dec2bin(-16)
ans =

    '11110000'
dec2hex(-1)
ans =

    'FF'
dec2hex(-16)
ans =

    'F0'

complex Функция: Создайте разреженные комплексные массивы

Можно теперь создать разреженные комплексные массивы из разреженных входных параметров с помощью complex функция.

Классы перечисления: Скройте имена элемента для совместимых смен имени

Блок Hidden перечисления атрибут позволяет авторам класса перечисления скрыть имена элемента от пользователей класса. Сокрытие членов перечисления позволяет вам заменить существующие имена на новые имена, не вводя несовместимости кода. Для получения дополнительной информации смотрите, Скрывают члены Перечисления.

matlab.mixin.SetGet: Установите приоритет для частичного соответствия имени свойства

Классы, которые выводят из matlab.mixin.SetGet может использовать PartialMatchPriority атрибут свойства, чтобы задать относительный приоритет для частичного соответствия имени. MATLAB применяет этот атрибут при решении неполных и нечувствительных к регистру текстовых строк то соответствие больше чем одно имя свойства. Для получения дополнительной информации смотрите Приоритет Набора для Соответствия с Частичными Именами свойства.

Класс логические преобразования: Поддержите логическое преобразование более гибко при записи классов

Когда MATLAB требует логического значения для выражений как if и while операторы, это делает попытку прямого преобразования с помощью logical функция конвертера. Если результатом преобразования является нелогическое значение, то MATLAB пытается вызвать cast функция с "like" флаг. Если класс преобразовываемого объекта задает cast метод, который поддерживает "like" отметьте, и этот метод возвращает логическое значение, затем MATLAB использует это логическое значение. В противном случае MATLAB выдает MATLAB:invalidConversion ошибка.

Функциональность, удаляемая или измененная

Файловые операции: Выражение с подстановочными знаками *.* на UNIX платформы совпадают только с файлами, которые имеют расширение

Изменение поведения

Запуск в R2020a, на UNIX® платформы, выражение с подстановочными знаками *.* больше папки соответствий или файлы без расширения. В предыдущих релизах выражение совпадает с папками или файлами независимо от расширения, включая файлы без расширения. Это изменение поведения не применяется к платформам Microsoft Windows. Это изменение влияет на функции copyfile, delete, dir, movefile, и rmdir.

copyfile Функция: Символьные ссылки последовательно обрабатываются на платформах и файловых системах

Изменение поведения

Символьные ссылки (или символьные ссылки) являются объектами файловой системы что точка к конечным файлам или папкам. Начиная в R2020a, поведении copyfile функционируйте изменения при работе с файлами символьной ссылки или папками.

  • Результат копии независим от платформы: copyfile теперь символьные ссылки обработок на различных операционных системах таким же образом. Например, считайте структуру папок с файлом myFile.m и символьная ссылка, указывающая на myFile.mВ виде symlinkToMyFile.

    myFile.m
    symlinkToMyFile
    

    Начиная в R2020a, copyfile('symlinkToMyFile','newFile') копирует цель символьной ссылки (то есть, myFile.m) месту назначения. В предыдущих релизах, на Linux, copyfile копирует символьную ссылку вместо этого.

    ПлатформаnewFile (Запускающийся в R2020a)newFile (R2019b и Ранее)
    Linux
    myFile.m
    
    symlinkToMyFile
    
    Mac
    myFile.m
    
    myFile.m
    
    Windows
    myFile.m
    
    myFile.m
    
  • copyfile копии только содержимое исходной папки: При копировании непустой папки в папку символьной ссылки, copyfile теперь копирует содержимое исходной папки (то есть, файлы и папки в исходной папке), а не целой исходной папке. Точно так же при копировании папки символьной ссылки в папку назначения, только содержимое папки символьной ссылки копируется.

    Например, рассмотрите структуру папок на Linux, состоящем из непустой папки myFolder и символьная ссылка на ту папку под названием symlinkToMyFolder. Эта таблица показывает структуру папок после выполнения copyfile('myFolder','simlinkToMyFolder') в различных релизах MATLAB.

    Структура папок перед копиейСтруктура папок после копии (Запускающийся в R2020a)Структура папок после копии (R2019b и ранее)
    myFolder
        myFile.m
    symlinkToMyFolder
    
    myFolder
        myFile.m
    symlinkToMyFolder
        myFile.m
    
    myFolder
        myFile.m
    symlinkToMyFolder
        myFolder
            myFile.m
    

Папки тулбокса переименовали: Старые названия будут удалены

Все еще работает

Различные папки тулбокса были переименованы. Старые имена папок тулбокса передали toolboxdir, ver, и verLessThan функции будут удалены в будущем релизе. Используйте новые имена вместо этого.

ТулбоксСтарое имя папкиНовое имя папки
Parallel Computing Toolbox

distcomp

parallel

Fixed-Point Designer™

fixpoint

fixedpoint

Simulink Real-Time™

xpc

slrt

Simscape™ Electrical™

powersys

sps

Авторская разработка системного объекта: StringSet будет удален

Все еще работает

Класс matlab.system.StringSet будет удален в будущем релизе, чтобы принести Систему object™ авторская разработка ближе к классам MATLAB.

Синтаксис системного объекта удаленМиграция
Перечислимые свойства с matlab.system.StringSetЗамените StringSets на блоки проверки допустимости свойства или перечисления. Смотрите Предельные Значения свойств к Конечному Списку.

Авторская разработка системного объекта: Логический и атрибуты свойства Positive Integer будет удален

Все еще работает

Свойство Системного объекта приписывает Logical и Positive Integer будет удален в будущем релизе, чтобы приблизить авторскую разработку Системного объекта к классам MATLAB.

Синтаксис системного объекта удаленМиграция
Свойство приписывает Logical и Positive IntegerЗамените эти атрибуты свойства на блоки проверки допустимости свойства. См. Проверку значений свойств и Входные значения.

Авторская разработка системного объекта: Несколько matlab.system.mixin.* классы будут удалены

Все еще работает

Эти классы mixin будут удалены в будущем релизе:

  • matlab.system.mixin.CustomIcon

  • matlab.system.mixin.Nondirect

  • matlab.system.mixin.Propagates

  • matlab.system.mixin.SampleTime

Чтобы упростить авторскую разработку Системного объекта, функциональность и методы от этих классов непосредственно включены с основным классом Системного объекта matlab.System.

Синтаксис системного объекта удаленМиграция
  • matlab.system.mixin.CustomIcon

  • matlab.system.mixin.Nondirect

  • matlab.system.mixin.Propagates

  • matlab.system.mixin.SampleTime

Удалите любые заявления о праве наследования к этим классам с начала вашего класса Системного объекта.

ismethod Функция: Строка и вектор символов в первом входном параметре будут обработаны как объект

Изменение поведения в будущем релизе

В будущем релизе, ismethod функция обработает строку или вектор символов в первом входном параметре как string или char объект, вместо как имя класса. Чтобы перечислить методы класса путем обращения к классу по наименованию, используйте methods функция. Чтобы определить, является ли определенное имя метода именем метода класса, используйте выражение как это:

any("methodName" == string(methods("ClassName"))

Constant Properties : Определение набора или добирается, метод доступа для постоянного свойства вызывает ошибку

В предыдущих релизах, создавая набор или получают метод доступа для свойства класса, заданного с Constant атрибут привел к предупреждению. MATLAB проигнорировал эти методы. Начиная в R2020a, MATLAB выдает ошибку, если класс задает методы доступа для Constant свойства.

Constant Properties : Определение Dependent припишите для Constant свойство вызывает ошибку

В предыдущих релизах, задавая Dependent припишите для свойства класса, заданного с Constant атрибут привел к предупреждению. Начиная в R2020a, MATLAB выдает ошибку, если класс задает свойства с помощью обоих Constant и Dependent атрибуты.

Атрибуты свойств: Определение Static припишите по причинам свойства ошибку

В предыдущих релизах, задавая Static припишите для свойства класса, приведшего к предупреждению. Начиная в R2020a, MATLAB выдает ошибку, если класс задает свойства с помощью Static атрибут.

Свойство и атрибуты метода: Определение Visible припишите для свойства, или метод вызывает ошибку

В предыдущих релизах, задавая Visible припишите для свойства класса, или метод привел к предупреждению. Начиная в R2020a, MATLAB выдает ошибку, если класс задает свойства или методы с помощью Visible атрибут.

Определение классов и пакетов: Используя schema.m не будет поддерживаться в будущем релизе

Все еще работает

Поддержка классов и пакетов, заданных с помощью schema.m файлы будут удалены в будущем релизе. Замените существующие основанные на схеме классы на классы, заданные с помощью classdef ключевое слово.

empty статический метод: Входные параметры должны быть числовыми или логическими

Изменение поведения

В предыдущих релизах, empty статический метод принял входные параметры, которые конвертируемы к числовым или логическим значениям. Начиная в R2020a, MATLAB выдает ошибку, если входные параметры не являются числовыми, логическими, или значения, полученные на числовые или логические классы.

Например, в релизах до R2020a, передавая скалярный char 'b' к empty приводит к результату на основе Unicode числовой эквивалент для символа b (который является номером 98).

a = double.empty(0,'b')
a =

  0×98 empty double matrix

Начиная в R2020a, empty метод не принимает входные параметры, которые не являются числовыми или логическими.

a = double.empty(0,'b')
Error using double.empty
Value must be numeric or logical.

Вызов конструктора суперкласса: Более строгий синтаксис осуществляется

Изменение поведения

Разделите вызовы на подклассы конструкторов суперкласса, не может быть часть других выражений, содержаться в условных операторах или делаться после ссылок на объект. Для получения дополнительной информации об этих ограничениях см. Конструкторов подкласса.

В предыдущих релизах MATLAB не идентифицировал определенные синтаксисы как вызовы конструкторов суперкласса, и поэтому, не выдавал ошибки, вызванные путем вызова конструкторов суперкласса неправильно. Начиная в R2020a, MATLAB более строго осуществляет правильный синтаксис.

Следующий код класса иллюстрирует некоторые случаи, где предыдущие релизы не идентифицируют вызовы конструктора суперкласса из-за неправильного использования круглой скобки или скобок.

classdef MyClass < A & B
    methods
        function obj = MyClass
            obj = [obj@A] % Not idendified as superclass constructor call in previous releases
            obj@B
            (obj@B) % Not identified as a duplicate call to B constructor in previous releases
            if 1
                (obj@B) % Not identified as a conditional call in previous releases
            end
            (obj@A) % Not identified as called after object referenced in previous releases
        end
    end
end

Анализ данных

Live Editor Тэскс: В интерактивном режиме управляйте таблицами и расписаниями, и сгенерируйте код

Используйте задачи Live Editor сложить, распаковать, или синхронизировать таблицы и расписания. В интерактивном режиме исследуйте эффекты своих изменений в выходных таблицах и расписаниях. Задачи также автоматически генерируют код, который становится частью вашего live скрипта.

В R2020a MATLAB предлагает четыре задачи для управления данными в таблицах и расписаниях:

Чтобы открыть задачи в Live Editor, используйте меню Task на вкладке Live Editor. Для получения дополнительной информации смотрите, Добавляют Интерактивные Задачи к Live Script.

Basic Fitting Tool: Подходящие линии к отображенным на графике данным с помощью модернизированного интерфейса

Подходящие линии к отображенным на графике данным с помощью модернизированного интерфейса инструмента Basic Fitting. Откройте инструмент путем выбора Tools > Basic Fitting из панели инструментов фигуры.

Например, постройте выборочные данные.

load census
scatter(cdate,pop,'r')
Откройте инструмент Basic Fitting. Выберите подгонку и отобразите уравнение, R2 значение и значение среднеквадратичной ошибки (RMSE) на графике.

detrend Функция: проигнорируйте NaN значения

Можно теперь проигнорировать NaN значения, когда вычислительные тренды с detrend функция с помощью 'omitnan' параметр.

accumarray Функция: Поддержите сопоставимый выходной порядок на всех платформах

accumarray функция теперь возвращает результаты в тот же порядок, как они появляются во входе на всех платформах.

Ранее, если вы использовали функцию с accumarray это зависело от порядка данных, такого как @(x) x(1), другие платформы иногда возвращали различные результаты.

leapseconds Функция: Перечислите все секунды прыжка, используемые datetime тип данных

Перечислять все секунды прыжка, поддержанные datetime тип данных, используйте leapseconds функция. Выходная таблица, которая перечисляет секунды прыжка, включает даты, в которые они произошли, их знаки и совокупные корректировки. Чтобы определить Бюллетень Международного наземного сервиса вращения (IERS) C номер версии прыжка вторые данные, используемые в MATLAB, также используйте второй выходной аргумент. Для получения дополнительной информации см. Бюллетени IERS.

Чтобы перечислить секунды прыжка, используйте любой из следующих синтаксисов:

T = leapseconds
[T,vers] = leapseconds

timezones Функция: Определите версию Базы данных Часового пояса IANA

Определить версию Базы данных Часового пояса Комитета по цифровым адресам в интернете (IANA), поддержанную datetime тип данных, используйте второй выходной аргумент timezones функция.

[T,vers] = timezones

Для получения дополнительной информации о Базе данных Часового пояса IANA смотрите Базу данных Часового пояса IANA.

renamevars Функция: Переименуйте переменные в таблице или расписании

Можно переименовать переменные в таблице или расписании с помощью renamevars функция.

rows2vars и unstack Функция: Используйте правило именования, чтобы позволить имена переменных таблицы и расписания с любыми символами

Начиная в R2020a, можно задать правило для именования таблицы и переменных расписания, когда вы используете rows2vars или unstack функции. Задайте правило с помощью 'VariableNamingRule' аргумент пары "имя-значение".

Значение 'VariableNamingRule'

Правило

'modify' (значение по умолчанию)

Измените имена переменных, чтобы быть допустимыми идентификаторами MATLAB

'preserve'

Сохраните настоящие имена, которые могут иметь любые символы Unicode, включая символы non-ASCII и пробелы.

Примечание: В некоторых случаях функция должна изменить настоящие имена даже когда 'preserve' правило. Такие случаи включают:

  • Двойные названия

  • Имена, которые конфликтуют с табличными именами размерности

  • Имена, которые конфликтуют с зарезервированным именем.

  • Имена, длины которых превышают значение namelengthmax.

Ранее эти функции изменяли имена переменных таблицы и расписания, когда необходимый так, чтобы такие имена всегда были допустимыми идентификаторами MATLAB.

containsrange, overlapsrange, и withinrange Функции: Определите, пересекают ли времена строки расписания область значений требуемого времени

Чтобы определить, пересекают ли времена строки расписания область значений требуемого времени, используйте одну из этих функций.

Функция

Цель

containsrange

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

overlapsrange

Определите, перекрывают ли времена строки расписания область значений требуемого времени

withinrange

Определите, ли времена строки расписания в области значений требуемого времени

tall Массивы: Работайте с длинными массивами с большим количеством функций, включая groupfilter и matches

Функции, перечисленные здесь теперь, поддерживают длинные массивы как входные параметры. Для полного списка поддерживаемых функций введите methods tall. Для получения дополнительной информации об использовании и ограничениях, смотрите раздел Extended Capabilities в нижней части каждой страницы с описанием.

Кроме того, некоторые функции обновили или удалили ограничения с длинными массивами.

Функция

Изменения

ismember

ismember теперь позволяет обоим входным параметрам быть длинными массивами, целые одни из входных параметров являются результатом операции сокращения по первому измерению (такой как sum или mean).

Ранее только один вход мог быть длинным массивом.

vartype

Много высоких функций анализа данных могут теперь использовать vartype выбрать данные и сгруппированные переменные:

  • Предварительная обработка функций с 'DataVariables' пара "имя-значение" (такой как fillmissing, ischange, и smoothdata) может использовать vartype выбрать переменные данных.

  • Группировка функций с groupvars и datavars аргументы (такой как grouptransform и groupsummary) может использовать vartype выбрать данные и сгруппированные переменные.

Ранее эти функции не могли использовать vartype выбрать данные или сгруппированные переменные.

groupsummary и grouptransform

groupsummary и grouptransform может теперь работать с многомерными переменными в длинной таблице или длинном расписании.

Ранее эти функции могли только работать с переменными вектор-столбца.

Функциональность, удаляемая или измененная

datetime функциональный 'InputFormat' форматы месяца M и MM не распознавайте имена и MMM не распознает сокращения

Изменение поведения

Запуск в R2020a, когда вы задаете форматы месяца в 'InputFormat' аргумент пары "имя-значение" datetime функция, M и MM форматы не распознают имена месяца. Кроме того, MMM формат распознает только сокращенные имена. В предыдущих релизах, все эти форматы распознанные и сокращенные и полные имена месяца.

Для получения дополнительной информации о форматах смотрите Format свойство datetime функция.

Функция агрегации по умолчанию для нечисловых данных в unstack

Изменение поведения

В R2020a, если вы не задаете 'AggregationFunction' аргумент пары "имя-значение" unstack функция, затем функция агрегации по умолчанию для нечисловых данных unique функция. В предыдущих релизах не было никакой функции агрегации по умолчанию для нечисловых данных, таким образом, unstack повысил бы ошибку.

Поведение изменяется, когда функция агрегации не имеет никаких данных, чтобы агрегироваться в unstack

Изменение поведения

В R2020a существуют изменения поведения когда функция агрегации, заданная 'AggregationFunction' аргумент пары "имя-значение" unstack функция не имеет никаких данных, чтобы агрегироваться. Эта ситуация может произойти, когда нет никаких значений данных, которые соответствуют значениям в переменной индикатора после распаковывания. В таких случаях, unstack по существу вызывает функцию агрегации на пустом массиве.

Для получения дополнительной информации об этом изменении в поведении смотрите раздел Compatibility Considerations unstack.

Импорт и экспорт данных

Хранилища данных: Запишите данные от datastore до файлов с помощью writeall

Можно записать данные от datastore до файлов на диске с помощью writeall функция.

Кроме того, добавить writeall функциональность к пользовательским хранилищам данных, можно использовать новые классы matlab.io.datastore.FileWritable и matlab.io.datastore.FoldersPropertyProvider. Для получения дополнительной информации смотрите, Добавляет Поддержка Записи данных.

Хранилища данных: Возвратите расписания из tabularTextDatastore и spreadsheetDatastore объекты

tabularTextDatastore и spreadsheetDatastore объекты имеют два новых свойства, которые позволяют вам работать с расписаниями: OutputType и RowTimes. Эти свойства задают ли read, readall, и preview методы возвращают таблицы или расписания.

Ранее эти свойства были доступно только в хранилищах данных Паркета.

Хранилища данных: Раздел и перестановка TransformedDatastore и CombinedDatastore объекты

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

  • Можно разделить и переставить TransformedDatastore возразите, только если все его базовые хранилища данных могут быть разделены и переставлены.

  • Можно разделить и переставить CombinedDatastore возразите только если subset может быть применен ко всем его базовым хранилищам данных. Базовые хранилища данных могут также быть преобразованиями или комбинациями хранилищ данных, которые могут иметь subset примененный их.

Использование isPartitionable и isShuffleable протестировать ли CombinedDatastore возразите или TransformedDatastore объект может быть разделен или переставлен, и определить, когда определенные комбинации хранилищ данных подходят для параллельной обработки. isPartitionable и isShuffleable возвратите true когда базовые хранилища данных могут быть разделены или переставлены, соответственно.

Хранилища данных: файлы Процесса и блоки в файлах итеративно с помощью FileSet и BlockedFileSet объекты

Можно обработать большое количество файлов при перемещении через файлы итеративно с помощью matlab.io.datastore.FileSet объект. Точно так же можно обработать большое количество блоков в файлах итеративно с помощью matlab.io.datastore.BlockedFileSet объект.

Файлы Parquet: Управляйте схемой кодирования и версией Паркета при записывании файлов

parquetwrite, parquetinfo, и write функции имеют две новых пары "имя-значение":

  • 'VariableEncoding' средства управления, использует ли файл Parquet плоскость или кодирование словаря для каждой переменной.

  • 'Version' задает, использовать ли Паркет 1.0 или Паркет 2,0 форматирования файла.

Текст и файлы электронной таблицы: Добавьте, перезапишите или замените данные с помощью 'WriteMode' параметр

Можно принять решение добавить, перезаписать, или заменить данные при записи в текст и файлы электронной таблицы при помощи WriteMode параметр с этими функциями:

readtable Функция: результаты Использования detectImportOptions функция по умолчанию

Начиная в R2020a, readtable функционируйте использует результаты detectImportOptions функция, чтобы импортировать табличные данные. В сущности, эти два readtable вызовы функции ведут себя тождественно.

T = readtable(filename)
T = readtable(filename,detectImportOptions(filename))
Вопросы совместимости

Существует несколько различий между поведением по умолчанию readtable и его поведение по умолчанию в предыдущих релизах. Вызывать readtable с поведением по умолчанию это имело до R2019b, используйте 'Format','auto' аргумент пары "имя-значение".

T = readtable(filename,'Format','auto')

Таблица приводит существенные различия между поведением по умолчанию readtable в R2020a и его поведении по умолчанию в предыдущих релизах.

Описание полей ввода или строк

R2020a по умолчанию readtable Поведение

Поведение по умолчанию в предыдущих релизах

Первая строка не имеет текста, чтобы присвоить как имена выходных табличных переменных

Присваивает имена Var1..., VarN как имена выходных табличных переменных

Преобразует значения в первой строке значений данных к именам выходных табличных переменных

Несколько строк текста как линии заголовка

  • Проигнорируйте дополнительные линии заголовка

  • Импортируйте значения в остающихся строках как обнаруженные типы данных

  • Импортируйте дополнительные линии заголовка как текст в первых строках выходной таблицы

  • Импортируйте значения в остающихся строках как текст

Пустые поля

Обработайте как отсутствующие значения для обнаруженного типа данных

Обработайте как пустые символьные вектора или строки

Значения в кавычках

Обработка как обнаруженный тип данных

Обработайте как текст

Текст, который не может быть преобразован

Обработайте как отсутствующие значения для обнаруженного типа данных

Обработайте как текст

Нечисловой символ запаздывает цифровой символ без разделителя между ними

Обработайте символы как нечисловые

Обработайте цифровые и нечисловые символы, как будто разделитель разделил их

Входной текстовый файл имеет линии с различным количеством разделителей

Возвращает выходную таблицу с дополнительными переменными

Сообщение об ошибке повышений

textscanreadtabledetectImportOptions, и setvaropts Функции: Считайте и импортируйте шестнадцатеричные и бинарные литералы

Шестнадцатеричные и бинарные литералы теперь поддерживаются в функциях textscan, readtable, detectImportOptions, и setvaropts. Этот список обрисовывает в общих чертах добавленные возможности каждой функции.

  • textscan — Используйте спецификатор формата '%x' читать в данных, хранимых как шестнадцатеричные данные и использовать '%b' читать в данных, хранимых как двоичные данные. Типом данных по умолчанию является uint64. Например, res = textscan('110101', '%b') возвратит res = 53 с типом данных по умолчанию uint64.

  • readtable — Текст, который снабжается префиксом символы '0x' теперь обработан как шестнадцатеричные данные и текст с префиксным '0b' обработан как двоичные данные.

  • detectImportOptions — Используйте пары "имя-значение" 'HexType' или 'BinaryType' чтобы преобразовать данные из шестнадцатеричного или бинарного к десятичному числу, затем установите тип данных выходных данных. Например, 'HexType', 'uint8' преобразует снабженные префиксом шестнадцатеричные данные в десятичное число, затем устанавливает тип данных выхода к 8-битному беззнаковому целому во время импорта.

  • setvaropts — Установите тип данных и систему счисления использоваться при импорте переменных при помощи этих пар "имя-значение":

    • 'Type' устанавливает тип данных получившейся выходной переменной. Например, 'Type','uint32' устанавливает тип данных выходной переменной к 32-битному беззнаковому целому.

    • 'NumberSystem' преобразует систему счисления входной переменной от шестнадцатеричного или бинарного к десятичной системе исчисления. Например, 'NumberSystem','hex' преобразует данные, которые хранятся как шестнадцатеричные к десятичным данным. Если система счисления входной переменной задана как 'decimal', затем никакое преобразование не применяется. NumberSystem также новое свойство NumericVariableImportOptions объект.

h5read и h5readatt: Считайте нескалярные данные о строке как строковые массивы MATLAB

Высокоуровневые HDF5 функции h5read и h5readatt теперь возвратите строковые массивы HDF5 как строковые массивы MATLAB, а не массивы ячеек из символьных векторов. Одна (скалярные) строки HDF5 все еще возвращены как векторы символов MATLAB.

h5create и h5write: Запишите данные о строке в файлы HDF5

Можно теперь записать данные о строке в использование файлов HDF5 h5create и h5write вместо того, чтобы использовать низкоуровневые HDF5 функции. Данные о строке могут быть заданы как векторы символов MATLAB или строковые массивы MATLAB.

Библиотека CDF: Обновленный до v3.7.0

Библиотека CDF была обновлена до версии 3.7.0.

Tiff Объект: Считайте и запишите значения Рационального Полиномиального Содействующего тега

Можно теперь считать и записать значения тега Рационального полиномиального коэффициента (RPC) с помощью RPCCoefficientTag пометьте для Tiff объект. Для получения дополнительной информации см. Таблицу 6 в Экспорте в Изображения.

jsonencode: Настройте кодирование в классах MATLAB

Можно перегрузиться jsonencode функция, чтобы настроить JSON, кодирующий для пользовательского класса MATLAB. Для примера смотрите, Настраивают JSON, Кодирующий для Классов MATLAB.

jsonencode: Закодируйте перечисления

jsonencode кодирует перечисления как строки. Например,

on = matlab.lang.OnOffSwitchState.on;
jsonencode(on)
ans =

    '"on"'

Функциональность, удаляемая или измененная

readtablewritetabletextscan, и подобные функции используют автоматическое обнаружение набора символов и UTF-8, кодирующий по умолчанию

Изменение поведения

С R2020a большинство функций, которые считывают текстовые данные, использует автоматическое обнаружение набора символов, чтобы обнаружить кодировку символов. Функции, которые используют автоматическое обнаружение набора символов, включают filereadtextscan, readvarsreadtable, readcell, readmatrix, и readtimetable.

Точно так же большинство функций, которые пишут текстовые данные, использует UTF-8 в качестве кодировки символов по умолчанию. Используя UTF-8 обеспечивает функциональную совместимость между всеми платформами и локалями без потери данных или повреждения. Функции, которые используют UTF-8, кодирующий по умолчанию, включают writematrixwritetable, writecell, и writetimetable.

Функции Файлового ввода-вывода, такие как fscanf и fprintf, используйте автоматическое обнаружение набора символов и UTF-8, кодирующий по умолчанию

Изменение поведения

С R2020a символьно-ориентированный файловый ввод-вывод функционирует, такие как fscanffgets, и fgetl инициируйте автоматическое обнаружение набора символов при чтении файла, который был открыт с помощью fopen без заданного кодирования.

Точно так же fprintf значения по умолчанию к использованию кодирования UTF-8 при записывании файла, который был открыт с помощью fopen без заданного кодирования.

h5write и h5writeatt используйте кодировку символов UTF-8 по умолчанию

Изменение поведения

UTF-8 является теперь кодировкой символов по умолчанию для высокоуровневых HDF5 функций h5write и h5writeatt гарантировать, что все кодовые точки Unicode могут быть правильно представлены в файлах HDF5.

h5read и h5readatt возвратите нескалярные данные о строке как строки MATLAB

Изменение поведения

Высокий уровень HDF5 функционирует h5read и h5readatt теперь возвратите строковые массивы HDF5 как строковые массивы MATLAB, а не массивы ячеек из символьных векторов. Одна (скалярные) строки HDF5 все еще возвращены как векторы символов MATLAB.

web функция не возвращает указатель или URL для страниц, которые открывают ваш системный браузер

Изменение поведения

web функция не возвращает указатель или URL для страниц, которые открывают в системном браузере. Это включает все внешние страницы, которые по умолчанию открывают в вашем системном браузере, если не сконфигурировано в противном случае в веб-Настройках MATLAB.

Чтобы обновить ваш код, удалите указатель и выходные аргументы URL от экземпляров web функция. Эта таблица показывает примеры того, как можно обновить код.

ПреждеПосле
[stat,h] = web('https://www.mathworks.com','-browser')
stat = web('https://www.mathworks.com','-browser')
[stat,h,url] = web('https://www.mathworks.com','-browser')
stat = web('https://www.mathworks.com','-browser')

hdftool был удален

Ошибки

hdftool был удален. Чтобы программно импортировать HDF4 или файлы HDF-EOS, используйте hdfread функцию вместо этого.

Импорт файлов HDF5 с помощью Import Tool больше не поддерживается

Изменение поведения

Import Tool больше не поддерживает импорт файлы HDF5. Чтобы программно импортировать HDF4 или файлы HDF-EOS, используйте hdfread функцию вместо этого.

Математика

nufft и nufftn Функции: Вычислите неоднородные быстрые преобразования Фурье

Чтобы вычислить 1D или быстрые преобразования Фурье N-D с неоднородной выборкой, используйте nufft и nufftn функции, соответственно.

sparse Функция: Поддержка целочисленных индексов и логической агрегации

sparse функция имеет две новых возможности:

  • Когда вы создаете разреженную матрицу с помощью синтаксиса sparse(i,j,v), индекс вводит i и j могут теперь быть целочисленные типы данных.

  • Когда третий вход синтаксиса sparse(i,j,v) содержит логические значения и в i существуют повторенные индексы и j, sparse функция теперь применяет логическое any операция к значениям с повторными индексами.

Графика

boxchart Функция: Визуализируйте сгруппированные числовые данные при помощи графиков поля

Создавать графики поля, также названные диаграммами, использование boxchart функция. Для каждой группы данных соответствующий график поля отображает следующую информацию: медиана, сначала и третьи квартили, выбросы (вычисленное использование межквартильного размаха) и невыброс минимальные и максимальные значения. Когда вы используете векторные данные, можно использовать первый входной параметр xgroupdata разделять ваши данные в группы и задавать положения соответствующих полей. Когда вы используете матричные данные, boxchart создает отдельное поле для каждого столбца в матрице.

exportgraphics и copygraphics Функции: Сохраните и скопируйте графику с улучшенной поддержкой публикации рабочих процессов

Используйте exportgraphics функционируйте, чтобы сохранить содержимое любых осей, фигуры, графика, который может быть дочерним элементом фигуры, размещенного рядом размещения графика или контейнера, такого как панель. Эта функция обеспечивает лучшую альтернативу print и saveas функции, когда это необходимо, к:

  • Сохраните графику, отображенную в приложении или в MATLAB Online.

  • Минимизируйте пробел вокруг содержимого.

  • Сохраните фрагмент PDF со встраиваемыми шрифтами.

  • Сохраните подмножество содержимого на рисунке.

  • Управляйте цветом фона.

copygraphics функция обеспечивает большую часть той же функциональности как exportgraphics функция, за исключением того, что это копирует содержимое в ваш системный буфер обмена вместо того, чтобы сохранить его в файл. Используйте эту функцию, чтобы скопировать и вставить содержимое из MATLAB в другие приложения.

ChartContainer Класс: Разработайте графики, которые отображают плиточное размещение Декартовых, полярных, или географических графиков

Графики вы разрабатываете как подкласс matlab.graphics.chartcontainer.ChartContainer теперь обеспечьте TiledChartLayout объект, который можно использовать, чтобы расположить одну или несколько Осей декартовой системы координат, полярных осей или географических осей в графике.

Получить доступ к TiledChartLayout объект, вызовите getLayout метод. Чтобы поместить один или несколько объектов осей в размещение, вызовите axes, polaraxes, или geoaxes функция, и задает TiledChartLayout возразите как первый входной параметр. Для получения дополнительной информации смотрите, Разрабатывают Графики С Полярными осями, Географическими Осями или Несколькими Осями.

Мозаичное Размещение Графика: Положение, вложенное множество и изменение размер сетки размещений

Настройте размещения, которые вы создаете с tiledlayout функция путем установки этих свойств на TiledChartLayout объект:

  • Position, InnerPositonOuterPosition , и PositionConstraint — Для изменения размера и местоположения размещения.

  • GridSize — Для изменения количества мозаик вдоль строк и столбцов размещения. Можно установить это свойство только, когда размещение пусто.

  • Layout — Для конфигурирования вложенных размещений. Вложенные размещения состоят по крайней мере из двух TiledChartLayout объекты, где Parent свойство одного объекта является другим объектом.

pie Функция: Задайте числовой формат для меток процента

Задайте числовой формат для меток процента на круговой диаграмме. Например, можно задать количество десятичных разрядов или значительных цифр, чтобы отобразиться.

Функции Удобства осей: Передайте массив объектов осей или объектов диаграммы к функциям удобства, таким как gridсодержание, и box

Измените несколько осей или графиков одновременно путем передачи вектора из объектов к grid, hold, box, xlabel, ylabel, zlabel, и title функции.

SeriesIndex и NextSeriesIndex Свойства: Управляйте как цикл графиков через цвета и стили линии

Установите SeriesIndex свойство на объектах графика, таких как Lineрассеяние, и Bar управлять, как объекты варьируются в цвете и возможно стиль линии. По умолчанию, SeriesIndex поскольку объект является номером, который соответствует порядку объекта создания. MATLAB использует номер, чтобы вычислить индексы в ColorOrder и LineStyleOrder свойства осей. Изменение значения этого свойства полезно, когда это необходимо, чтобы повторно присвоить цвета или стили линии объектов в осях.

NextSeriesIndex свойство на осях обеспечивает количество объектов, которые имеют SeriesIndex свойство. MATLAB использует его, чтобы присвоить значение SeriesIndex свойство для каждого нового объекта в осях. Количество запускается в 1 и шаг для каждого дополнительного объекта. NextSeriesIndex свойство полезно, когда это необходимо, чтобы отследить как цикл объектов через цвета и стили линии.

Для получения дополнительной информации об управлении цветами и стилями линии, смотрите Цвета Управления, Стили линии и Маркеры в Графиках.

colororder Функция: Управление раскрашивает поля точек гистограммы и параллельные графики

colororder функционируйте теперь поддерживает графики, созданные с scatterhistogram и parallelplot функции.

pareto Функция: Задайте часть совокупной гистограммы, чтобы включать

Задайте часть совокупной гистограммы, чтобы отобразиться в Диаграмме Парето в качестве последнего аргумента к pareto функция. Например, эта Диаграмма Парето включает все панели, которые составляют 100% совокупной гистограммы Y.

Y = [50 20 15 15];
pareto(Y,1)

Оси: Управляйте полями для заголовков и меток путем установки InnerPosition и PositionContraint свойства

Установите InnerPositon свойство на любом типе объекта осей управлять размером и местоположением поля графика.

Установите PositionConstraint свойство объекта осей или графика, который может быть дочерним элементом фигуры, чтобы управлять пробелом вокруг поля графика, когда вы добавляете или изменяете художественные оформления, такие как заголовки и подписи по осям. Это свойство похоже на существующий ActivePositionProperty. Однако различающийся ActivePositionProperty, PositionConstraint свойство принимает значения 'outerposition' и 'innerposition' вместо 'outerpositon' и 'position'.

Встроенные Взаимодействия Осей: Исследуйте данные с курсорами, которые показывают доступные взаимодействия

Когда вы наводите в наборе осей, курсор изменяется, чтобы указать, когда можно вращать оси, создать всплывающие подсказки и линейки оси панорамирования. Например, когда вы наводите на марки линейки в 2D осях, курсор указывает, что можно перетащить, чтобы панорамировать линейку оси путем изменения наhand pointer symbol. Когда вы наводите на графики, которые поддерживают всплывающие подсказки, курсор указывает, что можно щелкнуть, чтобы создать всплывающую подсказку путем изменения наcrosshair pointer symbol. Можно всегда перетаскивать к панорамированию в 2D осях и прокрутке, чтобы масштабировать, даже когда курсор указывает на другое взаимодействие.

Можно отключить эти изменения курсора путем установки Pointer свойство фигуры.

scatter(1:10,1:10)
f = gcf;
f.Pointer = 'arrow';

Встроенные Взаимодействия Осей: Настройте встроенные взаимодействия на географических осях

По умолчанию географические оси включают встроенное панорамирование, изменение масштаба и взаимодействия со всплывающими подсказками. Включите и отключите встроенные взаимодействия по умолчанию для GeographicAxes объекты с помощью enableDefaultInteractivity и disableDefaultInteractivity функции.

Можно создать индивидуально настраиваемый набор встроенных взаимодействий путем установки Interactions свойство GeographicAxes объект. Задайте Interactions свойство как массив ZoomInteraction, PanInteraction, или DataTipInteraction объекты. Для получения дополнительной информации смотрите Интерактивность Диаграммы управления.

linkdata Функция: Открытое диалоговое окно, чтобы задать источники данных с помощью нового синтаксиса

linkdata функция имеет новый синтаксис, linkdata showdialog, это открывает диалоговое окно Linked Plot Data Sources. Используйте диалоговое окно, чтобы в интерактивном режиме задать источники данных для отображенных на графике данных.

В качестве альтернативы вместо того, чтобы вызвать linkdata showdialog, можно открыть диалоговое окно путем нажатия на Link/Unlink Plot на панели инструментов фигуры.

Функциональность, удаляемая или измененная

Большинство свойств, которые принимают значения 'on' или 'off' теперь возвратите OnOffSwitchState значение

Изменение поведения

Большинство свойств графического объекта, которые принимают значения 'on' или 'off' теперь примите и возвратите matlab.lang.OnOffSwitchState значение. Например, можно задать Visible свойство объекта осей как 'on'off, 1, 0, или логическое значение. Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение свойства как логическое значение в условном операторе.

Любой код, который устанавливает свойство на 'on' или 'off' ведет себя тот же путь как в предыдущих релизах. Однако вы можете должны быть обновить код, который проверяет значение свойства. Эта таблица описывает наиболее распространенные ситуации.

Кодирование шаблонаПример кодирования шаблонаОбновленный код

Проверка определенный символ

obj.Visible(2) == 'n'

obj.Visible == 1

Проверка типа данных

isequal(class(obj.Visible),'char')
или
ischar(obj.Visible)

isequal(class(obj.Visible),...
        'matlab.lang.OnOffSwitchState')
или
isa(obj.Visible,...
        'matlab.lang.OnOffSwitchState')

Проверка значения в модульном тесте

verifyEqual(testcase,obj.Visible,'on')

verifyEqual(obj.Visible,...
        matlab.lang.OnOffSwitchState.on)

ActivePositionProperty не рекомендуется

Все еще работает

Установка или получение ActivePositionProperty на объекте осей или объекте диаграммы не рекомендуется. Используйте PositionConstraint свойство вместо этого.

Нет никаких планов удалить ActivePositionProperty в это время, но свойство больше не перечисляется, когда вы вызываете set, get, или properties функции на объекте осей или объекте диаграммы.

Чтобы обновить ваш код, внесите эти изменения:

  • Замените все экземпляры ActivePositionProperty с PositionConstraint.

  • Замените все ссылки на 'position' опция с 'innerposition' опция.

Например, следующие кодовые наборы оси ActivePositionProperty к 'position'.

ax = gca;
ax.ActivePositionProperty = 'position';

Вот обновленный код, который оказывает то же влияние.

ax = gca;
ax.PositionConstraint = 'innerposition';

ChartContainer подклассы присваивают значения свойств после setup запуски метода

Изменение поведения

Когда вы создаете экземпляр ChartContainer разделите на подклассы и передайте аргументы пары "имя-значение" свойства конструктору, значения свойств присвоены после setup запуски метода. В R2019b значения свойств присвоены перед setup запуски метода.

Если setup метод ваших ссылок класса значение свойства на объекте, можно обновить код любым из следующих способов:

  • Присвойте значение по умолчанию для свойства, когда вы зададите его.

  • Переместите код, который ссылается на свойство к update метод.

Вызов ChartContainer.getAxes метод возвращает объект осей как дочерний элемент TiledChartLayout объект

Изменение поведения

Когда вы вызываете getAxes метод в ChartContainer разделите на подклассы, метод теперь возвращает объект осей, который является дочерним элементом TiledChartLayout объект. Если нет никаких осей в графике, getAxes создает объект Осей декартовой системы координат. График больше не имеет объект осей, пока вы не создаете один путем вызова getAxes метод или одна из функций создания осей: axes, polaraxes, или geoaxes.

В результате этих изменений оси в вашем графике не могут быть текущей системой координат. Ваш код может привести к неожиданным результатам, если вы вызываете следующие типы функций в ваших методах класса, не задавая целевой объект осей.

  • Функции построения графика — Например, plot, scatter, bar, или surf

  • Функции, которые изменяют оси — Например, hold, grid, или title

В R2019b объект осей является дочерним элементом объекта диаграммы, и это - текущая система координат в рамках ваших методов класса.

Чтобы обновить ваш код, задайте объект осей как первый входной параметр при вызове функций построения графика и функций, которые изменяют оси.

Реализация коллбэков на географических графиках отключает встроенные взаимодействия

Изменение поведения

Запуск в R2020a, когда вы реализуете коллбэки, такие как ButtonDownFcn на географическом графике MATLAB автоматически отключает встроенные взаимодействия.

В предыдущих релизах, реализовывая коллбэки не отключил встроенные взаимодействия на географических графиках.

Выровняйтесь Распределяют Инструмент, будет удален в будущем релизе

Все еще работает

Выравнивание Распределяет Инструмент, будет удален в будущем релизе.

Чтобы управлять расположением нескольких графиков в фигуре, создайте мозаичное размещение графика с помощью tiledlayout функцию вместо этого.

Чтобы выровнять или распределить графические объекты в фигуре, выберите Tools > Align или Tools > Distribute из панели инструментов фигуры вместо этого.

Функции построения диаграммы возвращают выходной параметр только, когда вы задаете выходной аргумент

Изменение поведения

heatmap, geobubble, parallelplot, scatterhistogram, stackedplot, wordcloud, xline, и yline функции больше не возвращают объект диаграммы как ans переменная, когда вы вызываете их, не задавая выходной аргумент. Это новое поведение сопоставимо с поведением большинства других функций построения диаграммы.

В предыдущих релизах функции возвращают объект диаграммы как ans по умолчанию. Если у вас есть код, который ссылается на объект диаграммы, который хранится в ans переменная, обновите свой код путем присвоения выхода различной переменной прежде, чем сослаться на него.

Создание приложений

uicontextmenu Функция: Добавьте и сконфигурируйте компоненты контекстного меню в приложениях и на холсте App Designer

Можно теперь создать контекстные меню в приложениях App Designer или в приложениях, созданных с uifigure функция. Когда вы щелкаете правой кнопкой по компоненту UI, которому присвоили контекстное меню ему, список пунктов меню появляется.

В приложениях, созданных программно с uifigure функционируйте, создайте контекстное меню с помощью uicontextmenu функция. Добавьте пункты меню в него с помощью uimenu функция. Затем присвойте его компоненту путем установки ContextMenu свойство компонента к ContextMenu объект.

В App Designer создайте контекстное меню и присвойте его компоненту путем перетаскивания его от Component Library на компонент. Для получения дополнительной информации смотрите, Создают и Контекстные меню Редактирования.

uitoolbar Функция: Добавьте пользовательские панели инструментов на приложения программно

Программно добавить пользовательские панели инструментов на ваше приложение App Designer или ваше приложение, созданное с uifigure функция, используйте uitoolbar функция. Добавьте инструменты нажатия или инструменты переключателя на панель инструментов с помощью uipushtool или uitoggletool функции.

Icon Свойство: Отобразите SVG, анимированный GIF или значки матрицы изображений истинного цвета в кнопках и древовидных узлах

Icon свойство ButtonКнопка-переключатель, и TreeNode объекты теперь поддерживают SVG и анимированные файлы GIF и данные о матрице изображений истинного цвета.

Указатель мыши: Измените символ указателя мыши в приложениях

Можно теперь изменить символ указателя мыши в приложениях, созданных с uifigure функционируйте или в App Designer к опциям, таким как 'hand' или 'crosshair', или можно создать собственный символ указателя.

Для приложений, созданных с uifigure функция, набор Pointer свойство Figure объект. Для приложений, созданных с App Designer, выберите компонент в Component Browser. Затем во вкладке Inspector выберите указатель из Pointer выпадающее меню.

Чтобы создать символ пользовательского указателя, программно установите Pointer значение свойства к 'custom', и используйте PointerShapeCData свойство задать символ. Чтобы задать активный пиксель символа пользовательского указателя, установите PointerShapeHotSpot свойство.

Для получения дополнительной информации смотрите UI Figure Properties.

Графическая Поддержка: Создайте аннотации, нарисуйте данные кистью, сконфигурируйте всплывающие подсказки, сохраните и скопируйте графику

Можно теперь создать аннотации, данные о кисти, сконфигурировать всплывающие подсказки, и сохранить или скопировать графику в приложениях App Designer или в приложениях, созданных с uifigure функция.

Чтобы создать аннотации, используйте annotation функция.

Используйте режим кисти, чтобы отметить данные о графике в интерактивном режиме. Затем можно удалить или заменить отмеченные значения данных или экспортировать значения в рабочую область. Чтобы включить режим кисти, нажмите кнопку окрашивания данных из панели инструментов осей или используйте brush функционируйте, чтобы установить режим кисти фигуры к 'on'.

Сконфигурируйте всплывающие подсказки любым из этих способов:

  • Отредактируйте метки всплывающей подсказки путем двойного клика по ним.

  • Отобразите несколько прикрепленных (персистентных) всплывающих подсказок путем нажатия больше чем на одну точку данных в графике.

  • Перетащите прикрепленные всплывающие подсказки, чтобы переместить их местоположение относительно точки данных.

  • Просмотрите опции всплывающей подсказки путем щелчка правой кнопкой по прикрепленной всплывающей подсказке, чтобы отобразить контекстное меню.

Сохраните графику, отображенную в приложении с помощью exportgraphics или copygraphics функция.

GUIDE к Инструменту Миграции App Designer для MATLAB: Переместите приложения GUIDE на App Designer скорее и с меньшим количеством ручных обновлений кода

Улучшения инструмента миграции значительно уменьшают время и количество ручных обновлений кода, требуемых получить ваше приложение, запускающееся в App Designer. Эти улучшения позволяют большей части вашего кода приложения работать в App Designer с немногими или никакими ручными требуемыми изменениями. Для получения дополнительной информации см. Стратегии Миграции GUIDE.

GUIDE к Инструменту Миграции App Designer для MATLAB доступен через Add-On Explorer в рабочем столе MATLAB или посредством Обмена файлами на MATLAB Central™.

Среда тестирования приложения: Выполните жесты нажатия с различными типами выбора

Выбор мыши поддержек среды тестирования приложения вводит press жесты, которые выполняются на фигурах, созданных с uifigure функция. Чтобы задать тип выбора, используйте 'SelectionType' аргумент пары "имя-значение". Например:

fig = uifigure;
testCase = matlab.uitest.TestCase.forInteractiveUse;
testCase.press(fig,'SelectionType','open')

Функциональность, удаляемая или измененная

JavaContainer свойство будет удалено в будущем релизе

Предупреждает

JavaContainer свойство не документировано и будет удалено в будущем релизе. Обновите свой код, чтобы использовать зарегистрированные альтернативы. Для списка зарегистрированной функциональности, которую можно использовать вместо этого, см. Рекомендации для MATLAB Apps Using Java & ActiveX на mathworks.com.

UIContextMenu свойство графических объектов и компонентов пользовательского интерфейса не рекомендуется

Все еще работает

Запуск в R2020a, использование UIContextMenu свойство присвоить ContextMenu возразите против графического объекта, или компонент пользовательского интерфейса не рекомендуется. Используйте ContextMenu свойство вместо этого. Новое свойство может иметь те же значения как старое.

Нет никаких планов удалить поддержку UIContextMenu свойство в это время. Однако UIContextMenu свойство больше не появляется в списке, возвращенном путем вызова get функция на графическом объекте или компоненте пользовательского интерфейса.

Callback свойство ContextMenu объекты не рекомендуются

Все еще работает

Запуск в R2020a, использование Callback свойство ContextMenu объект не рекомендуется. Чтобы задать поведение, когда вы будете взаимодействовать с контекстным меню, используйте ContextMenuOpeningFcn свойство ContextMenu объект вместо этого. Новое свойство может сослаться на функции обратного вызова таким же образом как на старую.

Нет никаких планов удалить поддержку Callback свойство ContextMenu объекты в это время. Однако это свойство больше не появляется в списке, возвращенном путем вызова get функция на ContextMenu объект.

Visible и Position свойства ContextMenu объекты не рекомендуются

Все еще работает

Запуск в R2020a, использование Visible и Position свойства сконфигурировать контекстное меню, чтобы открыться в определенном местоположении не рекомендуются. В приложениях, созданных с uifigure функция, используйте open функцию вместо этого.

Нет никаких планов удалить поддержку Visible и Position свойства ContextMenu объекты в это время. Однако эти свойства больше не появляются в списке, возвращенном путем вызова get функция на ContextMenu объект.

Размер шрифта и цвет столбца и заголовков строки в компонентах таблицы UI изменились

Изменение поведения

Начиная в R2020a, компоненты таблицы UI, созданные в App Designer или в цифрах созданный с uifigure функциональный отображаемый столбец и заголовки строки в большем размере шрифта и более темном цвете шрифта. Например, этот код, который создает компонент таблицы UI с табличным рендерингом данных массива по-другому в R2020a, чем он, делает в R2019b:

fig = uifigure;

dates = datetime([2016,01,17; 2017,01,20],'Format','MM/dd/uuuu');
m = [10; 9];
tdata = table(dates,m,'VariableNames',{'Date','Measurement'});

uit = uitable(fig,'Data',tdata);
uit.RowName = 'numbered';

Comparison of table UI component column and row headers in R2020a versus R2019b.

Производительность

Выполнение Цикла Live Editor: Улучшенная производительность, когда рабочие циклы в live скриптах

Циклы, запущенные значительно быстрее в live скриптах. Например, live скрипт, содержащий этот код, который запускает цикл один миллион раз и отображает текущую итерацию цикла каждые десять тысяч итераций, приблизительно 42x быстрее.

for t = 1:1000000
    if ~mod(t, 10000)
        disp(t)
    end
end

Аппроксимированные времена выполнения:

R2019b: 2,291 с

R2020a: 0,054 с

Код был синхронизирован в системе тестирования Windows 10 с Intel на 3,6 ГГц Xeon CPU E5-1650 CPU путем выполнения вышеупомянутого live скрипта.

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

Анимация Live Editor Выход: Улучшенная производительность при анимации графиков в live скриптах

Анимации цикла for отображаются быстрее в live скриптах. Например, live скрипт, содержащий этот код, который создает анимацию цикла for графика синусоиды, приблизительно 1.3x быстрее.

tic
x = 0:0.1:10*pi;
y = sin(x);
xlim([0 10*pi])
ylim([-1 1])
hold on
p = plot(x(1),y(1));
for k=1:length(x)
    p.XData = x(1:k);
    p.YData = y(1:k);
   drawnow
end
toc
Аппроксимированные времена выполнения:

R2019b: 8,875 с

R2020a: 6,633 с

Код был синхронизирован в системе тестирования Windows 10 с Intel на 3,6 ГГц Xeon CPU E5-1650 CPU путем выполнения вышеупомянутого live скрипта.

datetimeдлительность, и calendarDuration Индексация Типа данных: Улучшенная производительность при присвоении элементов путем индексирования

datetimeдлительность, и calendarDuration преобразованное в нижний индекс присвоение значительно быстрее. Эффективность является теперь чрезвычайно постоянной с числом элементов в массиве.

  • Например, когда вы присваиваете в datetime массив с 106 элементы, эффективность в R2020a приблизительно 25x быстрее, чем в R2019b, как показано ниже.

    function timingTest()
        dt = datetime + hours(1:1e6);
        indices = randi(1e6,1,10000);
        rhs = NaT;
    
        tic;
        for i = indices
            dt(i) = rhs;
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019b: 0,42 с

    R2020a: 0,017 с

  • Точно так же присвоение в duration массив быстрее. Например, когда вы присваиваете в duration массив с 106 элементы, эффективность в R2020a приблизительно 11x быстрее, чем в R2019b.

    function timingTest()
        d = hours(1:1e6);
        indices = randi(1e6,1,10000);
    
        tic;
        for i = indices
            d(i) = NaN;
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019b: 0,43 с

    R2020a: 0,039 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 система тестирования на 3,60 ГГц путем вызова функционального timingTest.

Эти повышения производительности происходят только, когда вы делаете преобразованные в нижний индекс присвоения в функции. Нет никакого улучшения при индексировании в datetimeдлительность, и calendarDuration массивы в командной строке, или в try-catch блоки.

datetime Парсинг Формата Типа данных: Улучшенная производительность при парсинге формата вводов текста

datetime парсинг эффективности значительно быстрее при парсинге формата вводов текста. Например, этот код анализирует формат даты строки с помощью datetime функция. Код выполняется приблизительно 1.75x быстрее в R2020a, чем в R2019b.

function timingTest()
   d1 = datetime(2010,1,1:10000);
   s = string(d1,'dd-MMM-uuuu');
   tic
   for i = 1:100, d2 = datetime(s); end
   toc
end

Аппроксимированные времена выполнения:

R2019b: 5,44 с

R2020a: 3,10 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 система тестирования на 3,60 ГГц путем вызова функционального timingTest.

table Индексация Типа данных: Улучшенная производительность при присвоении элементов путем индексирования в табличные переменные

table преобразованное в нижний индекс присвоение в табличные переменные значительно быстрее. Эффективность является чрезвычайно постоянной с числом элементов в каждой табличной переменной.

  • Например, когда вы используете точечную индексацию, чтобы присвоить элементы переменной с 106 элементы, эффективность в R2020a приблизительно 2x быстрее, чем в R2019b, как показано ниже.

    function timingTest()
        t = table(zeros(1e6,1));
        indices = randi(1e6,1,10000);
    
        tic;
        for i = indices
            t.Var1(i) = rand;
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019b: 1,20 с

    R2020a: 0,59 с

  • Точно так же присвоение с помощью фигурных скобок быстрее. Когда вы присваиваете в три табличных переменные с 106 элементы, эффективность в R2020a приблизительно 1.2x быстрее, чем в R2019b, как показано ниже.

    function timingTest()
        t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1));
        indices = randi(1e6,1,10000);
    
        tic;
        for i = indices
            t{i,:} = rand;
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019b: 8,04 с

    R2020a: 6,68 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 система тестирования на 3,60 ГГц путем вызова функционального timingTest.

Повышение производительности происходит только, когда вы делаете преобразованные в нижний индекс присвоения таблицы в функции. Нет никакого улучшения при индексировании в таблицы в командной строке, или в try-catch блоки.

Преобразованная в нижний индекс Ссылка: Улучшенная производительность для struct массивы сохранены в свойстве объекта

Эффективность индексации в struct массивы, которые хранятся в свойстве объекта MATLAB, улучшились. Например, этот код выполняется о 2.3x быстрее в R2020a:

classdef ContainerClass
    properties
        field
    end
end
function out = timingTest
  
      M = struct('f', 1);
      M(2) = struct('f', 2);
      C = ContainerClass;
      C.field = M;

      tic
      for j = 1:4e5
          out = C.field(1);
      end
      toc

end

Аппроксимированные времена выполнения:

R2019b: 1,14 с

R2020a: 0,5 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 система тестирования на 3,60 ГГц путем вызова функционального timingTest.

imread Функция: Улучшенная производительность в чтении изображений JPEG

imread функция показывает улучшенную производительность при чтении изображений JPEG. Чем выше разрешение изображения (измеренный в пикселях), тем больше повышение производительности становится.

Например, изображение JPEG с разрешением 5120x3840 читается о 2.1x быстрее в R2020a:

function out = testperformance(filename)
for ii = 1:100 
    tic
    imread(filename);
    ts(ii) = toc;
end
out = mean(ts)
end

Аппроксимированные времена выполнения:

R2019b: 0,46 с

R2020a: 0,22 с

Код был синхронизирован на Windows 10, Intel Xeon® CPU E5-1650 система тестирования на 3,6 ГГц путем вызова функционального testperformance.

readmatrix Функция: Улучшенная производительность в чтении данных

readmatrix функция показывает улучшенную производительность при чтении матричных данных. Чем больше матрица, которая будет считана, тем больше повышение производительности становится.

Например, матрица, которая является 30,000 x 30 000 элементов в размере, читается о 1.1x быстрее в R2020a:

function out = readmatrix_performance()
M = randi(10,30000);
writematrix(M);
for ii = 1:10 
tic
readmatrix('M.txt');
ts(ii) = toc;
end
out = mean(ts);

Аппроксимированные времена выполнения:

R2019b: 225,21 с

R2020a: 198,42 с

Код был синхронизирован на Windows 10, Intel Xeon® CPU E5-1650 система тестирования на 3,6 ГГц путем вызова функционального readmatrix_testperformance.

ode15s, ode23t, и ode15i Решатели: Улучшенная производительность решая дифференциальные уравнения

ode15s, ode23t, и ode15i решатели показывают улучшенную производительность, решая дифференциальные уравнения. Повышение производительности поправляется как количество линейных систем, оцененных решателем во время увеличений процесса решения.

  • Для ode15s, этот код выполняется о 3.5x быстрее в R2020a:

    function timingOde15s
    [t,y] = ode15s(@vdp1000,[0 1e5],[2; 0]);
    end

    Аппроксимированные времена выполнения:

    R2019b: 2,83 с

    R2020a: 0,82 с

  • Для ode23t, этот код выполняется о 4.1x быстрее в R2020a:

    function timingOde23t
    [t,y] = ode23t(@vdp1000,[0 1e5],[2; 0]);
    end

    Аппроксимированные времена выполнения:

    R2019b: 2,92 с

    R2020a: 0,72 с

  • Для ode15i, этот код выполняется о 2.3x быстрее в R2020a:

    function timingOde15i
    [y0,yp0] = decic(@weissinger,1,sqrt(3/2),1,0,0);
    for k = 1:100
      [t,y] = ode15i(@weissinger,[1 10],y0,yp0);
    end
    end

    Аппроксимированные времена выполнения:

    R2019b: 0,51 с

    R2020a: 0,22 с

Все синхронизации выполнялись на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц с помощью timeit функция:

timeit(@timingOde15s)
timeit(@timingOde23t)
timeit(@timingOde15i)

transpose и ctranspose Функции: Улучшенная производительность на больших массивах

Эффективность transpose и ctranspose функции и ' операторы), улучшился при работе с большими массивами. Например, этот код выполняется о 4.4x быстрее в R2020a при перемещении 10,000 10,000 матрица:

function timingTest
    rng default
    A = rand(1e4);
    tic
    At = A';
    toc
end

Аппроксимированные времена выполнения:

R2019b: 0,61 с

R2020a: 0,14 с

Код был синхронизирован на Windows 10, Intel Xeon CPU E5-1650 v3 система тестирования на 3,50 ГГц путем вызова функционального timingTest.

ordschur и ordqz Функции: Улучшенная производительность, работающая с большими матрицами

ordschur и ordqz функции показывают улучшенную производительность при работе с квадратными матрицами порядка 200 или больше. Повышение производительности поправляется, когда матрица становится больше.

  • Для ordschur, этот код выполняется о 11.3x быстрее в R2020a:

    function timingOrdschur
    rng default
    A = randn(2000);
    [U,S] = schur(A,'real');  
    tic
    [U,S] = ordschur(U,S,'lhp');
    toc
    end

    Аппроксимированные времена выполнения:

    R2019b: 3,5 с

    R2020a: 0,31 с

  • Для ordqz, этот код выполняется о 8.3x быстрее в R2020a:

    function timingOrdqz
    rng default
    A = randn(2000);
    B = randn(2000);
    [A,B,Q,Z] = qz(A,B,'complex');
    tic
    [A,B,Q,Z] = ordqz(A,B,Q,Z,'lhp');
    toc
    end

    Аппроксимированные времена выполнения:

    R2019b: 18,2 с

    R2020a: 2,2 с

Все синхронизации выполнялись на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызывания функций timingOrdschur и timingOrdqz.

sparse Функция: разреженные матрицы построения Улучшенной производительности

sparse функция показывает разреженные матрицы построения улучшенной производительности. Повышение производительности применяется ко всем синтаксисам функции и поправляется, когда созданная матрица становится больше.

Например, этот код выполняется о 4.4x быстрее в R2020a:

function timingSparse
m = 1e5;
n = 1e3;
nz = 1e7;
rng default
i = randi(m,nz,1);
j = randi(n,nz,1);
v = rand(nz,1);

tic
A = sparse(i,j,v,m,n);
toc
end

Аппроксимированные времена выполнения:

R2019b: 1,68 с

R2020a: 0,38 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц путем вызова функционального timingSparse.

interp1 Функция: Более быстрая интерполяция для небольших проблемных размеров

interp1 функция показывает улучшенную производительность для проблем с меньше, чем приблизительно 10 000 точек выборки. Улучшение применяется ко всем методам интерполяции.

Например, этот код выполняется о 2.5x быстрее в R2020a:

function timingInterp1
x = 1:100;
v = sin(x/3);
xq = 1:0.5:100;

for k = 1:10000
    vq = interp1(x,v,xq);
end
end

Аппроксимированные времена выполнения:

R2019b: 0,42 с

R2020a: 0,17 с

Код был синхронизирован на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц с помощью timeit функция:

timeit(@timingInterp1)

assert Функция: Улучшенная производительность для случаев наиболее популярного способа использования

Эффективность assert функция значительно улучшилась, делая его фактически без штрафов, чтобы использовать утверждения в приложениях обработки ошибок. Например, этот код выполняется приблизительно 300x быстрее в R2020a:

function testAssertPerformance
x = -1;
for i = 1:1e6
    assert(x == -1,'Sample error message.')
end
end

Аппроксимированные времена выполнения:

R2019b: 0,30 с

R2020a: 0,001 с

Код был синхронизирован на Windows 10, Intel Xeon CPU E5-1650 v4 система тестирования на 3,60 ГГц с помощью timeit функция:

timeit(@testAssertPerformance)

Нет никакого повышения производительности если assert вызван сообщением об ошибке, которое содержит символы преобразования форматирования, такие как используемые с MATLAB sprintf функция.

nexttile Функция: Улучшенная производительность при создании нескольких осей в мозаичном размещении графика

nexttile функция показывает улучшенную производительность при создании нескольких осей в мозаичном размещении графика. Повышение производительности поправляется как количество увеличений осей.

Например, этот код создает 100 осей в 10 10 размещение. Это выполняется о 7.2x быстрее в R2020a.

function timingTest
tiledlayout(10,10);
for i = 1:100
    nexttile;
end
end
Аппроксимированные времена выполнения:

R2019b: 3,6 с

R2020a: 0,5 с

Все синхронизации выполнялись на Windows 10, Intel Xeon W-2133 CPU система тестирования на 3,60 ГГц с помощью timeit функция:

timeit(@timingTest)

Представление кода App Designer: Улучшенная производительность при отображении и редактировании кода в App Designer

Отображение и редактирование кода в редакторе Code View App Designer быстрее в R2020a, чем в R2019b. Это влияет на действия как введение текста, создание новой строки кода, и добавления и удаления функций.

В приложениях приблизительно с 2 500 строками кода и 4 500 строками кода, видны эти типы улучшений:

  • Переключение от Design View до Code View о 1.5x быстрее в приложениях приблизительно с 2 500 строками кода, и о 1.6x быстрее в приложениях приблизительно с 4 500 строками кода.

    Аппроксимированные времена выполнения:

    Релиз~2500 строк кода~4500 строк кода
    R2019b0,63 с1,10 с
    R2020a0,42 с0,70 с

  • Введение текста в редакторе Code View о 2.8x быстрее в приложениях приблизительно с 2 500 строками кода, и о 3.9x быстрее в приложениях приблизительно с 4 500 строками кода.

    Аппроксимированные времена выполнения:

    Релиз~2500 строк кода~4500 строк кода
    R2019b3,97 с6,67 с
    R2020a1,44 с1,72 с

  • Создание новой строки кода путем нажатия Enter в редакторе Code View о 5.8x быстрее в приложениях приблизительно с 2 500 строками кода, и о 9.4x быстрее в приложениях приблизительно с 4 500 строками кода.

    Аппроксимированные времена выполнения:

    Релиз~2500 строк кода~4500 строк кода
    R2019b1,33 с3,38 с
    R2020a0,23 с0,36 с

  • Добавление и удаление функции в приложениях приблизительно с 2 500 строками кода о 1.7x и 2.9x быстрее, соответственно.

    Аппроксимированные времена выполнения:

    РелизДобавлениеУдаление
    R2019b0,12 с0,086 с
    R2020a0,07 с0,030 с

    Точно так же в приложениях приблизительно с 4 500 строками кода, добавляя и удаляя функцию о 1.8x быстрее и 2.8x быстрее, соответственно.

    Аппроксимированные времена выполнения:

    РелизДобавлениеУдаление
    R2019b0,18 с0,13 с
    R2020a0,10 с0,046 с

Эти действия были синхронизированы на Windows 10, Intel Xeon® CPU E5-1650 v3 система тестирования на 3.5 ГГц с NVIDIA QUADRо видеокарта K620.

Рендеринг графики в фигурах пользовательского интерфейса: Улучшаемая производительность рендеринга графики на больших наборах данных в фигурах пользовательского интерфейса

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

  • Объемные поверхностные диаграммы данных, больше, чем 300 300 матрица

  • Графики поля точек с 20 000 маркеров или больше

  • Изображения, где данные хранимы в CData свойство больше 1 Кбайта

В случаях как они, чем больше набор данных, тем больше повышение производительности становится. Эти примеры показывают улучшения:

  • Этот код создает объемную поверхностную диаграмму приблизительно 5.9x быстрее в R2020a:

    function timingTestSurface
    num = 10;
    tocTimes = zeros(1,num);
    fig = uifigure;
    ax = uiaxes(fig);
    drawnow
    
    for k=1:num
        tic
        s = surface(ax,peaks(500));
        s.EdgeColor = 'none';
        drawnow
        tocTimes(k) = toc;
        delete(s)
        drawnow
    end
    
    disp(['Average Time: ' num2str(mean(tocTimes))])
    
    end

    Аппроксимированные времена выполнения:

    R2019b: 3,019 с

    R2020a: 0,5102 с

  • Этот код создает график рассеивания приблизительно 1.1x быстрее в R2020a:

    function timingTestScatter
    num = 10;
    tocTimes = zeros(1,num);
    fig = uifigure;
    ax = uiaxes(fig);
    drawnow
    x = linspace(0,3*pi,20000);
    y = cos(x) + rand(1,20000);
    
    for k=1:num
        tic
        s = scatter(ax,x,y);
        drawnow
        tocTimes(k) = toc;
        delete(s)
        drawnow
    end
    
    disp(['Average Time: ' num2str(mean(tocTimes))])
    
    end

    Аппроксимированные времена выполнения:

    R2019b: 0,0952 с

    R2020a: 0,0890 с

  • Этот код отображает 650 600 3 матрицами изображений истинного цвета (1,17 Мбайта) приблизительно 1.5x быстрее в R2020a:

    function timingTestImage
    num = 10;
    tocTimes = zeros(1,num);
    C = imread('ngc6543a.jpg');
    fig = uifigure;
    ax = uiaxes(fig);
    drawnow
    
    for k=1:num
        tic
        im = image(ax,C);
        drawnow
        tocTimes(k) = toc;
        delete(im)
        drawnow
    end
    
    disp(['Average Time: ' num2str(mean(tocTimes))])
    
    end

    Аппроксимированные времена выполнения:

    R2019b: 0,0903 с

    R2020a: 0,0588 с

Этот код был синхронизирован на Windows 10, Intel Xeon® CPU E5-1650 v4 система тестирования на 3,6 ГГц с NVIDIA QUADRо видеокарта K620 путем вызова timingTestSurface, timingTestScatter, и timingTestImage функции.

Маркеры Всплывающей подсказки: Улучшаемая производительность рендеринга маркеров всплывающей подсказки в линейных графиках больших наборов данных, созданных в фигурах пользовательского интерфейса и MATLAB Online

В цифрах созданный с uifigure функционируйте и в MATLAB Online, маркеры всплывающей подсказки для линейных графиков больших наборов данных представляют быстрее и перемещаются больше постоянно в R2020a, чем в R2019b. Это улучшение видно, когда оси создаются с любым axes или uiaxes функция.

Например, на Windows 10, Intel Xeon® CPU E5-1650 v4 система тестирования на 3,6 ГГц с NVIDIA QUADRо видеокарта K620, когда вы перемещаете свою мышь быстро через сюжетные линии, созданные этим кодом, маркер всплывающей подсказки, перемещается более гладко и отслеживает ваше движение мыши более тесно в R2020a, чем в R2019b.

fig = uifigure;
ax = axes(fig);
plot(ax,magic(300));

Snippet of a plot in a UI figure that illustrates a data tip marker and a data tip.

Icon Свойство: Улучшаемая производительность рендеринга для кнопок и древовидных узлов со значками

Создание ButtonКнопка-переключатель, и TreeNode объекты со значками с помощью Icon свойство значительно быстрее. Повышение производительности становится лучше большее размер файла значка, или больше компонентов со значками, которые вы имеете в своем приложении.

Например, этот код создает кнопку со значком (размер файла 2,86 Мбайта) приблизительно 4.6x быстрее в R2020a:

function timingTestButton
r = rand(1000,1000,3);
imwrite(r,'testimage.png')
num = 10;
tocTimes = zeros(1,num);
fig = uifigure;
drawnow

for k = 1:num
    tic
    btn = uibutton(fig,'Icon','testimage.png');
    drawnow
    tocTimes(k) = toc;
end

disp(['Average Time: ' num2str(mean(tocTimes))])

end

Аппроксимированные времена выполнения:

R2019b: 0,705 с

R2020a: 0,154 с

Этот код был синхронизирован на Windows 10, Intel Xeon® CPU E5-1650 v4 система тестирования на 3,6 ГГц с NVIDIA QUADRо видеокарта K620 путем вызова timingTestButton функция.

Функциональность, удаляемая или измененная

bench Функция: проблемные размеры увеличились для задач численного расчета

Изменение поведения

Начиная в R2020a, проблемные размеры увеличились для задач численного расчета (LU, БПФ, ОДУ, и Разреженный) так, чтобы рейтинг использования машин bench результаты испытаний не во власти 2D и 3-D графических задач. В предыдущих релизах 2D и 3-D задачи берут значительно дольше, чтобы завершиться по сравнению с задачами численного расчета и поэтому способствовать непропорционально рейтингу машин.

Эта таблица показывает времена выполнения различной задачи в R2020a с помощью Windows 10, Intel Xeon W-2133 система тестирования на 3,60 ГГц. Измеренные значения описываются в секундах.

ТестНовые проблемные размерыСтарые проблемные размеры
Лютеций0.3880.068
Fft0.3120.112
ОДУ0.4800.015
Разреженный0.4880.103
2D0.3010.307
3-D0.2960.303

Инструменты разработки программного обеспечения

Зависимость Анализатор: Улучшенная навигация, фильтрация и выделение для зависимостей от проекта

В R2020a используйте новую Зависимость Анализатор, чтобы анализировать зависимости от проекта с улучшенной навигацией, фильтрацией и выделением.

На вкладке Project, в разделе Tools, нажимают Dependency Analyzer.

Запустите анализ зависимостей к:

Для примера, показывающего, как выполнить анализ удара, чтобы найти и запустить тесты, затронутые модифицированными файлами, смотрите, Выполняют Анализ Удара с Проектом (Simulink).

Изменение поведения

Рабочий процессR2019bR2020a

Исследуйте зависимости от проекта и проблемные файлы с помощью списка файлов.

При правом верхнем из представления Dependency Analysis выберите Table View.

MATLAB переключается на представление списка файлов.

В Зависимости Анализатор нажмите File List.

MATLAB открывает список файлов в том же представлении как график. Смотрите Занимаются расследованиями и проблемы Твердости.

Займитесь расследованиями, как два файла связаны и подсвечивают, где зависимость введена.

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

Выберите стрелу зависимости. В панели Properties, в разделе Details, вы видите полные пути файлов, которые вы исследуете, тип зависимости, и где зависимость введена.

Чтобы подсветить, где зависимость введена в разделе Details, щелкают по ссылке под Impacted. Смотрите Исследуют Зависимость Между Двумя Файлами.

Цветные файлы в диаграмме зависимостей типом, состоянием системы контроля версий или меткой.

На вкладке Dependency Analysis, в меню Group By, выбирают опцию, которую вы хотите.

В Зависимости Анализатор, в разделе Views, используют различные взгляды, чтобы исследовать ваши зависимости от файлов проекта. Смотрите Исследуют Диаграмму зависимостей, Представления и Фильтры.

Проверки проекта: Осуществите все проверки проекта программно

Можно теперь использовать runChecks, чтобы осуществить все проверки проекта программно.

API проекта: Получите последнюю версию Git программно

Можно теперь программно получить последнюю версию Git для каждого файла в проекте.

Для проекта под системой контроля версий Git используйте currentProject чтобы создать проект возражают из в настоящее время загруженного проекта.

proj = currentProject;
Получите последнюю версию Git номера документа проекта fileNumber.
proj.Files(fileNumber).Revision
Для примера о том, как получить последние версии для модифицированных файлов, см. Список Модифицированные Файлы в Проекте.

Среда Модульного тестирования: Добавьте пользовательские детали в TestResult объекты

Начиная в R2020a, можно добавить данные в Details свойство TestResult объекты, когда вы создаете свои плагины. Добавлять поле к Details структура, используйте append метод matlab.unittest.plugins.plugindata.ResultDetails класс. Для получения дополнительной информации смотрите Плагин Записи, чтобы Добавить Данные в Результаты испытаний.

Среда Модульного тестирования: Утверждайте, что сеанс тестирования запустился без отказа

matlab.unittest.TestResult класс имеет новый метод assertSuccess, который позволяет вам утверждать, что ни с какими провальными условиями не столкнулись во время сеанса тестирования. Например, запустите тесты, заданные в MyTestClass и утверждайте что ни один из них отказавший.

result = assertSuccess(runtests('MyTestClass'));

Среда Модульного тестирования: Запустите тесты от панели инструментов Live Editor

Можно теперь запустить тесты от Live Editor MATLAB панель инструментов. Когда вы открываете функциональный тестовый файл с .mlx расширение, панель инструментов Live Editor имеет опции к:

  • Запустите все тесты в файле.

  • Запустите тест в своей позиции курсора.

Можно настроить тестовый прогон с опциями, такими как запущение тестов параллельно (который требует Parallel Computing Toolbox), или запускающие тесты с заданным уровнем выходной детали.

Среда Модульного тестирования: Сгенерируйте протоколы испытаний включая тестовые теги

Начиная в R2020a, протоколы испытаний сгенерировали использование TestReportPlugin отображение класса тест помечает для теговых элементов тестового набора. Можно сгенерировать теговые протоколы испытаний в DOCX, HTML и форматах PDF. Для получения информации о тестовых тегах смотрите Модульные тесты Тега.

Среда тестирования приложения: Выполните жесты нажатия с различными типами выбора

Выбор мыши поддержек среды тестирования Приложения вводит press жесты, которые выполняются на фигурах пользовательского интерфейса. Чтобы задать тип выбора, используйте 'SelectionType' аргумент пары "имя-значение". Например:

f = uifigure;
testCase = matlab.uitest.TestCase.forInteractiveUse;
testCase.press(f,'SelectionType','open')

Платформа для мокинга: Добавьте события в фиктивные объекты

При создании фиктивного объекта можно добавить события в объект в дополнение к свойствам и методам. Чтобы задать события, чтобы дразнить, используйте createMock метод с 'AddedEvents' аргумент пары "имя-значение". Чтобы добавить события в макет, фиктивный объект должен вывести из класса Handle. Например:

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock(?handle,'AddedEvents',{'EventA','EventB'});

Платформа для мокинга: Задайте, когда среда ничего не должна будет делать

Можно указать, что среда модульного тестирования ничего не должна делать каждый раз, когда метод фиктивного объекта называется, или свойство фиктивного объекта установлено. Задайте это поведение с matlab.mock.actions.DoNothing класс.

Например, создайте фиктивный объект со свойством PropA. Задайте поведение, таким образом, что свойство неизменно, когда это присвоено значение 0:

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedProperties',"PropA");

import matlab.mock.actions.DoNothing
when(behavior.PropA.setToValue(0),DoNothing);

Используйте макет, чтобы присвоить ненулевое значение PropA.

mock.PropA = 5
mock = 

  Mock with properties:

    PropA: 5

Присвойте значение 0 к свойству. Из-за заданного поведения фиктивного объекта, значения PropA остается неизменным.

mock.PropA = 0
mock = 

  Mock with properties:

    PropA: 5

Функциональность, удаляемая или измененная

ProfileReport будет удален в будущем релизе

Предупреждает

ProfileReport класс будет удален в будущем релизе. Используйте CoverageReport или CoberturaFormat вместо этого. В отличие от ProfileReport, который поддерживает запускающие тесты только в последовательном режиме, эти два класса могут использоваться, чтобы сгенерировать отчеты когда тестовый прогон или в последовательном или в параллельном режиме.

Чтобы обновить ваш код, измените экземпляры ProfileReport к CoverageReport или CoberturaFormat. Эта таблица показывает пример того, как можно обновить код.

ПреждеПосле
import matlab.unittest.TestRunner
import matlab.unittest.plugins.CodeCoveragePlugin  
import matlab.unittest.plugins.codecoverage.ProfileReport

runner = TestRunner.withNoPlugins;
plugin = CodeCoveragePlugin.forFolder('myTests', ...
    'Producing',ProfileReport); 
runner.addPlugin(plugin)
import matlab.unittest.TestRunner
import matlab.unittest.plugins.CodeCoveragePlugin
import matlab.unittest.plugins.codecoverage.CoverageReport

runner = TestRunner.withNoPlugins;
plugin = CodeCoveragePlugin.forFolder('myTests', ...
    'Producing',CoverageReport); 
runner.addPlugin(plugin)

Создать Отчет Покрытия профилировщика MATLAB, не задавая ProfileReport формат, смотрите, Определяют Покрытие кода Используя Профилировщик.

Интерфейсы к внешним языкам

Интерфейс C++: тип данных MATLAB для массива C++ и std::vector

MATLAB обеспечивает интерфейс, clib.array, который переносит собственные массивы C++ и std::vector типы. Чтобы создать массив объектов C++ массивов, вызовите MATLAB clibArray функция. Чтобы преобразовать массив MATLAB в массив C++, вызвать clibConvertArray. Для получения дополнительной информации смотрите Объект MATLAB Для Массивов C++.

Для получения информации о создании интерфейса MATLAB смотрите Сборку Интерфейс MATLAB к Библиотеке C++.

Вопросы совместимости

По умолчанию, начинаясь в R2020a, MATLAB возвращает clib.array объект вместо эквивалентного массива MATLAB для типов примитивов.

Чтобы продолжить обрабатывать возвращаемый аргумент как массив MATLAB, вызвать clibgen.generateLibraryDefinition или clibgen.buildInterface с набором аргумента 'ReturnCArrays' к false.

Чтобы обновить ваш код, чтобы использовать clib массивы, обратите внимание на это, когда вы восстановите библиотеку тип MATLAB для этих изменений выходных аргументов в clib.array. libnameClassName . Кроме того, MATLAB автоматически задает больше параметров. В общем случае все еще необходимо обеспечить SHAPE информация.

Интерфейс C++: Поддерживаемые типы данных

Функциональность в совместно использованной библиотеке C++ с помощью этих типов включена в интерфейс MATLAB к библиотеке.

  • std::shared_ptr

  • Указатель и члены данных массива.

  • Двойные указатели (**) к пользовательским классам, используемым в качестве функции или типов параметра метода. Двойные указатели на типы примитивов не поддерживаются.

Эти типы эквивалентны MATLAB char:

  • wchar_t

  • char16_t

  • char32_t

Эти типы эквивалентны MATLAB string:

  • char *

  • std::wstring

  • std::u16string

  • std::u32string

Для получения дополнительной информации смотрите MATLAB к Отображению Типа данных C++. Чтобы определить, возможно ли опубликовать интерфейс к вашей библиотеке, смотрите Ограничения к Поддержке C/C++.

Интерфейс C++: Пожизненное управление объектами C++

Если библиотека создает объект, ​ затем, библиотека ответственна за выпуск памяти. Аналогично, если MATLAB создает объект, ​ затем, MATLAB ответственен за выпуск памяти. MATLAB позволяет вам управлять пожизненным управлением объектами путем определения 'ReleaseOnCall' и 'DeleteFcn' аргументы в файле определения библиотеки. Для получения дополнительной информации смотрите Пожизненное управление Объектами C++ в MATLAB.

Массив данных MATLAB: поддержка N- D упорядоченное по строкам размещение памяти

Можно создать N- D matlab::data::Array объект с упорядоченным по строкам размещением памяти. Ранее createArrayFromBuffer функционируйте создал упорядоченные по строкам массивы только в 2D. Создать matlab::data::Array объект с упорядоченным по строкам размещением памяти, набор createArrayFromBuffer аргумент memoryLayout к MemoryLayout::ROW_MAJOR. Определить размещение памяти для существующего matlab::data::Array объект, вызвать getMemoryLayout.

MATLAB Сервер COM: Укажите MATLAB без административных привилегий

Если вы не сделали, чтобы администратор считал в системе Microsoft Windows, или вы не начинаете MATLAB с административных привилегий, можно использовать comserver функционируйте, чтобы указать MATLAB как сервер COM для вашей учетной записи пользователя. Если вы сделали, чтобы администратор считал, то также можно вызвать comserver указывать MATLAB для всех пользователей. Для получения дополнительной информации смотрите Регистр MATLAB как Сервер COM. Для получения общей информации о Сервере автоматизации COM MATLAB, смотрите Вызов MATLAB как Сервер автоматизации COM.

Интерфейс Java: поддержка MATLAB (горячей точки) OpenJDK™ 8

С R2020a MATLAB поддерживает (горячая точка) OpenJDK 8 от https://adoptopenjdk.net/.

Поддержка компилятора изменяется для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла

ПоддержкаКомпиляторПлатформа

Добавленный

Studio XE 2020 параллели Intel для C, C++ и Фортрана

Windows

Добавленный

Studio XE 2020 параллели Intel для Фортрана

macOS

Добавленный

Apple XCode 11.x

macOS

Прекращенный

Studio XE 2017 параллели Intel

Windows

macOS

Чтобы гарантировать постоянную поддержку создания ваших файлов MEX, рассмотрите обновление до другого поддерживаемого компилятора. Для актуального списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы.

Функциональность, удаляемая или измененная

createSoapMessage, callSoapService, и parseSoapResponse будет удален

Предупреждает

Рассмотреть использование matlab.wsdl.createWSDLClient вместо createSoapMessage, callSoapService, и parseSoapResponse функции, чтобы связаться с веб-сервисами с помощью простого протокола доступа к объектам (SOAP). Нет никакой прямой функциональной замены для функций SOAP, но когда вы создаете интерфейс WSDL, у вас есть доступ к функциональности веб-сервиса.

createClassFromWsdl будет удален

Предупреждает

matlab.wsdl.createWSDLClient функционируйте заменяет createClassFromWsdl функция, чтобы связаться с веб-сервисами из MATLAB с помощью Языка описания веб-сервисов (WSDL). matlab.wsdl.createWSDLClient включает, чтобы указать дополнительную информацию необходимо было получить доступ к документу WSDL. Для получения дополнительной информации смотрите weboptions.

Начать использовать matlab.wsdl.createWSDLClient, выполните эти шаги.

  1. Загрузите поддерживаемые версии Java JDK и Apache программы CXF. Для получения дополнительной информации смотрите Настроенные Инструменты WSDL.

  2. Установите пути к этим программам:

    matlab.wsdl.setWSDLToolPath('JDK',jdk,'CXF',cxf)

    где jdk путь к установке JDK и cxf путь к программе CXF.

Чтобы обновить ваш код, замените вызовы createClassFromWsdl с вызовами matlab.wsdl.createWSDLClient. Например, для веб-сервиса с этим URL:

url = 'https://examplesite.com/samplewebservice';

замените этот вызов createClassFromWsdl:

createClassFromWsdl(strcat(url,'?WSDL'))

с:

matlab.wsdl.createWSDLClient(url)

Примечание

matlab.wsdl.createWSDLClient не поддерживает закодированные RPC документы WSDL.

Аппаратная поддержка

Пакет поддержки MATLAB для Ryze Беспилотники Телло: Управляйте Ryze беспилотник Телло из MATLAB и получите датчик и данные изображения

Пакет поддержки MATLAB для Ryze® Беспилотники Телло доступны от релиза R2020a вперед.

Пакет поддержки включает функции, чтобы вести Ryze Телло и Ryze беспилотники Телло EDU путем отправки команд MATLAB, чтобы управлять его направлением, скоростью и ориентацией. Можно также считать данные о навигации рейса, такие как скорость, высота, и ориентация, изображения получения и поток живое видео в MATLAB от камеры первоклассного представления (FPV) гула.

Поддержка добавляется для платы модели Raspberry Pi 4B

Можно использовать Пакет поддержки MATLAB для Оборудования Raspberry Pi с платой Raspberry Pi 4B.

Разверните применение глубокого обучения на оборудовании Raspberry Pi

Пакет поддержки MATLAB для Оборудования Raspberry Pi теперь позволяет вам развернуть применение глубокого обучения на оборудовании. Применение глубокого обучения продолжает работать на Raspberry Pi, даже если оборудование отключается от компьютера. Чтобы поддержать развертывание, функции Raspberry Pi, перечисленные в Функциях, Поддерживаемых для Развертывания (Пакет поддержки MATLAB для Оборудования Raspberry Pi), улучшены, чтобы сгенерировать Код С++. Как любая функция MATLAB, можно развернуть применение глубокого обучения с помощью этих шагов в Рабочем процессе, чтобы Развернуть функцию MATLAB на Raspberry Pi (Пакет поддержки MATLAB для Оборудования Raspberry Pi) с дополнительным шагом создания объекта настройки глубокого обучения и присвоения его к CoderConfig.DeepLearningConfig свойство Raspberry Pi перед развертыванием.

Например, чтобы развернуть применение глубокого обучения raspi_webcam_resnet.m:

  1. Создайте объект настройки для оборудования Raspberry Pi и установите язык сгенерированного кода на C++ с помощью TargetLang.

    t = targetHardware('Raspberry Pi');
    t.CoderConfig.TargetLang = 'C++';
    
  2. Создайте arm-compute объект настройки глубокого обучения и присвоение это к DeepLearningConfig свойство объекта настройки Raspberry Pi.

    dlcfg = coder.DeepLearningConfig('arm-compute')
    dlcfg.ArmArchitecture = 'armv7';
    t.CoderConfig.DeepLearningConfig = dlcfg;
    
  3. Разверните приложение на оборудовании Raspberry Pi.

    deploy(t,'raspi_webcam_resnet.m')

Считайте данные о GPS из GPS-приемника, подключенного с оборудованием Arduino

Пакет поддержки MATLAB для Оборудования Arduino позволяет вам считать данные о GPS из GPS-приемника, соединенного с оборудованием Arduino.

Используйте датчик BNO055 с Sensor Fusion and Tracking Toolbox и Navigation Toolbox, чтобы оценить ориентацию

Можно считать ускорение, скорость вращения и магнитное поле до 200 Гц в режиме несплава датчика BNO055 IMU, соединенного с оборудованием Arduino. Чтобы оценить ориентацию, можно использовать датчик с Sensor Fusion and Tracking Toolbox™ и Navigation Toolbox™.

Включите генерацию кода MATLAB функции Arduino в блоке MATLAB function для I2C и SPI

В дополнение к существующей поддержке ADC, PWM и Цифрового Чтения-записи, можно теперь сгенерировать код для функций MATLAB Arduino в блоке MATLAB function для I2C и SPI.

Функциональность изменена или удалена

i2cdev и функции spidev будут удалены в R2020a

Предупреждает

Используйте device вместо i2cdev и spidev соединяться с I2C или устройствами SPI на оборудовании Arduino.

Свойство Pins объекта сервомотора будет удалено в R2020a

Предупреждает

Используйте свойство Pin вместо Pins получить ПИН-код оборудования Arduino и Adafruit® Моторный V2 Щита для оборудования Arduino, с которым соединяется сервопривод. Для получения дополнительной информации смотрите Связь с сервоприводом на Arduino и Связь с сервоприводом на Моторном Щите Adafruit V2.

Класс arduinoio.LibraryBase будет удален в R2020a

Предупреждает

Используйте класс matlabshared.addon.LibraryBase вместо arduinoio.LibraryBase для получения библиотек дополнения Arduino.

Поддержка MATLAB Щита Adafruit Bluefruit EZ-Link и Программиста будет удалена в R2020a

Предупреждает

Поддержка Щита Adafruit Bluefruit EZ-Link и Программиста будет удалена в R2020a.

R2019b

Новые возможности, исправления ошибок, Вопросы совместимости

Среда

Live Editor Тэскс: Добавьте интерактивные задачи в live скрипты, чтобы исследовать параметры и автоматически сгенерировать код

Задачами Live Editor являются подобные приложению интерфейсы, которые могут быть добавлены к live скрипту, чтобы выполнить определенный набор операций. Используйте задачи уменьшать время разработки, ошибки, и время потратило графический вывод. Задачи автоматически генерируют код, который становится частью вашего live скрипта.

Чтобы добавить задачу в live скрипт, перейдите к вкладке Live Editor, нажмите Task и выберите из доступных задач. Также можно ввести имя задачи в блоке live скрипта кода. При печати Live Editor отображает возможные соответствия, и можно выбрать и вставить желаемую задачу.

Например, добавьте задачу Smooth Data в live скрипт, чтобы сглаживать зашумленные данные.

Для получения дополнительной информации смотрите, Добавляют Интерактивные Задачи к Live Script.

Live Editor Выход: Анимационные графики показывать изменения в данных в зависимости от времени

Можно включать анимации цикла for в Live Editor, чтобы показывать изменения в отображенных на графике данных в зависимости от времени. Например, этот код анимирует линию, растущую, когда он накапливает 2 000 точек данных в Live Editor. drawnow функционируйте отображает изменения после каждой итерации через цикл.

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,2000);

for k = 1:length(x)
    y = sin(x(k));
    addpoints(h,x(k),y);
    drawnow
end

Live Editor Выход: Настройте ширину столбцов в таблицах

Настройте ширину столбцов таблицы в Live Editor путем перетаскивания границы столбца к желаемой ширине.

Live Editor Выход: Просмотрите путем прокрутки и скопируйте данные в массивах, таких как массивы ячеек, массивы объектов и массивы структур

Можно использовать полосы прокрутки, чтобы исследовать данные в массивах ячеек, массивах объектов и массивах структур. Также можно просмотреть данные путем прокрутки в строковых массивах, числовых массивах, категориальных массивах, datetime массивы, duration массивы и calendarDuration массивы.

Чтобы скопировать отдельные значения данных в выходе, выберите значение, щелкните правой кнопкой по нему и выберите опцию Copy Selection.

Live Editor Экспорт: Настройте формат фигуры, а также формат бумаги документа, ориентацию и поля при экспорте

Можно программно изменить разрешение и формат изображений при экспорте в PDF и LaTeX в настройках использования Live Editor. Например, этот код задает формат JPEG фигуры и разрешение 1 200 DPI при экспорте в Live Editor для текущего сеанса.

s = settings;
s.matlab.editor.export.FigureFormat.TemporaryValue = 'jpeg';
s.matlab.editor.export.FigureResolution.TemporaryValue = 1200;

Также можно программно изменить формат бумаги, ориентацию и поля при экспорте в PDF, документы Microsoft Word и LaTeX в Live Editor. Например, этот код задает размер Юридического документа и альбомную ориентацию страницы при экспорте в Live Editor для текущего сеанса работы с MATLAB.

s.matlab.editor.export.pagesetup.PaperSize.TemporaryValue = 'Legal';
s.matlab.editor.export.pagesetup.Orientation.TemporaryValue = 'Landscape';

Чтобы изменить формат фигуры, формат бумаги документа, ориентация и поля для отдельного типа документа экспорта, задают установку для того отдельного типа документа. Например, этот код задает книжную ориентацию при экспорте в документы в формате PDF в Live Editor и альбомную ориентацию страницы при экспорте во все другие типы документа. Установите личностное значение вместо временной ценности для настроек, чтобы гарантировать, что значения сохраняются через сеансы работы с MATLAB.

s.matlab.editor.export.pagesetup.pdf.Orientation.PersonalValue = 'Portrait';
s.matlab.editor.export.pagesetup.Orientation.PersonalValue = 'Landscape';

Для получения дополнительной информации см. matlab.editor Настройки.

Код Live Editor: Скопируйте одну или несколько строк кода

Можно снова использовать одну или несколько строк кода в live скрипте путем дублирования их. Чтобы скопировать выбранные линии, щелкните правой кнопкой по ним и выберите Duplicate Line(s). Также можно использовать горячую клавишу Ctrl +Shift+C (или Cmd +Shift+C на macOS).

Код Live Editor: Подавите предупреждающие сообщения Анализатора кода

Чтобы подавить предупреждения Анализатора кода для одной строки в Live Editor, щелкните правой кнопкой по предупреждению и выберите Suppress Message...> On This Line. Чтобы подавить предупреждение для целого документа, выберите Suppress Message...> In This File.

Сообщения об ошибке не могут быть подавлены.

Live Editor Дебуггинг: Установите точки останова для анонимных функций

В Live Editor можно установить точки останова для анонимных функций. Чтобы добавить точку останова, кликните по серой области слева от исполняемой линии, которая содержит анонимную функцию. MATLAB добавляет точку останова в линию и отключенную точку останова слева от каждой анонимной функции в линии. Кликните по отключенной точке останова, чтобы включить его.

Live Editor Интернэйшнэлизэйшн: Добавьте неанглийский язык, такой как китайский язык, японский язык и корейские символы на Windows и macOS Платформах

Можно задать различные методы ввода для Windows и macOS систем, чтобы добавить неанглийские языки, такие как китайский язык, японский язык и корейские символы к коду и тексту в Live Editor.

Add-On Manager: Обновите MATLAB и другие установленные дополнения

Можно обновить MATLAB и другие установленные дополнения к их последней версии в Add-On Manager. Чтобы просмотреть и установить доступные обновления, на вкладке Home, нажимают Help> Check for Updates. Add-On Manager открывается. Выберите вкладку Update, чтобы просмотреть доступные обновления. Нажмите кнопку Update справа от доступного обновления, чтобы установить его. Для получения дополнительной информации смотрите, Получают и Управляют Дополнениями.

Add-On Manager: Программно управляйте дополнениями по наименованию

Включите, отключите и удалите дополнения программно по наименованию использование matlab.addons.enableAddon, matlab.addons.disableAddon, и matlab.addons.uninstall функции.

Например, предположите, что у вас есть дополнение под названием Random File Name Creator установленный в вашей системе. Отключите Random File Name Creator по наименованию.

matlab.addons.disableAddon("Random File Name Creator")
addons = matlab.addons.installedAddons
 addons =

  1×4 table

             Name                   Version     Enabled                  Identifier              
    ___________________________    _________    _______    ______________________________________

    "Random File Name Creator"     "1.0"         false     "75442144-f751-4011-bm0e-32b6fb2f1433"

Настройки: Создайте персистентные настройки для пользовательских приложений, тулбоксов, и через сеансы работы с MATLAB

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

Например, создайте группу настроек mysettings и установка MyWorkAddress в нем.

s = settings;
addGroup(s,'mysettings','Hidden',false);
addSetting(s.mysettings,'MyWorkAddress','Hidden',false);
s.mysettings.MyWorkAddress.PersonalValue = '3 Apple Hill Drive';

Можно затем использовать значение установки программно в коде.

fprintf("I work at %s.\n", s.mysettings.MyWorkAddress.ActiveValue)
I work at 3 Apple Hill Drive.
Для получения дополнительной информации смотрите, Создают Пользовательские Настройки. Чтобы создать настройки для пользовательских тулбоксов, смотрите, Создают Заводские настройки для Тулбоксов.

MATLAB Drive: Совместно используйте папки и сотрудничайте с другими

Если вам установили Коннектор MATLAB Drive и активно синхронизацию, можно совместно использовать папки в MATLAB Drive непосредственно из MATLAB. Чтобы совместно использовать папку, щелкните правой кнопкой по папке по Браузеру текущей папки и выберите Share.

Можно совместно использовать папки со ссылкой только для представления, или пригласить отдельных сотрудников и установить их полномочия редактирования. Приглашения могут быть приняты или отклонены. После того, как папка совместно используется, можно управлять полномочиями приглашенных членов, отменить приглашения или отправить дополнительные приглашения в любое время.

Для получения дополнительной информации смотрите Папки Доли в MATLAB.

Функциональность, удаляемая или измененная

Анимации Live Editor включили по умолчанию

Изменение поведения

Начиная в R2019b, анимации цикла for в Live Editor включены по умолчанию. Чтобы отключить анимации в Live Editor, установите matlab.editor.AllowFigureAnimation установка на false:

s = settings;
s.matlab.editor.AllowFigureAnimation.PersonalValue = false;

Язык и программирование

size Функция: Найдите длины нескольких измерений массива за один раз

Можно теперь использовать векторный аргумент размерности, чтобы запросить несколько длин измерения массива за один раз с size функция. Например, sz = size(A,[1 3]) возвращает вектор 1 на 2 строки, содержащий длины размерностей 1 и 3 из входного массива A.

matches Функция: Определите, равны ли входные строки

Можно определить, равны ли две входных строки. Для получения дополнительной информации смотрите matches.

Шестнадцатеричные и Двоичные числа: Задайте числа с помощью шестнадцатеричных и бинарных литералов

Можно записать числа с помощью шестнадцатеричной и двоичной записи. Например, можно записать номер 42 как A = 0x2A использование 0x префикс, чтобы указать на шестнадцатеричный формат. Для получения дополнительной информации смотрите Шестнадцатеричные и Двоичные значения.

Индексация: Используйте точечную индексацию в вызовы функции

Можно теперь использовать точечную индексацию, чтобы индексировать в результат вызова функции. MATLAB выполняет функцию и затем применяет операцию индексации точки к результату.

Например, эта функция создает структуру:

function out = createStruct(in)
out = struct("aField", in);
end

Можно вызвать эту функцию и сразу получить доступ к полю структуры, которое она создает:

createStruct(3).aField

Для получения дополнительной информации смотрите Индексацию в Результаты Вызова функции.

Системный объект авторские улучшения: валидация Свойства поддерживает и упрощенное наследование классов

Когда вы создаете Системные объекты, можно теперь использовать валидацию свойства, чтобы ограничить значения свойств. Для получения информации о валидации свойства см. Проверку значений свойств.

Методы от matlab.system.mixin.CustomIcon, matlab.system.mixin.Nondirect, matlab.system.mixin.Propagates, и matlab.system.mixin.SampleTime классы mixin теперь непосредственно включены с matlab.System. Вы больше не должны наследоваться этим классам mixin, когда авторская система возражает.

Входные аргументы функции: Объявите, что входные аргументы функции ограничивают значения

Валидация аргумента функции является способом объявить определенные ограничения на входные аргументы функции. Используя валидацию аргумента функции, можно ограничить класс, размер и другие аспекты значений входного параметра функции без написания кода в теле функции выполнять эти тесты. Для получения дополнительной информации смотрите Валидацию Аргумента функции.

namedargs2cell Функция: Преобразуйте структуру, содержащую пары "имя-значение" к массиву ячеек

Преобразуйте скалярный массив структур, который содержит данные значения имени в чередованный массив ячеек, подходящий для передачи функциям, которые принимают массивы ячеек пары "имя-значение". Эта функция обычно используется со структурой значения имени, созданной с помощью валидации аргумента функции. Для получения дополнительной информации смотрите namedargs2cell.

deletedirisfileisfolder, и what Функции: Доступ к веб-сервисам устройства хранения данных как Amazon Web Services и Устройство хранения данных Блоба Azure

Можно теперь использовать delete, dir, isfile, isfolder, и what функции, чтобы работать с удаленными файлами и папками. Чтобы получить доступ к удаленным местоположениям, необходимо задать полный путь с помощью универсального локатора ресурса (URL). Например, проверяйте, существует ли файл на заданном пути в облаке Amazon S3.

result = isfile('s3://bucketname/path_to_file/my_image.jpg')

Для получения дополнительной информации о подготовке MATLAB, чтобы получить доступ к вашему сервису оперативного хранения, смотрите работу с Удаленными данными.

Предложенные Коррекции: Правильные ошибки с двумя новыми классами

В дополнение к AppendArgumentsCorrection класс, можно теперь обеспечить предложенное исправление с помощью ReplaceIdentifierCorrection и ConvertToFunctionNotationCorrection классы.

  • Чтобы предложить заменить идентификатор в вызове функции, где исключение было выдано, используйте ReplaceIdentifierCorrection класс.

  • Чтобы предложить функциональное обозначение, эквивалентное из выражения записи через точку, от которого было выдано исключение, используйте ConvertToFunctionNotationCorrection класс.

error Функция: Обеспечьте предложенное исправление для неперехваченного исключения

Можно теперь использовать error функция, чтобы обеспечить предложенное исправление, когда вызванная исключительная ситуация не отловлена. Чтобы использовать эту функциональность, задайте первый аргумент error как объект, который предлагает коррекцию. Например, отобразите предложение для недостающих аргументов путем определения AppendArgumentsCorrection экземпляр.

aac = matlab.lang.correction.AppendArgumentsCorrection(["'InitialCondition'","0"]);
error(acc,msgID,msgText)

Функциональность, удаляемая или измененная

Программные файлы, больше, чем 128 Мбайт или с высокой сложностью, производят ошибку

Изменение поведения

Начиная в R2019b, программные файлы, больше, чем приблизительно 128 Мбайт, не открываются или запускаются. Для файлов, которые содержат только код (например, .m и .p файлы), этот предел влияет на размер файла. Для файлов, которые хранят больше, чем только код (например, .mlx файлы), это влияет на размер кода. Рабочие операторы, больше, чем 128 Мбайт, или непосредственно в Командном окне или использовании eval функция, также не поддерживается. Кроме того, код с высоким уровнем сложности, таким как большое количество глубоко вложенного if операторы, не поддерживается.

Большой программный файл или размеры оператора могли привести к непредсказуемому поведению и часто происходили при использовании значительных частей кода (например, более чем 500 линий), чтобы задать переменные с постоянными значениями. Чтобы уменьшить размер программных файлов, рассмотрите определение переменных и сохранение их в файле данных (например, MAT-файл или .csv файл). Затем можно загрузить переменные вместо того, чтобы выполнить код, чтобы сгенерировать их. Эта корректировка не только уменьшает размер файла вашей программы, но также и может увеличить эффективность.

Изменитесь в правилах для порядка приоритета функций

Изменение поведения

Начиная в R2019b, MATLAB изменяет правила для разрешения имени, влияя на порядок приоритета переменных, вложенных функций, локальных функций и внешних функций. Эти правила описаны в Порядке приоритета функций. Для получения информации об изменениях и советах для обновления вашего кода, см. Код Обновления для Изменений R2019b в Порядке приоритета функций.

  • Идентификаторы не могут использоваться для двух целей в функции.

  • Идентификаторы без явных объявлений не могут быть обработаны как переменные.

  • Переменные не могут быть неявно совместно использованы родительскими и вложенными функциями.

  • Изменитесь в приоритете составного разрешения имени.

  • Анонимные функции могут включать разрешенные и неразрешенные идентификаторы.

Поведение import функция изменилась.

  • Изменитесь в приоритете основанного на подстановочном знаке импорта

  • Полностью определенные функции импорта не могут иметь того же имени как вложенные функции

  • Полностью определенная тень импорта внешние определения осциллографа того же имени.

  • Обработка ошибок, когда импорт не найден.

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

Некоторые аргументы повторения для repmat функционируйте теперь производят ошибки

Изменение поведения

Запуск в R2019b, некоторых repmat синтаксисы, включающие нескалярные или пустые аргументы повторения, произведут ошибку. Следующая таблица описывает, как обновить эти синтаксисы.

ОшибкиИспользуйте вместо этого
repmat(A,r1,r2), где r1 и r2 векторы-строкиrepmat(A,[r1 r2])
repmat(A,empt), где empt пустой массивrepmat(A,1)
repmat(A,empt1,empt2), где empt1 и empt2 пустые массивыrepmat(A,1)
repmat(A,n,empt), где n целое число и empt пустой массивrepmat(A,[n 1])

Нецелое число или комплексная размерность заказывают аргументы для permute функционируйте теперь производят ошибки

Изменение поведения

Начиная в R2019b, permute синтаксис permute(A,dimorder) производит ошибку когда dimorder нецелое число или комплексное число. Вместо этого задайте действительные, положительные целочисленные значения для dimorder.

Сравните скалярные перечисления в массивах ячеек к тексту с помощью strcmp функция

Изменение поведения

strcmp теперь возвращает логический 0 или 1 для сравнений скалярных перечислений в массивах ячеек к тексту. Ранее strcmp всегда возвращаемый 0.

Например, сравните matlab.lang.OnOffSwitchState перечисление в ячейке и векторе символов.

enum = matlab.lang.OnOffSwitchState.off;
TF = strcmp({enum},'off')
TF =

  logical

   1

В предыдущих релизах, этом использовании сравнения strcmp возвращенный 0.

Можно также сравнить {enum} к массиву ячеек из символьных векторов или к массиву строк.

TF = strcmp({enum},{'on','off'})
TF =

  1×2 logical array

   0   1

Однако сравнение со строками в массивах ячеек, таких как strcmp({enum},{"off"}), всегда возвращает 0. Массивы ячеек строковых массивов не рекомендуются.

Поведение nargin для функций та валидация аргумента функции использования

Изменение поведения

Если входной параметр имени функции к nargin относится к функции, которая использует валидацию аргумента функции, затем возвращенное значение является количеством позиционных параметров на функциональной линии. Это изменение в поведении может влиять на код, который использует nargin с функциями, которые впоследствии обновляются, чтобы использовать функцию валидации аргумента функции. Для получения дополнительной информации смотрите nargin в Валидации Аргумента.

Синтаксис точечной круглой скобки не будет позволен в вызовах функции валидации

Изменение поведения в будущем релизе

Вызывание функций валидации от properties или arguments блоки с помощью синтаксиса точечной круглой скобки в имени функции будут запрещены в будущем релизе. Например, этот синтаксис будет недопустим:

classdef MyClass 
    properties 
        A {a.('b').mustBePositive} % Dot-paren not allowed
    end 
end 

Функция валидации должна относиться к подтверждаемому свойству

Изменение поведения в будущем релизе

Функции валидации свойства, которые не относятся к подтверждаемому свойству, будут запрещены в будущем релизе. Например, в этом определении класса, входе к mustBePositive функцией является постоянный 10 вместо значения свойства.

classdef MyClass 
    properties 
        A {mustBePositive(10)} % Property not validated
    end 
end

Чтобы подтвердить значение свойства, или передайте имя свойства явным образом или позвольте MATLAB передавать свойство неявно:

classdef MyClass 
    properties 
        A {mustBePositive}
    end 
end

Указатели на функцию не будут позволены как входные параметры функциям валидации свойства

Изменение поведения в будущем релизе

Передающие указатели на функцию к функциям валидации свойства будут запрещены в будущем релизе. Если вы задаете функцию валидации, которая должна использовать указатель на функцию, затем задать указатель на функцию в теле функции валидации.

Например, это будет ошибка передать указатель на функцию @sin к customValFcn функция:

classdef MyClass 
    properties 
       A {customValFcn(A,@sin)} % Will result in error
    end 
end 

function customValFcn(A,fh) 
    % function body 
end 

Вместо этого задайте указатель на функцию в пользовательской функции валидации.

classdef MyClass 
    properties 
       A {customValFcn(A)}
    end 
end 

function customValFcn(A) 
    fh = @sin;
    % function body 
end 

Анализ данных

Live Editor Тэскс: В интерактивном режиме предварительно обработайте данные и сгенерируйте код

Используйте задачи Live Editor для объединяющих таблиц; smoothdata; обработайте выбросы и недостающие данные; удалите тренды; и найдите локальные минимумы, локальные максимумы и точки перехода. В интерактивном режиме исследуйте эффекты своих изменений с помощью сгенерированных графиков. Задачи также автоматически генерируют код, который становится частью вашего live скрипта.

MATLAB теперь предлагает семь задач предварительной обработки данных:

Чтобы открыть задачи в Live Editor, используйте меню Task на вкладке Live Editor. Для получения дополнительной информации смотрите, Добавляют Интерактивные Задачи к Live Script.

groupfilter Функция: Отфильтруйте данные в таблице, расписании или матрице группой

groupfilter функция позволяет вам фильтровать строки данных группой согласно заданному методу фильтрации. Например, учитывая таблицу T, группа переменной Var1 и возвратите только строки T у чьей группы есть больше чем один элемент.

>> T = table(["A" "B" "C" "A" "A"]',[1 2 3 4 5]')
T =

  5×2 table

    Var1    Var2
    ____    ____

    "A"      1  
    "B"      2  
    "C"      3  
    "A"      4  
    "A"      5  
>> G = groupfilter(T,'Var1',@(x) numel(x) > 1)
G =

  3×2 table

    Var1    Var2
    ____    ____

    "A"      1  
    "A"      4  
    "A"      5  

datetime Тип данных: Обнаружьте форматы с долями секунды при преобразовании текста, который представляет даты и времена

datetime функция позволяет вам преобразовывать текст, который включает доли секунды, не задавая 'InputFormat' аргумент пары "имя-значение". Например, учитывая текст, представляющий дату и время, которая включает миллисекунды, преобразуйте текст в a datetime значение.

d = datetime('2019-07-01 12:34:56.123')
d = 

  datetime

   01-Jul-2019 12:34:56

В то время как доли секунды обнаруживаются, формат по умолчанию для отображения значений не включает доли секунды. Чтобы отобразить доли секунды, добавьте '.SSS' к Format свойство d.

d.Format = 'dd-MMM-uuuu HH:mm:ss.SSS'
d = 

  datetime

   01-Jul-2019 12:34:56.123

Для получения дополнительной информации смотрите Format свойство datetime.

table и timetable Типы данных: Имена переменных могут иметь любые символы, включая символы non-ASCII и пробелы

Начиная в R2019b, имена переменных в таблицах и расписаниях могут иметь любые символы Unicode, включая символы non-ASCII и пробелы. Ранее таблица и имена переменных расписания должны были быть допустимыми идентификаторами MATLAB. Для получения дополнительной информации смотрите tableрасписание, или Доступ к данным в таблицах.

Эта функция имеет несколько последствий.

  • В то время как таблица и имена переменных расписания могут иметь любые символы, table2struct и summary функции действительно изменяют имена переменных, которые недопустимы, когда вы используете их в качестве имен полей структуры. Имена полей в структуре должны быть допустимыми идентификаторами MATLAB.

    Чтобы определить, является ли имя допустимым идентификатором, используйте isvarname функция.

  • Можно получить доступ к любой переменной таблицы или расписания, использующей запись через точку. Однако, если имя переменной не является допустимым идентификатором MATLAB, то необходимо задать имя как выражение в круглых скобках после точки. Выражение может быть именем переменной, заключенным в кавычки или функцию, которая возвращает вектор символов или строковый скаляр.

    Например, если таблица T имеет переменные под названием 'Age' и 'Blood Pressure', затем можно использовать запись через точку, чтобы получить доступ к переменным. Можно использовать оба из следующих синтаксисов, чтобы получить доступ к Age потому что это - допустимый идентификатор MATLAB.

    T.Age
    T.('Age')
    

    Однако получить доступ к переменной под названием 'Blood Pressure' с помощью записи через точку необходимо использовать круглые скобки, потому что имя не является допустимым идентификатором MATLAB.

    T.('Blood Pressure')
    
Вопросы совместимости

  • Начиная в R2019b, таблица и имена переменных расписания с продвижением или конечными пробельными символами не изменяются.

    В предыдущих релизах начальные и конечные пробельные символы были удалены из имен переменных, когда вы задали их использующий 'VariableNames' аргумент пары "имя-значение", или присвоенный их VariableNames свойство.

    Это изменение в поведении влияет array2table, array2timetable, cell2table, table, и timetable функции и VariableNames свойство таблиц и расписаний. Чтобы удалить такие символы вручную, сначала используйте strtrim функция на именах, затем присвойте их как имена переменных к таблице или расписанию.

  • Начиная в R2019b, MATLAB повышает ошибку, если вы присваиваете имя табличной переменной, которое совпадает с именем размерности или именем размерности, которое совпадает с именем переменной. В предыдущих релизах MATLAB повысил предупреждение и изменил имена, таким образом, они были уникальны.

tall Массивы: Работайте с длинными массивами с большим количеством функций, включая setdiff, xcorr, и outerjoin

Функции, перечисленные в этой таблице теперь, поддерживают длинные массивы как входные параметры. Для полного списка поддерживаемых функций введите methods tall. Для получения дополнительной информации об использовании и ограничениях, смотрите раздел Extended Capabilities в нижней части каждой страницы с описанием.

Кроме того, некоторые функции удалили ограничения с длинными массивами.

Функции

Добавленная поддержка

min и max

min и max теперь полностью поддержите длинные массивы.

Ранее вы не могли задать несколько выходных параметров.

conv, conv2, и convn

conv, conv2, и convn теперь поддержите больше смесей длинных массивов и массивов в оперативной памяти во входных параметрах.

Ранее второй вход B не мог быть длинный массив.

innerjoin

innerjoin теперь полностью длинные массивы поддержек.

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

intersect

intersect теперь позволяет обоим входным параметрам быть длинными массивами.

Ранее одни из входных параметров требовались, чтобы быть массивом в оперативной памяти.

tall Массивы: Постарайтесь не заканчиваться память из-за временных копий данных

Если вы преобразуете массив в оперативной памяти A в длинный массив с помощью T = tall(A), затем MATLAB старается не создавать копии базовых данных, когда вы выполняете последующие операции на T, который ослабляет требования к памяти многих операций. Этот подход полезен, если, например, вы имеете 8 Гбайт RAM и выполняете операцию на массиве на 5 Гбайт, который обычно требует временной копии данных.

Ранее синтаксис tall(A) для массива в оперативной памяти A не постарался не создавать временные копии данных и был связан теми же требованиями к памяти как массивы в оперативной памяти.

Импорт и экспорт данных

detectImportOptions Функция: Задайте тип настроек импорта для текстовых файлов фиксированной ширины или разграниченного

При обнаружении настроек импорта для текстового файла, detectImportOptions функция теперь позволяет вам задать тип текстового файла как 'delimitedtext' или 'fixedwidth'. Для получения дополнительной информации смотрите detectImportOptions.

table и timetable Типы данных: Считайте и запишите табличные данные, который имеет имена переменных, содержащие любые символы, включая символы non-ASCII и пробелы

Начиная в R2019b, можно считать и записать таблицы и расписания, содержащие имена переменных, которые имеют любые символы Unicode, включая символы non-ASCII и пробелы. Ранее таблица и имена переменных расписания должны были быть допустимыми идентификаторами MATLAB.

Чтобы считать табличные данные, который содержит произвольные имена переменных, такие как имена переменных с пробелами и символами non-ASCII, устанавливает PreserveVariableNames параметр к true.

T = readtable('myFile.xls','PreserveVariableNames',true)
Следующее чтение поддержки функций и запись табличных данных, содержащих имена переменных, которые содержат любые символы:

Если вы сохранили таблицу или расписание к MAT-файлу (использующий save функция), затем MAT-файл содержит и исходные и модифицированные имена для любых переменных, имена которых не являются допустимыми идентификаторами. Если вы загружаете MAT-файл в R2019b или позже (использующий load функция), затем таблица или расписание используют исходные имена переменных. Если вы загружаете его в R2019a или ранее, то таблица или расписание используют имена измененной переменной.

Для получения дополнительной информации смотрите tableрасписание, или Доступ к данным в таблицах.

sheetnames Функция: Получите имена рабочих листов из файла электронной таблицы

Используйте sheetnames функция, чтобы получить имена всех рабочих листов из файла электронной таблицы. Для получения дополнительной информации смотрите sheetnames.

VideoReader Объект: Считайте системы координат в видео с помощью индекса системы координат или время

VideoReader поддержка объектов взаимозаменяемый доступ к видеокадрам с помощью индекса системы координат или время. Поэтому можно теперь использовать read и readFrame взаимозаменяемо.

Ранее вы могли использовать только один тип доступа за один раз. Попытка считать системы координат взаимозаменяемо с помощью read и readFrame приведший к ошибке. Например, следующий код привел бы к ошибке.

vidObj = VideoReader('xylophone.mp4');
frame20 = read(vidObj,20); % read using frame index
frame21 = readFrame(vidObj) % read next frame using CurrentTime
Cannot call 'READFRAME' method after querying the
NUMBEROFFRAMES property or using the READ method.
Recreate the object to use 'READFRAME' method.

Однако начиная в R2019b, можно использовать все методы и свойства VideoReader возразите взаимозаменяемо между доступом к системам координат с помощью индексов системы координат и получив доступ к системам координат, использующим время. Например, создайте VideoReader возразите и считайте 20-ю систему координат с помощью read метод. Затем используйте readFrame метод, чтобы получить 21-ю систему координат.

vidObj = VideoReader('xylophone.mp4');
frame20 = read(vidObj,20); 
frame21 = readFrame(vidObj);
whos frame20 frame21
  Name           Size                Bytes  Class    Attributes

  frame20      240x320x3            230400  uint8              
  frame21      240x320x3            230400  uint8     
Для получения дополнительной информации смотрите VideoReader.

VideoReader Объект: Улучшенная производительность в сгенерированном коде с упорядоченным по строкам размещением

Для больших видеофайлов, сгенерированного кода для VideoReader объект с упорядоченным по строкам параметром макета показывает улучшенную производительность. Например, timingTest функция показывает о 4x ускорение на H.264 видеофайл с разрешением 1280x720.

function [t, data] = timingTest(fileName)
  vidObj = VideoReader(fileName);
  data = cell(20,1);
  tic;
  for cnt = 1:20
    data{cnt} = readFrame(vidObj);
  end
  t = toc;
end

Сгенерируйте код для timingTest функция с упорядоченным по строкам флагом. codegen команда создает функциональный timingTest_mex с C и сгенерированным кодом C++.

codegen timingTest -args {coder.typeof('', [1 inf])} -rowmajor

Для H.264 видеофайл с разрешением 1280x720, времена выполнения:

R2019a: 4,04 с

R2019b: 0,95 с

Код был синхронизирован на Windows 10, Intel Xeon® CPU W-2133 система тестирования на 3,6 ГГц путем вызова функционального timingTest_mex. Чем выше разрешение видеофайла (измеренный форматом кадра), тем больше повышение производительности становится.

Инструмент для импорта: Сгенерируйте более простой код при импорте из текстовых файлов фиксированной ширины

Import Tool теперь последовательно действует через другие платформы и генерирует код, который легко считать при импорте текстовых файлов фиксированной ширины. Например, сгенерированный код содержит readtable и FixedWidthImportOptions, который делает код более простым считать и использовать. Для получения дополнительной информации смотрите, что Данные о Текстовом файле Чтения Используют Import Tool.

save Функция: Сохраните переменные рабочей области в версию 7 MAT-файла без сжатия

Ранее save команда, при сохранении переменных рабочей области в MAT-файл версии 7, использовала сжатие в качестве значения по умолчанию (и единственное) опция. Теперь save поддерживает '-nocompression' опция для версии 7 MAT-файла.

По умолчанию, сохранение переменной myVariable сжимает данные и сохраняет его в MAT-файл версии 7. -v7 флаг является дополнительным.

save myFile.mat myVariable –v7

Сохранить myVariable без сжатия используйте:

save myFile.mat myVariable –v7 –nocompression
Для получения дополнительной информации смотрите save.

xmlread Функция: Предотвратите чтение XML-файлов, которые содержат объявления DOCTYPE

Можно предотвратить XML-файлы чтения, которые содержат объявления DOCTYPE путем установки 'AllowDoctype' пара "имя-значение" к false. Для получения дополнительной информации смотрите xmlread страница с описанием.

imread Функция: Поддержки читая заданные изображения из PGM, PBM или форматов файлов PPM

imread функционируйте поддержки, читая заданные изображения из мультиизображения PGM, PBM или форматы файлов PPM. Для получения дополнительной информации смотрите imread страница с описанием.

Научные Библиотеки Формата файла: Библиотека CFITSIO обновила, чтобы присвоить версию 3.450

Библиотека CFITSIO обновляется, чтобы присвоить версию 3.450.

Научные Библиотеки Формата файла: Библиотека LibTIFF обновила, чтобы присвоить версию 4.0.10

Библиотека LibTIFF обновляется, чтобы присвоить версию 4.0.10.

УСПОКОИТЕЛЬНЫЕ Функции: Поддержка аутентификации

Функции веб-сервисов RESTful webread, websave, и webwrite также поддержите Дайджест-аутентификацию. Для получения дополнительной информации смотрите weboptions 'Username' аргумент.

Для списка поддерживаемой аутентификации для УСПОКОИТЕЛЬНЫХ функций смотрите Аутентификацию сервера.

Вопросы совместимости

УСПОКОИТЕЛЬНЫЕ функции webread, webwrite, и websave теперь придерживайтесь более тесно Инженерной группы по развитию интернета (IETF®) документ RFC 7617 для Стандартной аутентификации. В результате MATLAB может ошибка, когда УСПОКОИТЕЛЬНАЯ функция связывается с сервером, который заранее ожидает Стандартную аутентификацию, но не возвращает 401 ответ проблемы.

Чтобы обновить ваш код, смотрите, Как я преимущественно включаю заголовок Стандартной аутентификации при работе с "webread" / ​ "webwrite" ​ / "websave" в MATLAB R2019b?

tcpclientчтение, и write Функции: Генерация кода C и C++

tcpclient, read, и write функции поддерживают генерацию C и Кода С++ с помощью MATLAB Coder.

Bluetooth Низкий энергетический Интерфейс: Поддержка сканирования и взаимодействия с периферийными устройствами

Можно использовать команды MATLAB, чтобы выполнить следующие операции:

  • Отсканируйте для соседних периферийных устройств и представления рекламные данные с помощью blelist функция

  • Свяжите с периферийными устройствами с помощью ble функция

  • Характеристики устройства доступа и дескрипторы с помощью characteristic и descriptor функции

  • Считайте данные о характеристике устройства и данные о дескрипторе с помощью read функция

  • Запишите в характеристики устройства и дескрипторы с помощью write функция

  • Включите и отключите уведомление или индикацию для характеристики с помощью subscribe и unsubscribe функции

Для получения дополнительной информации смотрите Bluetooth Низкая энергетическая Коммуникация.

Устройства последовательного порта: Новые функции и свойства

Интерфейс последовательного порта имеет новый набор функций и свойств. Существующая функциональность все еще запускается, но новые имена функций и свойства рекомендуются. Новый интерфейс имеет улучшенную производительность.

Начните с новым интерфейсом путем просмотра списка всех последовательных портов на использующем компьютеры serialportlist.

list = serialportlist
list = 

  1×4 string array

    "COM1"    "COM3"    "COM4"    "COM8"

Затем создайте a serialport возразите, запишите данные к устройству и читайте из него.

s = serialport("COM8",115200);
write(s,1:5,"uint32")
read(s,5,"uint32");

Для получения дополнительной информации смотрите Устройства Последовательного порта.

Вопросы совместимости

Для получения дополнительной информации об обновлении вашего кода, чтобы использовать рекомендуемую функциональность, смотрите Переход Ваш Код к serialport Интерфейс.

Функциональность, удаляемая или измененная

Import Tool не поддерживает импортирующие текстовые данные как массив ячеек из символьных векторов

Изменение поведения

Ранее Import Tool предоставлял возможность импортировать текстовые данные как массив ячеек из символьных векторов. Начиная в R2019b, Import Tool не поддерживает это. Вместо этого Import Tool приложение импортирует текстовые данные как строковые массивы.

Чтобы сохранить предыдущее поведение, преобразуйте данные об импортируемом тексте в массив ячеек из символьных векторов с помощью cellstr функция.

UseExcel параметр для электронных таблиц

Изменение поведения

Настройка по умолчанию для UseExcel в системах Windows с Excel® установленный false.

UseExcel параметр появляется на этих функциях электронной таблицы: readtable, readtimetable, readmatrix, readcell, readvars, writetable, writetimetable, writematrix, и writecell.

Чтобы сохранить предыдущее поведение, обновите вызовы этих функций, чтобы задать UseExcel параметр как true. Например, для readtable функция, обновите свой код можно следующим образом.

T = readtable(filename,'UseExcel',true)

xlsfinfo функция не рекомендуется

Все еще работает

xlsfinfo функция не рекомендуется. Используйте функцию sheetnames вместо этого. Нет никаких планов удалить xlsfinfo в это время. sheetnames функция имеет эти преимущества перед xlsfinfo функция:

  • Поддержка имен листа, содержащих символы non-ASCII

  • Лучше кросс-платформенная поддержка и эффективность

  • Способность работать с удаленно хранимыми данными

Эта таблица показывает типичное использование xlsfinfo и как обновить ваш код, чтобы использовать sheetnames.

Не рекомендуемыйРекомендуемый
[~,sheets] = xlsfinfo('myData.xls')
sheets = sheetnames('myData.xls')

NumberOfFrames свойство VideoReader объект не рекомендуется

Все еще работает

NumberOfFrames свойство VideoReader объект не рекомендуется. Используйте свойство NumFrames вместо этого. Обновите все экземпляры NumberOfFrames с NumFrames. Нет никаких планов удалить NumberOfFrames параметр в это время.

Массив VideoReader объекты не поддерживаются

Создание массива VideoReader объекты не поддерживаются. Обновите свой код, чтобы удалить массивы VideoReader объекты. Например, следующий код возвращает ошибку.

v = VideoReader('xylophone.mp4'); 
v(end+1) = VideoReader('xylophone.mpg'); 
Array formation and parentheses-style indexing 
with objects of class 'VideoReader' is not allowed.  
Use objects of class 'VideoReader' only as scalars 
or use a cell array.

Tiff объект для записи определенных файлов TIFF

Запись изображений TIFF с определенными комбинациями светоизмерительной настройки и количества отсчетов на пиксель не рекомендуется. Значение SamplesPerPixel должно быть равно сумме Photometric цветовые каналы и ExtraSamples заданный в Tiff объект. Для получения дополнительной информации смотрите Tiff и write.

imwrite функция не поддерживает запись индексируемых файлов PNG, которые имеют недостаточные записи палитры

Начиная в R2019b, для того, чтобы записать индексированные файлы PNG, необходимо задать палитру с достаточными записями, чтобы интерпретировать изображение правильно. Для получения дополнительной информации смотрите imwrite страница с описанием.

imfinfo функция возвращает информацию о повторных изображениях от PGM, PBM и файлов PPM

Изменение поведения

Ранее для PGM, PBM и форматов файлов PPM, imfinfo функция возвратила один 1- 1 структура. Структура содержала информацию только о первом изображении, даже если файл содержал повторные изображения в нем.

Начиная в R2019b, если PGM, PBM и файлы PPM имеют повторные изображения, то imfinfo возвращает массив структур, содержащий информацию о повторных изображениях в файле. Например, для файла PGM, содержащего M изображения, imfinfo возвращает 1- M массив структур, содержащий информацию, соответствующую всем изображениям в файле.

Эта таблица показывает, как обновить ваш код, чтобы получить Height (или любое другое свойство) первого изображения мультиизображения PBM, PGM или файл PPM.

Не рекомендуемыйРекомендуемый
info = imfinfo('MultiImgFile.pgm')
info.Height 
info = imfinfo('MultiImgFile.pgm')
info(1).Height

Для получения дополнительной информации смотрите imfinfo.

web Функция

Изменение поведения

web функция теперь открывает внешние сайты с помощью системного браузера по умолчанию. Ранее web функционируйте открытые внешние сайты с помощью браузера MATLAB. Используя систему браузер рекомендуется при открытии внешних сайтов.

Чтобы использовать браузер MATLAB в качестве браузера по умолчанию для внешних сайтов, перейдите к вкладке Home, и в разделе Environment, нажмите Preferences. Выберите MATLAB> Web и в разделе System Web browser, очистите опцию Use system web browser when opening links to external sites (recommended).

Веб-сервисы используют системные сертификаты

Изменение поведения

Значение по умолчанию для CertificateFilename опция в weboptions функционируйте и matlab.net.http.HTTPOptions.CertificateFilename свойством является 'default'. Если значением является 'default', затем MATLAB использует системные сертификаты.

Ранее по умолчанию MATLAB использовал файл сертификата PEM, который поставляется с MATLAB.

seriallist функция не рекомендуется

Все еще работает

seriallist не рекомендуется. Использование serialportlist вместо этого. Смотрите Переход Ваш Код к serialport Интерфейс для получения дополнительной информации об использовании рекомендуемой функциональности.

serial функция не рекомендуется

Все еще работает

serial и его свойства объектов не рекомендуются. Использование serialport и его свойства вместо этого.

В этом примере показано, как связать с устройством последовательного порта с помощью рекомендуемой функциональности.

ФункциональностьИспользуйте вместо этого
s = serial("COM1");
s.BaudRate = 115200;
fopen(s)
s = serialport("COM1",115200);

Смотрите переход ваш код к serialport Интерфейс для получения дополнительной информации об использовании рекомендуемой функциональности.

Математика

makima Функция: Выполните измененного Акима кубическая интерполяция Эрмита

makima функция выполняет измененного Акима кубическая интерполяция Эрмита, похожая на 'makima' метод интерполяции griddedInterpolant, interp1, interp2, interp3, и interpn. Модифицированный Акима кубический метод интерполяции Эрмита имеет эти свойства:

  • Это - C1 непрерывный.

  • Это производит меньше волнистостей, чем spline, но результат не сглаживается так настойчиво как pchip.

  • В отличие от этого, pchip, это поддерживает массивы N-D.

  • В отличие от этого, spline, это не производит перерегулирования.

Графика

Стройте диаграмму Контейнерного класса: Разработайте свой собственный класс графиков

Задайте свой собственный класс графиков путем создания подкласса matlab.graphics.chartcontainer.ChartContainer базовый класс. Если вы пишете скрипты или функции для создания специализированной визуализации и совместно используете их с другими, рассматриваете создание реализации класса. Создание класса позволяет:

  • Обеспечьте удобный интерфейс для своих пользователей — Когда пользователи хотят настроить аспект вашего графика, они могут установить свойство вместо того, чтобы иметь необходимость изменить и повторно выполнить ваш графический код. Пользователи могут изменить свойства в командной строке или смотреть их в Property Inspector.

  • Инкапсулируйте алгоритмы и примитивные графические объекты — Вы реализуете методы, которые выполняют вычисления и управляют базовыми графическими объектами. Организация вашего кода таким образом позволяет вам скрывать детали реализации от пользователей.

ChartContainer базовый класс поддерживает графики, которые имеют сингл Оси декартовой системы координат. Когда вы задаете график, который выводит из этого базового класса, экземпляры вашего графика являются членами иерархии графического объекта. В результате ваши графики совместимы со многими аспектами графической системы. Например, gca и findobj функции могут возвратить экземпляры вашего графика. Для получения дополнительной информации см. Обзор Разработки Графика.

tiledlayout и nexttile Функции: Создайте конфигурируемые размещения графиков в фигуре

Используйте tiledlayout и nexttile функции, чтобы разметить плиточное размещение нескольких графиков в фигуре. Параметры конфигурации включают:

  • Управление интервалом между графиками и вокруг ребер размещения

  • Опция для разделяемого заголовка наверху размещения

  • Опции для разделяемого x - и y - подписи по осям

  • Опция для отображения разделяемой панели инструментов осей

  • Опция, чтобы управлять, имеет ли плиточное размещение фиксированный размер или переменный размер, который может обратное течение

colororder Функция: Управляйте цветами в графиках

Управляйте цветовой схемой своих графиков путем вызова colororder функция. Когда вы изменяете цветовую схему с помощью этой функции, изменение оказывает мгновенное влияние на существующие графики. Если вы вызываете colororder функция для пустой фигуры, новая цветовая схема сохраняется на рисунке, когда вы вызываете функцию построения графика.

Столбчатые диаграммы: Создайте столбчатые диаграммы с улучшениями для укладки и определения местоположения советов панелей

bar и barh функции имеют эти улучшения:

  • Сложенные группы панелей отображают отрицательные панели, ниже нуля, вместо того, чтобы перекрыть панели.

  • Можно определить местоположение советов панелей путем получения значений XEndPoints и YEndPoints свойства на Bar объект. Местоположения полезны для добавления меток к советам панелей.

  • Обе функции теперь принимают больше комбинаций скаляра, вектора и матричных входных параметров.

Всплывающие подсказки: Создайте и настройте всплывающие подсказки

Создайте всплывающие подсказки на объектах с DataTipTemplate свойство с помощью datatip функция. Можно создать всплывающую подсказку путем определения точных координат точки данных, аппроксимированных координат точки данных или индекса точки данных в нанесенном на график наборе данных. Создайте всплывающую подсказку между нанесенными на график точками данных путем установки SnapToDataVertex свойство к 'off'.

В Live Editor сгенерируйте код для в интерактивном режиме прикрепленных всплывающих подсказок путем нажатия кнопки Update Code. Этот сгенерированный код воссоздает всплывающую подсказку в следующий раз, когда вы запускаете live скрипт.

Настройте содержимое всплывающих подсказок на дополнительных графиках, включая Contourзакрашенная фигураquiverпанель, и Image объекты с DataTipTemplate свойство. Для получения дополнительной информации смотрите, Создают Пользовательские всплывающие подсказки.

dataTipInteraction Функция: Прикрепите всплывающие подсказки в позиции курсора

Создайте взаимодействия со всплывающими подсказками, которые прикрепляют всплывающие подсказки к позиции курсора, а не самую близкую точку данных, путем установки SnapToDataVertex свойство взаимодействия со всплывающими подсказками возражает против 'off':

Для больше о настройке взаимодействий осей, смотрите Интерактивность Диаграммы управления.

Панель инструментов осей: Сохраните или скопируйте содержимое осей как изображение

Чтобы сохранить или скопировать содержимое набора осей или мозаичного размещения графика, наведите на значок Export и выберите опцию в выпадающем меню. Доступные параметры зависят от содержимого осей.

  • Сохраните в изображение или файл PDF путем выбора Save As .

  • Скопируйте в буфер обмена как изображение PNG путем выбора Copy as Image .

  • Скопируйте в буфер обмена как векторное изображение для PDFs путем выбора Copy as Vector .

Когда вы создаете пользовательскую панель инструментов с помощью axtoolbar функционируйте, включайте выпадающее меню с сохранением и скопируйте опции путем определения buttons аргумент как 'export'.

parallelplot Функция: Изменение масштаба, панорамирование и перестроение координируют в интерактивном режиме

Параллельный график координат имеет новые опции для взаимодействия с данными:

  • Изменение масштаба — Использование колесико прокрутки, чтобы масштабировать.

  • Панорамирование — Перетаскивание график панорамировать.

  • Перестройте координаты — Перетаскивание координатная метка в виде галочки, чтобы переместить соответствующую координатную линейку в различное положение.

Инспектор свойств: Обновите значения метки деления на оси и метки с помощью данных о буфере обмена

Можно обновить значения деления и метки, которые появляются вдоль оси путем копирования и вставки данных (например, из электронной таблицы) в инспектор свойств. Чтобы вставить скопированные данные, откройте инспектор свойств и перейдите к свойству меток деления, которое вы хотите отредактировать. Затем откройте выпадающее меню путем нажатия и выберите Paste.

Интерполяция изображения: Выберите метод интерполяции для отображения изображений

Изображения на дисплее с помощью или самой близкой соседней или билинейной интерполяции. MATLAB использует интерполяцию, когда это отображает масштабированную или вращаемую версию изображения.

Когда вы вызываете image, imagesc, или imshow функции, задайте Interpolation пара "имя-значение" свойства с любым 'nearest' или 'bilinear' как значение. Все изображения используют 'nearest' по умолчанию.

Например, этот код отображает изображение с помощью imagesc функция с билинейной интерполяцией:

I = imread('peppers.png');
imagesc(I,'Interpolation','bilinear')

legend Функция: Создайте неограниченные записи легенды и задайте категориальные массивы

legend функция имеет эти улучшения:

  • Легенда может отобразить неограниченное количество записей, когда вы задаете subset аргумент. В предыдущих релизах легенды отображают до 50 записей только.

  • Можно задать значения метки как категориальные массивы в дополнение к массивам ячеек и строковым массивам.

pcolor Функция: Задайте категориальный, datetime и данные о длительности

pcolor функция теперь принимает категориальный, datetime, и duration массивы для X и Y.

Географические Графики: Отобразите данные на графике на высоком уровне изменения масштаба basemaps

Отобразите данные на графике на высоком уровне изменения масштаба basemaps размещенный Esri®. Для получения дополнительной информации о Esri, см. https://www.esri.com. Задайте основную карту с помощью geobasemap функционируйте или путем установки Basemap свойство GeographicAxes или GeographicBubbleChart объект.

'streets-light'

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

Размещенный Esri.

'satellite'

Полная глобальная основная карта состоит из спутниковых снимков с высоким разрешением.

Размещенный Esri.

'streets-dark'

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

Размещенный Esri.

'topographic'

Карта общего назначения с моделированием, чтобы изобразить топографические функции.

Размещенный Esri.

'streets'

План действий общего назначения, который подчеркивает точное, четкое моделирование дорог и транзитных сетей.

Размещенный Esri.

  

Географические Графики: Создайте графики с улучшенным внешним видом основной карты

Запущение в R2018b, basemaps в рамках географических графиков имеет улучшенный общий вид на уровнях изменения масштаба нецелого числа. Например, ZoomLevel свойство этих географических пузырьковых диаграмм 4.995.

Географические Оси: Отобразите использование анимаций comet или animatedline

Отобразите анимации на географическом использовании осей comet или animatedline. Для получения дополнительной информации смотрите Линейные анимации.

Географические пузырьковые диаграммы: Создайте графики с улучшенным размещением

Географические пузырьковые диаграммы имеют улучшенный общий вид, включая использование пробела, равного по ширине цифрам и размещение меток деления и меток в виде галочки.

Когда вы изменяете размер географической пузырьковой диаграммы, размеры шрифта и располагающий с интервалами между элементами в графике автоматически настраивают, чтобы обеспечить самое лучшее представление для нового размера. Изменение FontSize свойство географической пузырьковой диаграммы отключает автоматическое изменение размеров шрифтов.

Функциональность, удаляемая или измененная

Изменение ColorOrder или LineStyleOrder на осях сразу влияет на существующие графики

Изменение поведения

Если вы изменяете оси ColorOrder или LineStyleOrder свойства после графического вывода в оси, цвета и стили линии в вашем графике сразу изменяются. В предыдущих релизах новые цвета и стили линии влияют только на последующие графики, не существующие графики.

Например, этот код строит два графика прежде, чем изменить значение ColorOrder свойство. В R2019a и предыдущих релизах, не изменяются цвета этих двух линий, когда вы изменяете ColorOrder свойство.

plot([0 1],[1 0])
hold on
plot([0 1],[2 0])
ax = gca;
ax.ColorOrder = [1 0 0; 0 1 0];

Начиная в R2019b, линии изменяются сразу, чтобы использовать новый ColorOrder или LineStyleOrder значения свойств. Если вы хотите предотвратить изменение, установите любого оси LineStyleOrderIndex или ColorOrderIndex свойство к любому значению (такому как его текущее значение) прежде, чем изменить ColorOrder или LineStyleOrder свойство.

plot([0 1],[1 0])
hold on
plot([0 1],[2 0])
ax = gca;

% Preserve R2019a behavior
ax.ColorOrderIndex = ax.ColorOrderIndex;

ax.ColorOrder = [1 0 0; 0 1 0];

Схема Indexing ColorOrder и LineStyleOrder может изменить цвета графика и стили линии

Изменение поведения

В R2019a и предыдущих релизах, графики, которые визуализируют несколько наборов данных, используют схему индексации выбрать цвета и стили линии. Схема индексации обычно работает хорошо, но она не позволяет вам изменять цвета и стили линии в графике после того, как вы создаете ее.

При запуске в R2019b существует новая схема индексации, которая позволяет вам изменить цвета и стили линии существующих графиков. MATLAB всегда применяет эту схему индексации к объектам, таким как Lineрассеяние, и Bar. В результате ваш код может произвести графики что цикл через цвета и стили линии по-другому, чем в предыдущих релизах.

Один пример нового поведения - когда вы создаете линию с определенным цветом, и затем создаете другую линию, не задавая цвет. В следующем коде, первом вызове plot функция включает третий аргумент, который задает цвет как красный. Второй вызов plot функция не задает цвет. В R2019a первая линия является красной, и вторая линия является синей.

% Plot two lines
hold on
plot([0 1],[1 0],'red')
plot([0 1],[2 0])

Если при запуске предыдущий код в R2019b, первая линия является красной, и вторая линия является оранжевой. Чтобы сохранить исходный цвет, установите любого оси LineStyleOrderIndex или ColorOrderIndex свойство к любому значению (такому как его текущее значение) прежде, чем построить в оси.

% Preserve R2019a behavior
ax = gca;
ax.ColorOrderIndex = ax.ColorOrderIndex;

% Plot two lines
hold on
plot([0 1],[1 0],'red')
plot([0 1],[2 0])

Предопределенные палитры имеют 256 цветов по умолчанию

Изменение поведения

Предопределенные палитры, такой как parula, jet, и winter, теперь имейте 256 цветов по умолчанию.

Если у вас есть код, который зависит от предопределенной палитры, имеющей 64 цвета, задайте количество цветов, когда вы устанавливаете палитру для фигуры, осей или графика. Например, colormap(parula(64)) устанавливает палитру фигуры на с 64 цветами parula палитра.

В качестве альтернативы можно изменить палитру по умолчанию для всех фигур в сеансе работы с MATLAB:

set(groot,'defaultFigureColormap',parula(64))

Круговые диаграммы отображают нулевые значения

Изменение поведения

Когда вы вызываете pie или pie3 функционируйте и задайте данные, которые содержат нулевые значения, ваша круговая диаграмма показывает нулевые значения и соответствующие метки. Если вы вызываете любую функцию с выходным аргументом, выход включает объекты для каждого нулевого значения.

В предыдущих релизах функции не используют нулевые значения из графика и не возвращают объектов, которые соответствуют тем значениям. Если вы не хотите отображать нулевые значения или возвращать соответствующие объекты, то удалите нули из своих данных.

Используя функцию оси, чтобы установить пределы осей больше не изменяет представление поля графика

Изменение поведения

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

  • Когда поле графика находится в 2D представлении, и вы передаете вектор с шестью элементами axis функция. Чтобы сохранить поведение предыдущих релизов, вызовите view(3) после вызова axis функция.

  • Когда поле графика находится в 3-D представлении, и вы передаете четырехэлементный вектор axis функция. Чтобы сохранить поведение предыдущих релизов, вызовите view(2) после вызова axis функция.

Основной картой по умолчанию для географических графиков является теперь 'streets-light'

Изменение поведения

Начиная в R2019b, основной карте по умолчанию для GeographicAxes и GeographicBubbleChart объектами является 'streets-light'. 'streets-light' основная карта требует доступа в Интернет.

В предыдущих релизах основной картой по умолчанию был 'darkwater'. Эта основная карта включена с MATLAB и не требует доступа в Интернет.

Если у вас нет надежного доступа к Интернету, можно использовать 'darkwater' основная карта или загрузка выбор basemaps на вашу локальную систему с помощью Add-On Explorer. Для получения дополнительной информации см. Доступ к базовым картам в MATLAB.

Включение режимов взаимодействия отключает взаимодействия мыши для географических пузырьковых диаграмм

Изменение поведения

Запуск в R2019b, включение режима взаимодействия на рисунке отключают взаимодействия мыши для географических пузырьковых диаграмм на рисунке. Например, если вы включаете режим изменения масштаба с помощью zoom функция, затем вы больше не можете использовать мышь, чтобы масштабировать или панорамировать в рамках географической пузырьковой диаграммы. Другие режимы взаимодействия включают панорамирование, вращаются, Data Cursor, или рисуют режим кистью.

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

Географические пузырьковые диаграммы отображают метки в виде галочки, использующие секунды

Изменение поведения

Начиная в R2019b, формат метки в виде галочки для географических пузырьковых диаграмм является степенями, минуты и десятичные секунды (DMS), а не степени и десятичные минуты (DM).

Создание приложений

uistyle Функция: Создайте стили для строк, столбцов или ячеек в компоненте таблицы UI

Можно создать различные стили для определенных строк, столбцов или ячеек в компоненте таблицы UI использование uistyle и addStyle функции. Например, можно сделать ячейки в определенном столбце красными с курсивным шрифтом. Чтобы получить стили, которые были применены, получите StyleConfigurations свойство Table объект. Чтобы удалить стиль из компонента таблицы UI, используйте removeStyle функция.

Стили ячеек в компонентах таблицы UI поддерживаются только в приложениях App Designer и в цифрах созданный с uifigure функция.

uigridlayout Функция: Сконфигурируйте строки и столбцы сетки, чтобы настроить автоматически, чтобы соответствовать компонентам

Размещения сетки могут автоматически настроить к минимальному размеру, должен был соответствовать компонентам, которые находятся в нем. Чтобы сконфигурировать строки и столбцы сетки, чтобы соответствовать компонентам динамически, задайте 'fit' как значение RowHeight или ColumnWidth свойства для определенных строк и столбцов в GridLayout объект. Например, установка 'RowHeight' к {'fit',50,'1x'} указывает, что высота первой строки плотно прилегающим образом вокруг компонентов, вторая строка фиксируется на уровне 50 пикселей, и третья строка использует остающееся вертикальное пространство.

Эта функция особенно полезна, когда вы создаете строки и столбцы основанных на тексте компонентов потому что, когда вы используете 'fit', вы не должны знать как высокий или широкий делать строки и столбцы менеджера по размещению сетки. 'fit' опция для высоты строки и ширины столбца также полезна, если ваше приложение переводится в другой язык или работает на других платформах.

uigridlayout функция поддерживается только в приложениях App Designer и в цифрах созданный с uifigure функция.

uitable Функция: таблица Sort компоненты пользовательского интерфейса в интерактивном режиме при использовании логического, числового, строки или массивов ячеек

Можно в интерактивном режиме отсортировать компоненты таблицы UI когда Data свойство содержит логические данные, числовые данные, данные о строке или данные о массиве ячеек. К компонентам таблицы UI вида, которые содержат эти типы данных, установите ColumnSortable свойство Table объект. Чтобы обновить визуализацию, на основе того, как компонент таблицы UI был отсортирован, также используйте DisplayData свойство и DisplayDataChangedFcn функция обратного вызова.

Поддающиеся сортировке столбцы в компонентах таблицы UI поддерживаются только в приложениях App Designer и в цифрах созданный с uifigure функция.

uihtml Функция: Встройте HTML, JavaScript или содержимое файла CSS в приложениях и на холсте App Designer

Встроить HTML, JavaScript®, или CSS в вашем приложении, вызовите uihtml функционируйте или, в App Designer, перетащите HTML компонент пользовательского интерфейса от Component Library на холст.

HTML компоненты пользовательского интерфейса поддерживается только в приложениях App Designer и в цифрах созданный с uifigure функция.

Дизайнер приложений: Преобразуйте компоненты в фигуре пользовательского интерфейса или контейнере от основанного на пикселе расположения до менеджера по размещению сетки

Можно преобразовать дочерние элементы фигуры пользовательского интерфейса или контейнера от основанного на пикселе расположения до того, чтобы быть расположенным менеджером по размещению сетки. Чтобы использовать менеджера по размещению сетки, где вы ранее использовали основанное на пикселе расположение, перетащите размещение сетки от Component Library на холст или на существующий контейнерный компонент, как панель. В качестве альтернативы щелкните правой кнопкой по холсту или контейнерному компоненту и выберите Apply Grid Layout.

Менеджер по размещению сетки автоматически создает строки и столбцы, чтобы вместить компоненты и сохраняет их аппроксимированные положения. Когда вы добавляете размещение сетки, иерархия компонентов обновляется в Component Browser.

Дизайнер приложений: Преобразуйте существующее приложение в автопереплавное приложение

Чтобы преобразовать существующее приложение в автопереплавное приложение, расширьте Convert выпадающее меню во вкладке Canvas и выберите 2-Panel App with Auto-Reflow или 3-Panel App with Auto-Reflow.

Автопереплавные приложения автоматически изменяют размер и обратное течение, на основе содержимого на размере экрана, экранируют ориентацию и платформу. Используйте приложения с автообратным течением, если вы ожидаете запускать или совместно использовать ваши приложения через несколько сред или настольных разрешений. Для получения дополнительной информации см. Приложения с Автообратным течением.

Дизайнер приложений: Подавите предупреждающие сообщения Анализатора кода

В редакторе Code View App Designer можно подавить предупреждения Анализатора кода для одной строки или для файла целого приложения. Чтобы отключить предупреждения, щелкните правой кнопкой по предупреждению и, из контекстного меню, выберите:

  • Suppress Message...> On This Line

  • Suppress Message...> In This File

Например,

Сообщения об ошибке, однако, не могут быть подавлены.

Дизайнер приложений: Открытие App Designer от панели инструментов MATLAB

Чтобы открыть App Designer от панели инструментов MATLAB, нажмите кнопку Design App во вкладке Apps.

Среда тестирования приложения: Выполните жесты на изображениях пользовательского интерфейса и полярных осях

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

  • Выполните наводят и нажимают жесты в тестах на полярных осях.

  • Выполните жесты нажатия в тестах на изображениях пользовательского интерфейса.

Например, выполните интерактивные жесты на PolarAxes объект pax и Image объект im.

fig = uifigure;
pax = polaraxes(fig,'ThetaAxisUnits','radians');
im = uiimage(fig,'ImageSource','membrane.png','Position',[10 10 100 100]);
testCase = matlab.uitest.TestCase.forInteractiveUse;
testCase.hover(pax);
testCase.press(pax,[pi/2 0.5]);
testCase.press(im);
Для получения дополнительной информации смотрите hover и press страницы с описанием.

Функциональность, удаляемая или измененная

GUIDE будет удален в будущем релизе

Все еще работает

Среда GUIDE и guide функция будет удалена в будущем релизе.

После того, как GUIDE удален, существующие приложения GUIDE продолжат запускаться в MATLAB, но не будут доступным для редактирования использованием среды перетаскивания в GUIDE. Чтобы продолжить редактировать существующее приложение GUIDE и справку обеспечивают ее совместимость с будущими релизами MATLAB, используют одну из предложенных перечисленных в таблице стратегий миграции.

Разработка приложенийСтратегия миграцииКак мигрировать
Частая или продолжающаяся разработкаПереместите свое приложение на App DesignerИспользуйте GUIDE для инструмента миграции App Designer для MATLAB на mathworks.com
Минимальное или случайное редактированиеЭкспортируйте свое приложение в один файл MATLAB, чтобы управлять вашим размещением приложения и кодом с помощью функций MATLABОткройте приложение в GUIDE и выберите File> Export to MATLAB-file

App Designer является средой разработки рекомендуемого приложения в MATLAB. Чтобы создать новые приложения, используйте App Designer и appdesigner функцию вместо этого.

Чтобы узнать больше о мигрирующих приложениях, см. Стратегии Миграции GUIDE.

Для получения дополнительной информации о App Designer, перейдите к Сравнению GUIDE и App Designer на mathworks.com.

javacomponent функция и JavaFrame свойство будет удалено в будущем релизе

Предупреждает

javacomponent функционируйте и JavaFrame полагайте, что свойство не документировано и будет удалено в будущем релизе. Обновите свой код, чтобы использовать зарегистрированные альтернативы. Для списка зарегистрированной функциональности, которую можно использовать вместо этого, см. Рекомендации для Java и Пользователей ActiveX на mathworks.com.

actxcontrolactxcontrollist, и actxcontrolselect функции будут удалены в будущем релизе

Предупреждает

actxcontrol, actxcontrollist, и actxcontrolselect функции будут удалены в будущем релизе. Обновите свой код, чтобы использовать альтернативную функциональность. Для списка функциональности, которую можно использовать вместо этого, см. Рекомендации для Java и Пользователей ActiveX на mathworks.com.

Поддержка выполнения развернутых веб-приложений в Internet Explorer была удалена

Ошибки

Поддержка выполнения развернутых веб-приложений в Internet Explorer® был удален. Используйте текущие версии (рекомендуемого) Google Chrome™, Safari, Firefox®, или Microsoft Edge® запускать развернутые веб-приложения вместо этого.

Для получения дополнительной информации о поддерживаемых браузерах веб-приложения смотрите Поддерживаемые Браузеры и Несовместимости Платформы (MATLAB Compiler).

Выравнивание текста и размер шрифта изменились в заголовках строки и столбце таблицы

Изменение поведения

Начиная в R2019b, компоненты таблицы UI, созданные в App Designer или в цифрах созданный с uifigure функция имеет различный общий вид, когда они содержат определенные виды данных. Столбец и заголовки строки компонентов таблицы UI, которые содержат числовой, логический, строка или данные о массиве ячеек, имеют эти визуальные различия по сравнению с предыдущими релизами:

  • Размер шрифта меньшего размера

  • Заголовки столбцов выравниваются по левому краю вместо выровненного центром

  • Заголовки строки выравниваются центром вместо выровненного по левому краю

Например, этот код, который создает компонент таблицы UI со смешанным рендерингом данных о массиве ячеек по-другому в R2019b, чем он, делает в R2019a.

fig = uifigure;
 
d = {'Male',52,true;'Male',40,true;'Female',25,false};

uit = uitable(fig,'Data',d);
uit.ColumnName = {'Gender','Age','Authorized'};

Начиная в R2019a, те же визуальные различия применяются к столбцу и заголовкам строки в компонентах таблицы UI, которые содержат табличные данные массива. Например, этот код, который использует табличный массив, чтобы отобразить datetime значения в компоненте таблицы UI представляют по-другому в R2019a, чем он делает в R2018b.

fig = uifigure;

dates = datetime([2016,01,17; 2017,01,20],'Format','MM/dd/uuuu');
m = [10; 9];
tdata = table(dates,m,'VariableNames',{'Date','Measurement'});

uit = uitable(fig,'Data',tdata);
uit.RowName = 'numbered';

Производительность

table Индексация Типа данных: Улучшенная производительность при присвоении элементов путем индексирования в большие табличные переменные

table преобразованное в нижний индекс присвоение в большие табличные переменные значительно быстрее. Эффективность является теперь чрезвычайно постоянной с числом элементов в каждой табличной переменной.

  • Например, когда вы используете точечную индексацию, чтобы присвоить элементы переменной с 106 элементы, эффективность в R2019b приблизительно 40x времена быстрее, как показано ниже.

    function timingTest()
        t = table(zeros(1e6,1));
        indices = randi(1e6,1,10000);
    
        tic;
        for i = indices
            t.Var1(i) = rand;
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019a: 47,83 с

    R2019b: 1,20 с

  • Точно так же присвоение с помощью фигурных скобок быстрее. Например, когда вы присваиваете в три табличных переменные с 106 элементы, эффективность в R2019b приблизительно 18x быстрее.

    function timingTest()
        t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1));
        indices = randi(1e6,1,10000);
    
        tic;
        for i = indices
            t{i,:} = rand;
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019a: 156,39 с

    R2019b: 8,51 с

Код был синхронизирован в системе Windows 10 с Intel на 3,6 ГГц Xeon W-2133 CPU путем вызова каждой версии timingTest функция.

Чем больше табличные переменные, тем больше повышение производительности становится. Однако повышение производительности происходит только, когда вы делаете преобразованные в нижний индекс присвоения таблицы в функции. Нет никакого улучшения при индексировании в таблицы в командной строке, или в блоках try-catch.

datetimeдлительность, и calendarDuration Индексация Типа данных: Улучшенная производительность при присвоении элементов путем индексирования в большие массивы

datetimeдлительность, и calendarDuration преобразованное в нижний индекс присвоение в большие массивы значительно быстрее. Эффективность является теперь чрезвычайно постоянной с числом элементов в массиве.

  • Например, когда вы присваиваете в datetime массив с 106 элементы, эффективность в R2019b приблизительно 106x времена быстрее, как показано ниже.

    function timingTest()
        dt = datetime + hours(1:1e6);
        indices = randi(1e6,1,10000);
        rhs = NaT;
    
        tic;
        for i = indices
            dt(i) = rhs;
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019a: 49,00 с

    R2019b: 0,46 с

  • Точно так же присвоение в duration массив быстрее. Например, когда вы присваиваете в duration массив с 106 элементы, эффективность в R2019b приблизительно 106x времена быстрее.

    function timingTest()
        d = hours(1:1e6);
        indices = randi(1e6,1,10000);
    
        tic;
        for i = indices
            d(i) = NaN;
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019a: 48,66 с

    R2019b: 0,46 с

Код был синхронизирован в системе Windows 10 с Intel на 3,6 ГГц Xeon W-2133 CPU путем вызова каждой версии timingTest функция.

Чем больше массивы, тем больше повышение производительности становится. Однако повышение производительности происходит только, когда вы делаете преобразованные в нижний индекс присвоения в функции. Нет никакого улучшения при индексировании в datetimeдлительность, и calendarDuration массивы в командной строке, или в блоках try-catch.

datetime Индексация Типа данных: Улучшенная производительность при обращении или присвоении до настоящего времени и компоненты времени datetime массивы

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

  • Например, когда вы обращаетесь к компоненту datetime массив с 104 элементы, эффективность в R2019b приблизительно 25x времена быстрее, как показано ниже.

    function timingTest()
        dt = datetime + hours(1:1e4);
        indices = randi(1e4,1,10000);
    
        tic;
        for i = indices
            x = dt.Hour(i);
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019a: 12,97 с

    R2019b: 0,52 с

  • Точно так же присвоение на компонент datetime массив быстрее. Например, когда вы присваиваете на компонент datetime массив с 104 элементы, эффективность в R2019b приблизительно 32x времена быстрее.

    function timingTest()
        dt = datetime + days(1:1e4);
        indices = randi(1e4,1,10000);
    
        tic;
        for i = indices
            dt.Hour(i) = 0;
        end
        toc
    end
    

    Аппроксимированные времена выполнения:

    R2019a: 22,51 с

    R2019b: 0,70 с

Код был синхронизирован в системе Windows 10 с Intel на 3,6 ГГц Xeon W-2133 CPU путем вызова каждой версии timingTest функция.

Чем больше массивы, тем больше повышение производительности становится. Однако повышение производительности происходит только, когда вы делаете преобразованные в нижний индекс присвоения в функции. Нет никакого улучшения при индексировании в datetime массивы в командной строке, или в блоках try-catch.

uitable Функция: Более быстрая эффективность, когда тип данных является числовым, логическим, или массив ячеек из символьных векторов

Таблицы, составленные с uitable функция имеет лучшую эффективность рендеринга и более высокую частоту кадров при прокрутке, когда они содержат определенные виды данных. Улучшения происходят когда Data свойство содержит числовые данные, логические данные или массив ячеек из символьных векторов. Таблица должна быть порождена фигуре, созданной с uifigure функция или один из ее дочерних контейнеров.

Таблицы, содержащие эти типы данных, представляют до 40% быстрее, и эффективность взаимодействия (как прокрутка) до 75% быстрее. Например, в системе тестирования, этот код, который использует числовые данные, представляет таблицу быстрее в R2019b, чем в предыдущих релизах.

rows = 10000;
columns = 25;
ndata = randi(30,[rows columns]);
fig = uifigure;
uit = uitable(fig,'Data',ndata);

unzip и gunzip Функции: Улучшенная производительность при извлечении содержимого zip-файлов и zip-файлов GNU

Извлечение содержимого zip-файлов и zip-файлов GNU с помощью unzip и gunzip значительно быстрее при извлечении файлов на сетевых дисках.

  • Например, когда вы извлекаете содержимое zip-файла в качестве примера myarchive.zip с размером файла 53 Мбайт на сетевом диске эффективность в R2019b приблизительно 1.5x быстрее, как показано ниже.

    function timingTest()
        unzip myarchive.zip;     
    end

    Аппроксимированные времена выполнения:

    R2019a: 3,06 с

    R2019b: 2,03 с

  • Точно так же, когда вы извлекаете содержимое zip-файла GNU в качестве примера myotherarchive.gz с размером файла 27 Мбайт на сетевом диске эффективность в R2019b приблизительно 2x быстрее, как показано ниже.

    function timingTest()
        gunzip myotherarchive.gz;     
    end

    Аппроксимированные времена выполнения:

    R2019a: 37,22 с

    R2019b: 18,22 с

Код был синхронизирован в системе тестирования Windows 10 с Intel на 3,6 ГГц Xeon CPU E5-1650 CPU через Гигабитное соединение Ethernet с помощью timeit функция:

timeit(@timingTest)

Результаты варьируются в зависимости от нескольких факторов, включая скорость соединения и кэшируются ли сетевые файлы в системе.

Инструменты разработки программного обеспечения

Среда Модульного тестирования: Запустите тесты параллельно со своими пользовательскими плагинами

Можно теперь запустить модульные тесты параллельно, когда вы расширяете TestRunner экземпляр с вашими пользовательскими плагинами. Для получения дополнительной информации смотрите Запущенные Тесты параллельно с Пользовательским Плагином.

Среда Модульного тестирования: Подтвердите количество в ограничениях строки

ContainsSubstring, IsSubstringOf, и Matches ограничения могут теперь считать строковый скаляр или вектор символов для данного числа раз. Чтобы задать количество случаев, используйте 'WithCount' параметр. Например:

import matlab.unittest.constraints.*
testCase = matlab.unittest.TestCase.forInteractiveUse;
testCase.verifyThat('This is long',ContainsSubstring('is','WithCount',2))
Verification passed.
testCase.verifyThat('Gain Main Rain',Matches('[GMR]ain','WithCount',2))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    Matches failed.
    --> Actual count does not match expected count.
        
        Actual Count:
             3
        Expected Count:
             2
    
    Actual char:
        Gain Main Rain
    Regular Expression:
        [GMR]ain

Среда для тестирования производительности: Визуально сравните два TimeResult массивы

matlab.perftest.TimeResult класс имеет новый метод comparisonPlot, который позволяет вам визуально сравнить результаты измерения времени двух наборов равного размера тестов производительности.

Среда тестирования приложения: Выполните жесты на полярных осях и изображениях

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

Проекты: Удалите файлы определения проекта

Можно теперь использовать matlab.project.deleteProject, чтобы легко остановить управление папка с проектом и удалить все связанные файлы определения проекта, не влияя на остающиеся файлы.

Сравните Ветви Git: Покажите различия и сохраните копии

В проекте под системой контроля версий Git можно теперь выбрать любые две версии и исследовать различия в файле. Можно показать различия между двумя ветвями разработки и сохранить копию выбранного файла на любой ветви. Смотрите Сравнивают Ветви.

Функциональность, удаляемая или измененная

Векторы символов более не эквивалентны перечислениям в проверках

Изменение поведения

При запуске в R2019b фактические и ожидаемые значения в проверках должны иметь тот же тип, когда ожидаемое значение является перечислением класса Handle. Например, рассмотрите этот класс перечисления:

classdef MyClass < handle
    enumeration
        X
        Y
    end
end

Следующий тест перестал работать потому что 'X' не представляет перечисление MyClass.X:

testCase = matlab.unittest.TestCase.forInteractiveUse;
testCase.verifySameHandle('X',MyClass.X)
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifySameHandle failed.
    --> Values do not refer to the same handle.
    --> Value must be a handle object. It is of class "char".
    --> Classes do not match.
        	Actual Value class           : [char]
        	Expected Handle Object class : [MyClass]
    
    Actual char:
        X
    Expected Handle Object:
      MyClass enumeration
    
        X 

В предыдущих релизах тест передал, потому что MATLAB обработал 'X' как представление ожидаемого перечисления. Это изменение поведения влияет на тесты с помощью IsSameHandleAs класс ограничения или следующие методы проверки: verifySameHandleassumeSameHandleassertSameHandlefatalAssertSameHandleverifyNotSameHandleassumeNotSameHandleassertNotSameHandle, и fatalAssertNotSameHandle.

Интерфейсы к внешним языкам

Интерфейс C++: Опции для публикации C++ соединяют интерфейсом с библиотекой

MATLAB автоматически переименовывает классы, функции, перечисления и функции членства с именами C++, которые недопустимы в MATLAB с помощью matlab.lang.makeValidName функция. Например, MATLAB преобразует имя класса _myclass в библиотеке mylib к x_myclass. С R2019b можно изменить x_myclass в файле определения библиотеки. Например, можно поменять имя на myclass. Когда вы будете использовать класс в MATLAB, введите clib.mylib.myclass. Переименование пространств имен C++ или пакета MATLAB не поддерживается.

Чтобы задать форму для объектных типов указателей как скаляр для всех функций в библиотеке, используйте аргумент пары "имя-значение" 'TreatObjectPointerAsScalar' при создании библиотеки. Задавать форму для const char * типы указателей как скаляр для всех функций, используйте 'TreatConstCharPointerAsCString' аргумент.

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

Для получения дополнительной информации смотрите clibgen.generateLibraryDefinition и clibgen.buildInterface.

Интерфейс C++: nullptr поддерживаемый как выходной аргумент

С R2019b интерфейс C++ возвращает специфичные для типа пустые значения для nullptr. Протестировать на основной nullptr типы, вызовите isempty функция. Протестировать на nullptr объекты, вызовите clibIsNull функция.

Интерфейс C++: только для чтения (const) поддержка объектов

С R2019b интерфейс C++ обрабатывает объекты только для чтения как C++. Чтобы определить, только ли объект C++ для чтения, вызовите clibIsReadOnly функция.

Интерфейс Java: поддержка версии 1.8.0_202 JRE

Интерфейс MATLAB на Java поддерживает версию 1.8.0_202 JRE, обеспечивая повышенную безопасность, и доступ к новому Java показывает ​​​.

Выполнение из процесса MEX-функций C++: Настройте переменные окружения

Чтобы настроить среду хост-процесса MEX, который вы используете, чтобы выполнить MEX-функцию, вызвать mexhost с "EnvironmentVariables" аргумент.

Веб-сервисы HTTP: поддержка Аутентификации сервера NTLM и протоколов Kerberos

Интерфейс HTTP также поддерживает эти протоколы для аутентификации сервера.

  • Windows — NTLM и Kerberos

  • Linux и macOS — NTLM

Для получения дополнительной информации смотрите Аутентификацию сервера.

Веб-сервисы HTTP: опции Тайм-аута

MATLAB имеет новые опции тайм-аута для передачи сообщений с помощью интерфейса HTTP.

  • DataTimeout — тайм-аут в секундах между пакетами в сети

  • KeepAliveTimeout — сколько времени связь с сервером остается открытой после начального подключения, позволяя нескольким последовательным сообщениям быть отправленной по той же связи

  • ResponseTimeout — секунды, чтобы ожидать заголовка ответа с сервера после отправки последнего пакета запроса

Для получения дополнительной информации смотрите matlab.net.http.HTTPOptions.

Интерфейс Python: Выполните функции Python из процесса

Запустите функции Python в процессах, которые являются отдельными от процесса MATLAB. Для получения дополнительной информации смотрите Выполнение Из процесса Функциональности Python. Используйте этот режим, чтобы вызвать функции в сторонних библиотеках, которые не совместимы с MATLAB.

Интерфейс Python и Engine: поддержка Версии 3.5 прекращена

Поддержка версии 3.5 Python прекращена.

Вопросы совместимости

Чтобы гарантировать постоянную поддержку ваших приложений, обновите до поддерживаемой версии Python, версии 3.6 или 3.7.

Perl 5.30.1: поддержка MATLAB на Windows

С Обновления R2019b 3, MATLAB на Windows поставляется с версией 5.30.1 Perl.

  • Смотрите www.perl.org для стандартного распределения perl, источника perl и информации об использовании perl.

  • См. https://metacpan.org/pod/HTML:: Синтаксический анализатор для стандартного распределения HTML:: Синтаксический анализатор, исходный код и информация об использовании HTML:: Синтаксический анализатор.

  • См. https://metacpan.org/pod/HTML:: Tagset для стандартного распределения HTML:Tagset, исходного кода и информации об использовании HTML:Tagset.

Вопросы совместимости

Если вы используете perl команда на платформах Windows, смотрите www.perl.org для получения информации об использовании этой версии языка программирования Perl.

Поддержка компилятора изменяется для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла

ПоддержкаКомпиляторПлатформа

Добавленный

Microsoft Visual Studio 2019 для C и C++

Windows

Прекращенный

Studio XE 2015 параллели Intel и XE 2016 для Фортрана

Windows

macOS

Чтобы гарантировать постоянную поддержку создания ваших файлов MEX, рассмотрите обновление до другого поддерживаемого компилятора. Для актуального списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы.

Функциональность, удаляемая или измененная

Интерфейс C++ обрабатывает объекты только для чтения как C++

Изменение поведения

read-only object C++ является объектом, объявленным с const C++ атрибут. Вы можете получить такой объект как выход функции или как элемент данных класса. Запущение в R2019b, ​ интерфейс C++ для MATLAB соблюдает const введите спецификатор, гарантирующий, что поведение MATLAB совпадает с поведением C++ const- квалифицированные типы. MATLAB выдает ошибку, если вы используете объект только для чтения можно следующим образом:

  • Передача объекта к функциям с входными параметрами неconst

  • Вызов метода неconst на объекте

  • Изменение свойств объектов

Чтобы протестировать, если объект только для чтения, вызовите clibIsReadOnly функция.

В R2019a, ​ интерфейс игнорирует const введите спецификатор, позволив пользователю MATLAB использовать const объекты неправильно.

Интерфейс C++ возвращает специфичный для типа empty значения для nullptr

Изменение поведения

Запущение в R2019b, ​ интерфейс C++ возвращает специфичный для типа empty значения для функций, которые возвращают nullptr. Для получения дополнительной информации о nullptr возвратите типы. смотрите MATLAB к Отображению Типа данных C++.

  • Для типа double, ​ MATLAB продолжает возвращать [] для значения double.empty.

  • Для всех других фундаментальных типов, ​ MATLAB возвращает MLTYPEпустой значение. Протестировать на nullptr типы, вызовите isempty функция.

  • Для неосновных типов, ​ MATLAB возвращает nullptr объект. Протестировать на nullptr объекты, вызовите clibIsNull функция.

В R2019a, ​ для основных и неосновных типов, интерфейс возвращает double.empty ([]Значение.

Например, предположите, что эти функции C++ возвращают nullptr:

class A {
public:
    double val;
};

// Function returning nullptr object
A* returnNullptrObject() { 
   return nullptr; 
} 

// Functions returning nullptr primitive type ptr
double* returnDoubleNullptr () {
    return nullptr;
}

const char* returnStringNullptr () {
    return nullptr;
}
R2019aR2019b

Для объектов MATLAB возвращает [] (double.empty).

nullReturn = clib.nullptr.returnNullptrObject
nullReturn = 
    []

MATLAB возвращает nullPtr для объекта класса A.

nullReturn = clib.nullptr.returnNullptrObject
nullReturn = 
    null A

Для фундаментальных типов MATLAB возвращает [].

nullReturn = clib.nullptr.returnStringNullptr
nullReturn = 
    []

MATLAB возвращает пустой string массив для типа const char*.

nullReturn = clib.nullptr.returnStringNullptr
nullReturn = 
    0×0 empty string array

Для типа double, MATLAB возвращает [].

nullReturn = clib.nullptr.returnDoubleNullptr
nullReturn = 
    []

Никакое изменение. MATLAB возвращает [].

nullReturn = clib.nullptr.returnDoubleNullptr
nullReturn = 
    []

pyversion не рекомендуется

Все еще работает

pyversion не рекомендуется. Использование pyenv вместо этого. Нет никаких планов удалить pyversion в это время.

Чтобы выполнить функции Python из процесса, MATLAB обеспечивает новую функцию, pyenv. Эта функция конфигурирует параметры среды Python, включая версию. Даже если вы не используете функцию из процесса, MathWorks рекомендует использовать pyenv для настроек Python управления. Для получения дополнительной информации смотрите Выполнение Из процесса Функциональности Python.

C MEX и приложения механизма: trueложь, и bool заданный <stdbool.h>

Изменение поведения

Определение для trueложь, и bool изменился для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла с совместимыми компиляторами C99 на платформах Linux и Windows. MATLAB задает эти значения с помощью <stdbool.h> как задано Станд. IEEE 1003.1:

The <stdbool.h> header shall define the following macros:
bool
    Expands to _Bool.
true
    Expands to the integer constant 1.
false
    Expands to the integer constant 0.
_bool_true_false_are_defined
    Expands to the integer constant 1.

В R2019a и ранее, MATLAB задал эти значения на Windows и платформах Linux как:

  • true#defined как 1

  • false#defined как 0

  • booltypedef как unsigned char

Для платформ Apple macOS нет никакого изменения.

actxcontrolactxcontrollist, и actxcontrolselect функции будут удалены в будущем релизе

Предупреждает

actxcontrol, actxcontrollist, и actxcontrolselect функции будут удалены в будущем релизе. MATLAB поддержит серверный объекты COM только.

R2019a

Новые возможности, исправления ошибок, Вопросы совместимости

Среда

Live Editor Контролс: Добавьте флажки, поля редактирования и кнопки, чтобы установить значения переменных и запустить live скрипт

Можно добавить флажки и поля редактирования к live скриптам, чтобы в интерактивном режиме установить значения переменных. Также можно добавить кнопку, чтобы запустить live скрипт, когда кликнувшийся.

Чтобы добавить флажок, поле редактирования или кнопка, переходит к вкладке Live Editor, нажимает Control и выбирает из доступных элементов управления. Для получения дополнительной информации смотрите, Добавляют Интерактивные управления к Live Script.

Live Editor Контролс: Задайте, какой код запустить, когда значение управления изменится

По умолчанию, когда вы изменяете значение интерактивного управления, Live Editor запускает раздел, который содержит управление. Можно теперь сконфигурировать интерактивное управление, чтобы запустить все разделы, запустить текущий раздел и все остающиеся разделы, или ничего не сделать.

Чтобы сконфигурировать управление, щелкните правой кнопкой по управлению и выберите Configure Control. Затем в разделе Execution выберите из доступных параметров.

При конфигурировании интерактивного управления, чтобы не сделать ничто, когда изменено не полезно, когда live скрипт содержит несколько интерактивных способов управления, и вы только хотите запустить код после изменения всех их значений. Добавьте кнопку в live скрипт, чтобы запустить код, когда кликнувшийся.

Live Editor Контролс: Скройте код при совместном использовании и экспорте live скриптов с интерактивными способами управления

Можно скрыть код в live скрипте, показав только интерактивные способы управления, вывести, и форматированный текст. Сокрытие кода полезно при совместном использовании и экспорте live скриптов.

Чтобы скрыть код в live скрипте, кликните по скрыть кнопке кода справа от live скрипта. Чтобы показать код снова, кликните по кнопке вывода или выходу на правильной кнопке.

Если вы экспортируете live скрипт в PDF, HTML, LaTeX или Microsoft Word, код остается скрытым.

Live Editor Экспорт: Сохраните live скрипты и функции как документы Microsoft Word

Чтобы создать доступные для редактирования, статические документы, способные к тому, чтобы быть просматриваемым за пределами MATLAB, сохраните live скрипты и функции как документы Microsoft Word. Чтобы сохранить live скрипт или функцию как документ Microsoft Word, на вкладке Live Editor, выбирают Save> Export to Word. Этот формат только доступен на платформах Windows.

Для получения дополнительной информации о совместном использовании live скриптов и функций, смотрите Live скрипты Доли и Функции.

Live Editor Выход: Включите анимации в графиках показывать изменения в данных в зависимости от времени

Можно позволить анимациям цикла for в Live Editor показывать изменения в отображенных на графике данных в зависимости от времени.

Чтобы включить анимации в Live Editor, установите matlab.editor.AllowFigureAnimations установка на true:

s = settings;
s.matlab.editor.AllowFigureAnimation.PersonalValue = true;

Примечание

Включение анимаций отключает поддержку uicontrol в Live Editor.

Например, этот код включает анимации в Live Editor, и затем анимирует линию, растущую, когда он накапливает 2 000 точек данных. drawnow функционируйте отображает изменения после каждой итерации через цикл.

s = settings;
s.matlab.editor.AllowFigureAnimation.PersonalValue = true;

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,2000);

for k = 1:length(x)
    y = sin(x(k));
    addpoints(h,x(k),y);
    drawnow
end

Live Editor Выход: В интерактивном режиме уберите категориальные данные и фильтр datetime и duration переменные в таблице выводятся

В Live Editor можно в интерактивном режиме убрать категориальные данные и отфильтровать datetime и duration переменные в таблице выводятся.

Чтобы убрать категориальную переменную в таблице, кликните по стрелке вниз справа от имени переменной и выберите Edit Categories. Используйте доступные параметры создать, удалить, и объединить категории.

Отфильтровать datetime или duration переменная в таблице, кликните по стрелке вниз справа от имени переменной и выбора из доступных опций фильтрации.

Чтобы добавить сгенерированный код в ваш live скрипт, нажмите Update Code button ниже таблицы. Добавление сгенерированного кода к вашему live скрипту гарантирует, что очистка и фильтрация воспроизводятся в следующий раз, когда вы запускаете live скрипт.

Live Editor Выход: В интерактивном режиме измените тип данных переменных в таблице выход

В Live Editor можно в интерактивном режиме изменить тип данных переменной в таблице выход. Щелкните правой кнопкой по переменному столбцу по таблице, выберите Convert from datatype к, и выбор из доступных параметров.

Live Editor Фанкшнс: Автоматически преобразуйте выбранный код в функцию

Повредите большие скрипты или функции в мелкие кусочки путем преобразования выбранного кода в функции в файлах или локальных функциях. С одной или несколькими выбранными строками кода, на вкладке Live Editor, в разделе Code, нажимают Refactor, и затем выбирают из доступных параметров. MATLAB создает функцию с выбранным кодом и заменяет оригинальный код на вызов недавно эмпирическая функция.

MATLAB Online: Совместно используйте папки и сотрудничайте с другими

Совместно используйте свои папки со ссылкой только для представления, или пригласите отдельных сотрудников и установите их полномочия редактирования. Приглашения могут быть приняты или отклонены.

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

Проекты: Организуйте, справьтесь и совместно используйте свою работу с помощью проектов

Создайте проекты в MATLAB, чтобы организовать и совместно использовать вашу работу с другими. Используйте проекты найти файлы требуемыми запустить ваш код, управлять и совместно использовать файлы и настройки, и взаимодействовать с системой контроля версий.

Чтобы создать проект из существующей папки файлов, в желаемой папке, переходят к вкладке Home и выбирают New> Project> From Folder. MATLAB создает проект и добавляет ваши существующие файлы в проект.

Запуск MATLAB: Выполните скрипт MATLAB или функционируйте нев интерактивном режиме

Чтобы вызвать скрипт MATLAB или функционировать нев интерактивном режиме, начните MATLAB с -batch опция. Опция для неинтерактивного использования и в сценариях и в рабочих процессах командной строки. MathWorks рекомендует, чтобы вы использовали -batch опция вместо-r statement опция для этих случаев.

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

matlab -batch runtests

MATLAB:

  • Запускается без рабочего стола

  • Не отображает экран-заставку

  • Выполняется runtests функция

  • Логарифмический текст к stdout и stderr

  • Выходы автоматически с состоянием

Чтобы протестировать, если сеанс MATLAB запускается в пакетном режиме, вызовите batchStartupOptionUsed функция.

Для получения дополнительной информации смотрите matlab (Windows), matlab (macOS), или matlab (Linux).

Упаковка тулбокса: Установите требуемые дополнения с пользовательскими тулбоксами

При создании пользовательского тулбокса MATLAB обнаруживает дополнения, требуемые тулбоксом. Когда кто-то установил ваш тулбокс, тулбокс также загружает и устанавливает необходимые дополнения.

Язык и программирование

append Функция: Объедините строки

Объедините текст в строковых массивах, векторах символов и массивах ячеек из символьных векторов с помощью append функция.

В отличие от этого, strcat функция, append обработки все входные данные вводят то же самое. Например, если входной параметр имеет конечные пробельные символы, то append всегда сохраняет их, даже когда аргумент является вектором символов.

MException класс: Обеспечьте предложенное исправление для неперехваченного исключения

Обеспечьте предложенное исправление, с помощью Correction класс, для исключения, когда это выдано и не отловлено. Используйте addCorrection метод, чтобы добавить коррекцию в MException объект.

Функциональность, удаляемая или измененная

Папки под названием resources не позволены на пути MATLAB

Предупреждает

Начиная в R2019a, resources папка является зарезервированной папкой и папками с именем resources не позволены на пути MATLAB. В предыдущих релизах эти папки были позволены на пути MATLAB.

Если папка под названием resources задан при вызове addpath, userpath, или pathdef функции, MATLAB возвращает предупреждение, и папка не добавляется к пути. Если у вас есть папка под названием resources, MATLAB не может запустить любое содержимое той папки, даже если resources папка является текущей папкой.

Переименуйте все папки на пути под названием resources, и переместите любые файлы, которые вы хотите запустить в MATLAB из папок под названием resources.

Расширение массива ячеек сопоставимо с общим расширением массивов

Изменение поведения

Начиная в R2019a, размерности расширенного массива ячеек сопоставимы, используете ли вы фигурные скобки или круглые скобки для индексов. Ранее выходные размерности отличались, когда вы не задавали индексы для всех размерностей. Индексация с фигурными скобками теперь совпадает с предыдущим поведением для индексации с круглыми скобками, которая сопоставима с общим расширением массивов.

Для получения дополнительной информации смотрите раздел Compatibility Considerations cell.

Расширение массива структур сопоставимо с общим расширением массивов

Изменение поведения

Начиная в R2019a, размерности расширенного массива структур сопоставимы, присваиваете ли вы значение одному полю с помощью записи через точку или присваиваете целую структуру массиву. Ранее выходные размерности отличались, когда вы не задавали индексы для всех размерностей. Присвоение полю с помощью записи через точку теперь совпадает с предыдущим поведением присвоения структуры, которая сопоставима с общим расширением массивов.

Для получения дополнительной информации смотрите раздел Compatibility Considerations struct.

Свойства класса с помощью валидации размера больше безусловно изменяют размерность пустых массивов

Изменение поведения

В предыдущих релизах, если класс задал свойство с помощью валидации размера, которая содержала неограниченные размерности (обозначенный двоеточием, такие как (:,:)), затем присвоение пустого массива любого размера к свойству привело к пустому массиву размера (0,0). Например, учитывая это определение класса:

classdef MyClass
    properties
        Prop1(:,:)
        Prop2
    end
end

Присвоение пустого массива любой размерности к Prop1 всегда приводил к пустому массиву размерностей (0,0).

obj = MyClass;
obj.Prop1 = double.empty(0,5);
size(obj.Prop1)
ans =

     0     0

Присвоение пустого массива к Prop2 приводит к правильному результату, потому что валидация размера с неограниченными размерностями не используется в классе.

obj = MyClass;
obj.Prop2 = double.empty(0,5);
size(obj.Prop2)
ans =

     0     5

Запуск в R2019a, использование неограниченной валидации размера для свойств не вызывают размер пустых массивов, присвоенных свойствам быть измененными к (0,0). В R2019a то же определение класса приводит к этим результатам для присвоения на Prop1.

obj = MyClass;
obj.Prop1 = double.empty(0,5);
size(obj.Prop1)
ans =

     0     5

Определение классов и пакетов с помощью schema.m не будет поддерживаться в будущем релизе

Все еще работает

Поддержка классов и пакетов, заданных с помощью schema.m файлы будут удалены в будущем релизе. Замените существующие основанные на схеме классы на классы, заданные с помощью classdef ключевое слово.

Первый аргумент к ismethod должен быть объект

Изменение поведения в будущем релизе

ismethod функция документируется, чтобы искать метод объекта, который задан как первый вход. Однако ismethod функционируйте обрабатывает string и char входные параметры как имя класса и ищут заданный метод в том классе. Поэтому вы не можете использовать ismethod найти метод входного объекта, который является string или char массив. В будущих релизах, ismethod возвратит true, только если второй вход является именем метода первого входного объекта. ismethod не обработает первый вход как имя класса.

Для кода, который использует ismethod с именем класса, заданным как строковый скаляр или вектор символов, можно заменить этим выражением как альтернативой, которая будет работать в текущих и будущих версиях.

any(strcmp('methodName', methods('ClassName'))) 

Программные файлы, больше, чем 128 Мбайт или с высокой сложностью, не будут поддерживаться

Изменение поведения в будущем релизе

В будущем релизе, запускаясь или открывая программные файлы, больше, чем приблизительно 128 МБ, не будет поддерживаться. Для файлов, которые содержат только код (например, .m и .p файлы), этот предел будет влиять на размер файла. Для файлов, которые хранят больше, чем только код (например, .mlx файлы), это будет влиять на размер кода. Рабочие операторы, больше, чем 128 МБ, или непосредственно в Командном окне или использовании eval функция, также не будет поддерживаться. Кроме того, код с высоким уровнем сложности, таким как большое количество глубоко вложенного if операторы, не будет поддерживаться. В настоящее время эти файлы и код поддерживаются, но могут вызвать ошибки или непредсказуемое поведение.

Код, который является слишком большим или комплексный, не запустится или откроется в MATLAB, и MATLAB отобразит ошибку.

Большой программный файл или размеры оператора часто происходят при использовании значительных частей кода (например, более чем 500 линий), чтобы задать переменные с постоянными значениями. Чтобы уменьшить размер этих файлов, рассмотрите определение переменных и сохранение их в файле данных (например, MAT-файл или .csv файл). Затем можно загрузить переменные вместо того, чтобы выполнить код, чтобы сгенерировать их. Это не только уменьшает размер файла вашей программы, но и может также увеличить эффективность.

Анализ данных

xcorr и xcov Функции: Вычислите взаимную корреляцию и перекрестную ковариацию в базовом MATLAB

Можно теперь вычислить взаимную корреляцию и перекрестную ковариацию данных с помощью MATLAB. Ранее xcorr и xcov были доступно только в Signal Processing Toolbox™.

detrend Функция: Удалите тренды кусочного полинома, установите требования непрерывности и задайте точки выборки

detrend функционируйте теперь предлагает дополнительную функциональность.

  • В дополнение к постоянным и методам Linear для удаления кусочных трендов можно задать более высокие полиномы степени. Например, detrend(A,3) удаляет кубический тренд из данных в A.

  • При предоставлении точек останова можно использовать 'Continuous' параметр, чтобы задать, должен ли подходящий тренд быть непрерывным.

  • 'SamplePoints' параметр позволяет вам задавать точки выборки, сопоставленные с входными данными.

groupcounts Функция: Считайте количество элементов группы для массивов, таблиц и расписаний

Чтобы считать число элементов в группе, используйте groupcounts функция.

grouptransform Функция: Преобразуйте данные массива группой

В дополнение к таблицам и расписаниям, можно теперь преобразовать данные в массив группой, использующей grouptransform функция.

filloutliersisoutlier, и rmoutliers Функции: Обнаружьте выбросы с помощью процентилей

filloutliers, isoutlier, и rmoutliers функции теперь предлагают Winsorization для обнаружения выбросов с помощью 'percentiles' опция.

fillmissing и filloutliers Функции: пропавшие без вести Заливки и данные о выбросе с помощью измененной Интерполяции Акима

Можно теперь заполнить пропавших без вести и данные о выбросе с модифицированной Интерполяцией Акима с помощью 'makima' опция в fillmissing и filloutliers функции.

fillmissing Функция: Задайте местоположения отсутствующего значения

Задавать местоположения недостающих данных при использовании fillmissing функция, используйте 'MissingLocations' параметр.

min и max Функции: Возвратите информацию об индексе при работе больше чем с одной размерностью и задайте линейные индексы

При одновременной работе больше чем с одной размерностью с min и max функции, можно теперь возвратить информацию об индексе, соответствующую минимальным и максимальным значениям.

Можно также возвратить линейные индексы, соответствующие минимальным и максимальным значениям входного массива с помощью 'linear' опция.

tall Массивы: Напишите пользовательские алгоритмы раздвижного окна, чтобы работать с длинными массивами

Функции matlab.tall.movingWindow и matlab.tall.blockMovingWindow позвольте вам написать пользовательские алгоритмы для функций раздвижного окна, чтобы работать с длинными массивами.

tall Массивы: Работайте с длинными массивами с большим количеством функций, включая groupcounts, intersect, и svd

Функции, перечисленные в этой таблице теперь, поддерживают длинные массивы как входные параметры. Для полного списка поддерживаемых функций введите methods tall. Для получения дополнительной информации об использовании и ограничениях, смотрите раздел Extended Capabilities в нижней части каждой страницы с описанием.

Кроме того, некоторые функции удалили ограничения с длинными массивами.

Функции

Добавленная поддержка

stack

2D выходной синтаксис [S,iu] = stack(___) теперь длинные массивы поддержек. Второй выход возвращает индексы, которые описывают отображение строк в операции укладки.

Ранее несколько выходных параметров не поддерживались для длинных массивов.

groupsummary

Сгруппированные вычисления на высоких матрицах и массивах теперь поддерживаются.

Ранее первый вход требовался, чтобы быть длинной таблицей или длинным расписанием.

Функциональность, удаляемая или измененная

Изменение генератора случайных чисел по умолчанию для tallrng

Изменение поведения

Начиная в R2019a, генераторе случайных чисел по умолчанию для tallrng threefry. Этот генератор предлагает улучшения эффективности для параллельных вычислений по старому значению по умолчанию. В релизах до R2018b, генератора случайных чисел по умолчанию для tallrng был combRecursive.

С различным генератором по умолчанию MATLAB сгенерирует различные последовательности случайных чисел по умолчанию в контексте длинных массивов. Однако статистика этих вычислений останется незатронутой. Поэтому необходимо обновить любой код, который использует определенные сгенерированные случайные числа. Однако большинство вычислений на случайных числах должно быть незатронутым.

Чтобы установить генератор на настройки, используемые по умолчанию в R2018b и более ранних релизах, используйте команду:

tallrng(0,'combRecursive')

Импорт и экспорт данных

readmatrix, readvars, и readcell Функции: Считайте табличные данные как матрицу, переменные или массив ячеек

Считайте данные в столбцах из текста или файлов электронной таблицы в матрицу, переменные или массив ячеек.

  • readmatrix — Считайте гомогенные данные в столбцах в матрицу.

  • readvars — Считайте данные в столбцах в переменные. Каждая переменная соответствует столбцу данных в файле.

  • readcell — Считайте гетерогенные данные в массив ячеек.

writematrix и writecell функции: Запишите табличные данные от матричного или массива ячеек до текста или файла электронной таблицы

Запишите данные из матрицы или массива ячеек к тексту или файлу электронной таблицы.

  • writematrix — Запишите гомогенный массив в файл.

  • writecell — Запишите массив ячеек в файл.

readtimetable и writetimetable Функции: Считайте и запишите расписания

Считайте и напишите расписания в MATLAB.

  • Используйте readtimetable функционируйте, чтобы считать расписания из текста или файлов электронной таблицы.

  • Используйте writetimetable функционируйте, чтобы записать расписания в текст или файлы электронной таблицы.

detectImportOptions Функция: Улучшите обнаружение настроек импорта для текста и файлов электронной таблицы

Улучшите обнаружение настроек импорта для текста и файлов электронной таблицы путем передачи дополнительной информации detectImportOptions функция с помощью этих пар "имя-значение".

  • 'ThousandsSeparator' — Символ, разделяющий тысячи групп (только числовые переменные)

  • 'DecimalSeparator' — Символ, разделяющий целую часть от дробной части (только числовые переменные)

  • 'TrimNonNumeric' — Удалите нечисловые символы из числовых переменных (только числовые переменные)

  • 'ConsecutiveDelimitersRule' — Процедура, чтобы обработать последовательные разделители (только текстовые файлы)

  • 'LeadingDelimitersRule' — Процедура, чтобы обработать ведущие разделители (только текстовые файлы)

  • 'TreatAsMissing' — Текст, чтобы интерпретировать как недостающие данные (только текстовые файлы)

  • 'ReadRowNames' — Считайте первый столбец как имена строки

  • 'ReadVariableNames' — Считайте первую строку как имена переменных

Для получения дополнительной информации смотрите setvaropts и detectImportOptions страницы с описанием.

parquetread, parquetwrite, и parquetinfo Функции: Считайте, запишите и получите информацию от файлов Parquet

Импортируйте и экспортируйте данные в столбцах из файлов Parquet в MATLAB. Паркет является колоночным форматом устройства хранения данных, который поддерживает эффективное сжатие и схемы кодирования. Чтобы работать с форматом файла Parquet, используйте эти функции.

  • parquetread — Считайте колоночные данные из файла Parquet.

  • parquetwrite — Запишите колоночные данные в файл Parquet.

  • parquetinfo — Получите информацию о файле Parquet.

Для получения дополнительной информации о формате файла Parquet см. https://parquet.apache.org/.

write Функция: Запишите длинные массивы в файлы Parquet

write функционируйте теперь поддерживает длинные массивы записи к файлам Parquet. Чтобы записать длинный массив, установите FileType параметр к 'parquet', например:

write('C:\myData',tX,'FileType','parquet')

Инструмент для импорта: Сгенерируйте улучшенный код при импорте из текстовых файлов

Import Tool теперь последовательно функционирует через другие платформы и генерирует код, который легко считать для импорта текстовых файлов. Для получения дополнительной информации смотрите, что Данные о Текстовом файле Импорта Используют Import Tool.

thingSpeakRead и thingSpeakWrite Функции: Читайте или запишите данные на платформу ThingSpeak IoT

Доступ к данным IoT в каналах ThingSpeak™:

  • Использование thingSpeakRead считывать данные из каналов ThingSpeak.

  • Использование thingSpeakWrite записывать данные к каналам ThingSpeak.

Для получения дополнительной информации о платформе ThingSpeak см. https://thingspeak.com/.

writetable и imwrite Функции: Запишите в веб-сервисы устройства хранения данных как Amazon Web Services и Устройство хранения данных Блоба Azure

Запишите табличные данные и файлы изображений к удаленным местоположениям с помощью writetable и imwrite функции. При записывании данные к удаленным местоположениям необходимо задать полный путь с помощью универсального локатора ресурса (URL). Например, запишите csv файл и jpg файл, чтобы объединиться в облако Amazon S3:

writetable(T,'s3://bucketname/path_to_file/my_text_file.csv');
imwrite(I,'s3://bucketname/path_to_file/my_image.jpg');
Для получения дополнительной информации о подготовке MATLAB, чтобы получить доступ к вашему сервису оперативного хранения, смотрите работу с Удаленными данными.

ParquetDatastore Объект: Создайте datastore для набора файлов Parquet

Считайте набор файлов Parquet в рабочее пространство MATLAB с помощью parquetDatastore.

Для получения дополнительной информации о формате файла Parquet см. https://parquet.apache.org/.

ImageDatastore Объект: Создайте подмножество существующего datastore

Создайте подмножество datastore изображений с помощью subset метод.

DsFileSet Объект: Создайте подмножество набора файла

Можно создать подмножество DsFileSet объект при помощи subset метод. DsFileSet объект помогает вам справиться с итеративной обработкой большого количества файлов.

FileDatastore Объект: Считайте большие файлы путем импорта файла в меньших фрагментах

Читайте и большие файлы процесса в меньших фрагментах. Например, можно создать datastore, который читает один массив за один раз из большого MAT-файла, который не помещается в доступную память. Чтобы настроить ваш datastore, чтобы выполнить частичные чтения, используйте эти пары "имя-значение": 'ReadMode', 'PreviewFcn', и 'BlockSize'.

Для получения дополнительной информации смотрите fileDatastore.

Хранилища данных: Объедините и преобразуйте хранилища данных

Выполнить combine и transform операции на существующих хранилищах данных.

  • combine — Объедините два или больше хранилища данных и возвратите новый datastore, представляющий базовые хранилища данных.

  • transform — Преобразуйте входной datastore при помощи заданного преобразования, функционируют и возвращают преобразованный datastore.

Пользовательский Datastore: основанные на Риде Хэдупе данные из файлов, баз данных и другого не основанные на файле местоположения

Создайте пользовательский datastore, чтобы получить доступ к данным, хранимым в файлах или не основанных на файле источниках данных такой как базы данных с помощью matlab.io.datastore.HadoopLocationBased mixin. Используйте это расширение, чтобы задать местоположение ваших данных в Hadoop®. Пользовательский datastore с HadoopLocationBased mixin делает расчеты более эффективными путем усиления местоположения данных. С вашим пользовательским datastore можно выполнить большой анализ данных при помощи tall массивы и mapreduce.

Для получения дополнительной информации о пользовательской среде хранилища данных смотрите, Разрабатывают Пользовательский Datastore.

VideoReader функция: Генерация кода C и C++

VideoReader функционируйте поддерживает генерацию C и Кода С++ с помощью MATLAB Coder™.

ind2rgb функция: Генерация кода C и C++

ind2rgb функционируйте поддерживает генерацию C и Кода С++ с помощью MATLAB Coder.

Научные Библиотеки Формата файла: Библиотека NetCDF обновила, чтобы присвоить версию 4.6.1

Библиотека NetCDF обновляется, чтобы присвоить версию 4.6.1.

web функция: Откройте внешние сайты в системном браузере вместо браузера MATLAB

Можно изменить поведение по умолчанию web функция, чтобы открыть внешние сайты в вашем системном браузере вместо браузера MATLAB. Используя систему браузер рекомендуется при открытии внешних сайтов. Чтобы изменить поведение по умолчанию, перейдите к вкладке Home, и в разделе Environment, нажмите Preferences. Выберите MATLAB> Web, и в разделе System Web browser, выберите Use system web browser when opening links to external sites (recommended).

Функциональность, удаляемая или измененная

NumberOfChannels свойство audioplayer и audiorecorder Объекты не рекомендуются

Все еще работает

NumberOfChannels свойство audioplayer и audiorecorder объекты не рекомендуются. Используйте имя NumChannels вместо этого. Чтобы обновить ваш код, измените экземпляры NumberofChannels к NumChannels. Значения свойств являются тем же самым. Нет никаких планов удалить NumberOfChannels свойство в это время.

web Функция

Изменение поведения в будущем релизе

В будущих релизах, web функция откроет внешние сайты с помощью системного браузера по умолчанию. В настоящее время, web функция открывает внешние сайты с помощью браузера MATLAB. Используя систему браузер рекомендуется при открытии внешних сайтов.

Чтобы изменить браузер по умолчанию, перейдите к вкладке Home, и в разделе Environment, нажмите Preferences. Выберите MATLAB> Web и в разделе System Web browser, выберите Use system web browser when opening links to external sites (recommended).

hdftool не рекомендуется

Все еще работает

В будущем релизе, hdftool будет удален. Чтобы импортировать HDF4 или файлы HDF-EOS, используйте hdfread функцию вместо этого.

csvread и csvwrite функции не рекомендуются

Все еще работает

csvread и csvwrite не рекомендуются. Используйте readmatrix и writematrix вместо этого. Нет никаких планов удалить csvread и csvwrite.

Эта таблица показывает типичные использования csvread и csvwrite и как обновить ваш код, чтобы использовать readmatrix и writematrix вместо этого.

Не рекомендуемый

Рекомендуемый

M = csvread(filename)
M = readmatrix(filename)
csvwrite('mydata.txt',M)
writematrix(M,'mydata.txt')

Для получения дополнительной информации смотрите readmatrix и writematrix.

dlmread и dlmwrite функции не рекомендуются

Все еще работает

dlmread и dlmwrite не рекомендуются. Используйте readmatrix и writematrix вместо этого. Нет никаких планов удалить dlmread и dlmwrite.

Эта таблица показывает типичные использования dlmread и dlmwrite и как обновить ваш код, чтобы использовать readmatrix и writematrix вместо этого.

Не рекомендуемый

Рекомендуемый

M = dlmread(filename)
M = readmatrix(filename)
dlmwrite('mydata.txt',M)
writematrix(M,'mydata.txt')

Для получения дополнительной информации смотрите readmatrix и writematrix.

xlsread и xlswrite функции не рекомендуются

Все еще работает

xlsread и xlswrite не рекомендуются. Вместо xlsread и xlswrite:

  • Используйте readtable и writetable для чтения и записи числовых и текстовых данных.

  • Используйте readmatrix и writematrix для чтения и записи гомогенного текста или числовых данных.

  • Используйте readcell и writecell для чтения и записи числовых и текстовых данных.

Нет никаких планов удалить xlsread и xlswrite.

Эта таблица показывает типичные использования xlsread и xlswrite и как обновить ваш код, чтобы использовать рекомендуемое чтение и функции записи.

Не рекомендуемый

Рекомендуемый

Считайте данные об электронной таблице как матрицу с помощью xlsread:

M = xlsread(filename)

Считайте данные об электронной таблице как таблицу:

T = readtable(filename)
Однако, чтобы продолжить считывать ваши данные как матрицу, используйте:
M = readmatrix(filename)

Считайте данные об электронной таблице как массив ячеек с помощью xlsread:

[~,~,C] = xlsread(filename)

Импортируйте данные об электронной таблице как таблицу:

T = readtable(filename)
Однако, чтобы продолжить импортировать ваши данные как ячейку arrary, используйте:
C = readcell(filename)

Считайте определенный лист и область значений как матрица с помощью xlsread:

M = xlsread(filename,sheet,range)

Считайте определенный лист и область значений как таблица:

T = readtable(filename,'Sheet',sheet,'Range',range)
Однако, чтобы продолжить считывать ваши данные как матрицу, используйте:
M = readmatrix(filename,'Sheet',sheet,'Range',range)

Считайте определенный лист и область значений как массив ячеек с помощью xlsread:

[~,~,C] = xlsread(filename,sheet,range)

Считайте определенный лист и область значений как таблица:

T = readtable(filename,'Sheet',sheet,'Range',range)
Однако продолжать считывать ваши данные как массив ячеек:
C = readcell(filename,'Sheet',sheet,'Range',range)

Запишите табличные данные в электронные таблицы с помощью xlswrite:

xlswrite(filename,M)

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

Запишите таблицу:

writetable(T,filename)

Запишите матрицу:

writematrix(M,filename)

Запишите массив ячеек:

writecell(C,filename)

Для получения дополнительной информации смотрите readmatrix, writematrix, readcell, writecell, readtable, и writetable.

HadoopFileBased не рекомендуется

Все еще работает

HadoopFileBased не рекомендуется. Используйте HadoopLocationBased вместо этого. Нет никаких планов удалить HadoopFileBased.

При запуске в R2019a используйте HadoopLocationBased mixin, чтобы добавить Hadoop поддерживает к вашему пользовательскому datastore. HadoopLocationBased mixin оказывает поддержку для не основанные на файле данные где как HadoopFileBased поддерживает основанные на файле данные только.

Для получения дополнительной информации о пользовательской среде хранилища данных смотрите, Разрабатывают Пользовательский Datastore.

Математика

Решите задачу присвоения с matchpairs и equilibrate

Новые функции позволяют вам решить задачу присвоения во множестве контекстов.

  • matchpairs — Создайте линейное отображение между строками и столбцами матрицы стоимости. Это присваивает строки столбцам таким способом, которым минимизирована глобальная стоимость.

  • equilibrate — Переставьте и перемасштабируйте матричный A таким образом, что новый матричный B = R*P*A*C имеет только 1 с и-1s на его диагонали, и все недиагональные записи не больше 1 в величине. При вычислении предварительного формирователя, чтобы итеративно решить линейную систему, используйте уравновешивание, чтобы улучшить условие матрицы и допускать улучшенные предварительные формирователи.

graph и digraph Объекты: Создайте графики с категориальными узлами

graph, digraph, и addedge функции теперь поддерживают категориальные имена узла как входные параметры. Это позволяет вам использовать данные, которые импортированы как categorical создать график, без потребности в манипуляции с типами данных.

Графика

parallelplot Функция: Визуализируйте табличные или матричные данные с несколькими столбцами при помощи графика координат параллели

Создать параллель координирует график, используйте parallelplot функция. Строки входных данных соответствуют линиям в графике, и столбцы входных данных соответствуют координатам в графике. Чтобы сгруппировать линии в графике, можно использовать любого 'GroupVariable' аргумент пары "имя-значение" с табличными данными или 'GroupData' аргумент пары "имя-значение" с матричными данными.

Всплывающие подсказки: Прикрепите и настройте всплывающие подсказки в графиках

Всплывающие подсказки, которые появляются, когда вы наводите на график, становятся персистентными (прикрепленный), когда вы кликаете по ним. Нажатие в на второй раз не прикрепляет всплывающую подсказку.

Для некоторых типов графиков можно настроить содержимое всплывающих подсказок. Например, можно отредактировать метки всплывающей подсказки, изменить отображенные значения или изменить размер шрифта. Кроме того, можно добавить или удалить строки из всплывающих подсказок. Графики, которые поддерживают эти индивидуальные настройки, включают Scatter, Stairосновастрока, и Surface объекты с DataTipTemplate свойство.

  • Чтобы отредактировать метки в интерактивном режиме, дважды кликните метку, введите текст, который вы хотите, и затем кликаете вне всплывающей подсказки. Чтобы сделать другие индивидуальные настройки в интерактивном режиме, щелкните правой кнопкой по всплывающей подсказке и выберите Edit Properties.... Используйте поля в Property Inspector, который открывается, чтобы внести любые изменения.

  • Чтобы настроить всплывающую подсказку программно, используйте DataTipTemplate свойство объекта диаграммы. Например, этот код строит демонстрационные данные о пациентах из таблицы как диаграмма поля точек. Затем это изменяет размер шрифта и метки всплывающих подсказок. Для получения дополнительной информации смотрите DataTipTemplate.

    tbl = readtable('patients.xls');
    s = scatter(tbl.Weight,tbl.Height);
    s.DataTipTemplate.FontSize = 12;
    s.DataTipTemplate.DataTipRows(1).Label = 'Weight';
    s.DataTipTemplate.DataTipRows(2).Label = 'Height';
    
    Можно добавить новую строку во всплывающую подсказку с помощью dataTipTextRow функция. Например, добавьте третью строку, которая показывает имя пациентов из таблицы.

    s.DataTipTemplate.DataTipRows(3) = dataTipTextRow('Name',tbl.LastName);

Взаимодействия осей: Настройте взаимодействия графика, такие как перетаскивание к панорамированию или прокрутка для масштабирования

Создайте индивидуально настраиваемый набор взаимодействий графика путем установки Interactions свойство осей. Эти взаимодействия встроены в оси и доступны, не имея необходимость нажимать любые кнопки на панели инструментов осей. Некоторые типы взаимодействий включены по умолчанию, в зависимости от содержимого осей.

Для получения дополнительной информации смотрите Интерактивность Диаграммы управления.

Линейка Пэннинг: Панорамируйте ось, чтобы изменить ее пределы, не имея необходимость использовать инструмент панорамирования

Перетащите ось, чтобы изменить пределы по измерению графика. Эта функциональность доступна для большинства Декартовых графиков, даже когда инструмент панорамирования на панели инструментов осей отключен.

Инспектор свойств: Переместитесь и управляйте видимостью графических объектов в интерактивном режиме

Можно использовать обозреватель объектов, который, кажется, наверху Property Inspector перемещается и управляет видимостью графических объектов. Когда вы выбираете объект с помощью обозревателя объектов, объект кажется выбранным на рисунке, и свойства появляются в инспекторе.

Обозреватель объектов имеет свернутое представление и расширенное представление.

  • Свернутое представление (представление по умолчанию) показывает в настоящее время выбранный объект и его прямую иерархию. Кликните по одному из имен объектов, чтобы видеть его свойства в Property Inspector.

  • Расширенное представление показывает иерархию графического объекта фигуры. Щелкните правой кнопкой по имени объекта, чтобы показать, скрыть, или удалить графический объект. Выберите несколько объектов с помощью Ctrl +click.

Географические Графики: Географические линейки, шкала, CurrentPoint и ginput

Графики на географических осях включают настраиваемые линейки и шкалу.

Используйте geotickformat функция, чтобы настроить линейки.

GeographicAxes поддержите CurrentPoint свойство. Используйте это свойство получить текущие координаты указателя мыши на географические оси.

Графический Экспорт: Экспортируйте оси с более трудной обрезкой с помощью панели инструментов осей

Кликните или коснитесь кнопки экспорта на панели инструментов осей, чтобы сохранить оси как файл PDF или изображение. Сохраненное содержимое плотно обрезается вокруг осей с минимальным пробелом.

Изменение размеров графика: Измените размер графиков с улучшенными размещениями

Размещение улучшено, когда вы изменяете размер графика, который может быть дочерним элементом фигуры (такой как тепловая карта). Это автоматическое поведение изменения размеров настраивает размеры шрифта и располагающий с интервалами между элементами в графике, чтобы обеспечить самое лучшее представление для нового размера.

Изменение FontSize свойство графика отключает автоматическое изменение размеров шрифтов.

Значения цветов: Задайте цвета с помощью шестнадцатеричных цветовых кодов

Задайте шестнадцатеричные цветовые коды при выбирании цвета графических объектов. Например, set(gca,'XColor','#FF8800') устанавливает x - цвет оси к оранжевому. Используйте или шестиразрядную или трехразрядную форму, чтобы задать цвет. Символы не являются чувствительными к регистру. Таким образом, '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

Категориальные Значения: Задайте категориальные массивы для функций, и возражает что списки использования текста

Много функций и свойств объектов, которые используют списки текстовых элементов теперь, принимают категориальные массивы в дополнение к массивам ячеек и строковым массивам. Когда вы задаете категориальный массив, MATLAB использует значения в массиве, не категории. Таким образом вы можете должны быть записать дополнительный код, чтобы извлечь значения, которые вы хотите использовать. Например, этот код находит уникальные записи cities категориальный массив прежде, чем установить x - метки метки деления на оси.

bar([10 20 30])
cities = categorical({'Boston','Boston','Berlin','Paris','Berlin'});
xticklabels(unique(cities))

См. документацию для определенной функции или объекта определить, принимает ли это категориальные значения.

rendererinfo Функция: Получите информацию средства отображения для любых осей

Используйте rendererinfo функция, чтобы получить информацию о графическом средстве отображения использовала для любых осей или графика, который может быть дочерним элементом фигуры.

Вопросы совместимости

Используйте rendererinfo функция вместо opengl функция, чтобы получить информацию о графическом средстве отображения.

Функциональность, удаляемая или измененная

Используя opengl функция, чтобы получить информацию о графическом средстве отображения не рекомендуется

Все еще работает

Используя opengl функция, чтобы получить информацию о графическом средстве отображения не рекомендуется. А именно, эти синтаксисы не рекомендуются:

  • opengl info

  • d = opengl('data')

Нет никаких планов удалить поддержку этих синтаксисов в это время. Вместо вызова opengl чтобы получить информацию средства отображения, вызовите rendererinfo функцию вместо этого:

info = rendererinfo(ax)
Задайте ax как любой тип осей или графика, который может быть дочерним элементом фигуры (такой как тепловая карта). Выход является структурой, содержащей большую часть той же информации как opengl функция обеспечивает.

Поля в opengl СтруктуреСоответствующие поля в rendererinfo Структуре
d.Versioninfo.Version
d.Vendorinfo.Vendor
d.Rendererinfo.RendererDevice
d.RendererDriverVersioninfo.Details.RendererDriverVersion
d.RendererDriverReleaseDateinfo.Details.RendererDriverReleaseDate
d.MaxTextureSizeinfo.Details.MaxTextureSize
d.VisualБольше необходимый
d.SoftwareЭта информация хранится в info.GraphicsRenderer, но получить эквивалентное логическое значение, используйте strcmp(info.GraphicsRenderer,'OpenGL Software')
d.HardwareSupportLevelinfo.Details.HardwareSupportLevel
d.SupportsGraphicsSmoothinginfo.Details.SupportsGraphicsSmoothing
d.SupportsDepthPeelTransparencyinfo.Details.SupportsDepthPeelTransparency
d.SupportsAlignVertexCentersinfo.Details.SupportsAlignVertexCenters
d.ExtensionsБольше необходимый
d.MaxFrameBufferSizeinfo.Details.MaxFrameBufferSize

Тепловые карты интерпретируют текст, использующий синтаксис TeX

Изменение поведения

Начиная в R2019a, тепловые карты, созданные с heatmap функция интерпретирует текст, использующий синтаксис TeX вместо того, чтобы отобразить буквенные символы. Если вы хотите использовать символ разметки TeX в обычном тексте, таком как подчеркивание (_), затем вставить обратную косую черту (\) перед символом, вы хотите включать. Обратная косая черта является символом ESC TeX. Для получения дополнительной информации об использовании разметки TeX смотрите свойство Interpreter текстового объекта.

Создание приложений

uiimage Функция: Отобразите значок, логотип или изображение в приложениях и на холсте App Designer

Чтобы отобразить изображение, значок или логотип в вашем приложении, вызывает uiimage функционируйте программно или, в App Designer, перетащите мышью компонент изображения от Component Library на холст.

Компоненты изображения поддерживаются только в приложениях App Designer и в цифрах созданный с uifigure функция.

uitable Функция: Сортировка таблиц в интерактивном режиме при использовании table массивы

Чтобы составить таблицы, которые могут быть отсортированы в интерактивном режиме, использовать table массивы и конфигурируют ColumnSortable свойство Table объект. Используйте DisplayData свойство и DisplayDataChangedFcn коллбэк, если вы хотите обновить свою визуализацию на основе того, как пользователь сортирует таблицу, содержащую table данные.

Автоматический Измените размер: Автоматически измените размер компонентов, когда приложение будет сделано меньшим

Когда родительский контейнер изменен меньший, чем его начальный размер, AutoResizeChildren теперь уменьшает пробел между компонентами и уменьшает сами компоненты, чтобы обеспечить удобство пользования. Для получения дополнительной информации смотрите Управление Приложения Изменяемого размера в App Designer.

Прокрутка Сеток: Создайте приложения с сетками с возможностью прокрутки

Включите интерактивную прокрутку в своем менеджере по размещению сетки путем установки Scrollable свойство сетки к 'on'. Смотрите uigridlayout для получения дополнительной информации.

Дизайнер приложений: Создайте приложения что автоматически обратное течение, на основе содержимого на размере устройства

Создайте предварительно сконфигурированные приложения с 3 панелями или с 2 панелями, которые автоматически изменяют размер и обратное течение, на основе содержимого на размере экрана, экранируют ориентацию и платформу. Используйте приложения с автообратным течением, если вы ожидаете запускать или совместно использовать ваши приложения через несколько сред или настольных разрешений. Для получения дополнительной информации см. Приложения с Автообратным течением.

Дизайнер приложений: Добавьте и сконфигурируйте менеджера по размещению сетки на холсте App Designer

Структурируйте размещение своего приложения путем перетаскивания менеджера по размещению сетки от Component Library на холст. Чтобы сконфигурировать размещение сетки в Design View, выберите значок из верхнего левого ручного угла сетки, или щелкните правой кнопкой и выберите Configure grid layout. Затем выберите строку или столбец, чтобы отредактировать. Для получения дополнительной информации смотрите uigridlayout функция или GridLayout Properties.

Менеджеры по размещению сетки поддерживаются только в приложениях App Designer или в цифрах созданный с uifigure функция.

Дизайнер приложений: Перестройте порядок коллбэков

Чтобы перестроить порядок коллбэков, перейдите к Code Browser, выберите коллбэк, вы хотите переместить, и затем перетащить коллбэк в новое положение в списке. Это также меняет местоположение коллбэка в редакторе.

Дизайнер приложений: Создайте новые приложения с помощью опций начальной страницы App Designer

От начальной страницы App Designer можно теперь сделать следующее.

  • Создайте новое пустое приложение или новое быстро реагирующее приложение с автообратным течением.

  • Запустите пример или доступ показанное содержимое от главного баннера.

  • Просмотрите список своих недавних приложений.

  • Открытые приложения от пути к файлу.

  • Выберите пример из Getting Started или разделов Programming Tasks в качестве примера.

Начальная страница появляется, когда вы запускаете App Designer. Если вы находитесь в среде проектирования, можно возвратиться к начальной странице путем выбора Нового значка из панели инструментов Designer.

Дизайнер приложений: Управляйте шрифтом, кодом и настройками автосохранения с помощью Настроек MATLAB

Управляйте этими настройками через диалоговое окно Preferences

  • При автокодировании для шаблонов как круглые скобки блокируйте окончания и перенос комментария

  • Настройки клавиатуры для автоматических предложений кода и завершений

  • Сохраните настройки автоматически после нажатия далеко от файла

  • Настройка размера шрифта App Designer Code View

Изменения в автосохранении и настройках размера шрифта применяются только к Редактору App Designer. Когда вы устанавливаете автокодирование или настройки клавиатуры, изменение применяется к редактору MATLAB и App Designer.

Дизайнер приложений: Доступ к контекстно-зависимой справке в Представлении кода

Чтобы открыть документацию для компонента, функция или коллбэк в вашем коде, подсвечивает элемент и затем нажимает F1, или щелкает правой кнопкой и выбирает справку для элемента кода, который вы выбрали.

Дизайнер приложений: увеличение App Designer

Содержите Ctrl и переместите колесико прокрутки в окно App Designer, чтобы увеличить масштаб или. Чтобы возвратиться к шкале по умолчанию, нажмите Ctrl+0.

Графическая Поддержка: Исследуйте данные с помощью панели инструментов осей и всплывающих подсказок в приложениях, созданных с uifigure функция

Используйте панель инструментов осей и всплывающие подсказки, чтобы исследовать отображенные на графике данные в интерактивном режиме в приложениях App Designer и в цифрах созданный с uifigure функция. Панель инструментов осей и всплывающие подсказки включены по умолчанию для axes и uiaxes объекты в a uifigure.

Вопросы совместимости

  • Панель инструментов Axes — В предыдущих релизах, для панели инструментов осей не включили axes или uiaxes объекты в a uifigure объект. Теперь это включено по умолчанию. Можно выключить его путем установки Visible свойство AxesToolbar возразите против 'off'. Для получения дополнительной информации смотрите AxesToolbar Properties.

  • Всплывающие подсказки — В предыдущих релизах, для всплывающих подсказок не включили axes или uiaxes объекты в a uifigure объект. Теперь, чтобы управлять, включены ли взаимодействия осей, используйте disableDefaultInteractivity и enableDefaultInteractivity функции. Например,

    uf = uifigure;
    ax = axes(uf);
    plot(ax,rand(5))
    disableDefaultInteractivity(ax)

Развернутые Веб-приложения: Совместно используйте приложения изменяемого размера или создайте приложения, это открывает веб-страницы

В развернутых веб-приложениях можно теперь сделать следующее:

  • В интерактивном режиме измените размер своего веб-приложения.

  • Программируйте свое веб-приложение, чтобы открыть другой URL с помощью web функция.

Для получения информации о других новых возможностях развернутых веб-приложений см. Информацию о релизах (MATLAB Compiler).

MATLAB Online : Создайте и отредактируйте MATLAB Online использования приложений App Designer

Создайте или отредактируйте приложения в MATLAB Online с помощью среды разработки App Designer (поддерживаемый только для браузеров Google Chrome).

Среда тестирования приложения: Выполните наводят жест на осях, осях пользовательского интерфейса и фигурах пользовательского интерфейса

matlab.uitest.TestCase.hover метод включает, вы, чтобы выполнить наводите жесты в тестах на осях, осях пользовательского интерфейса и объектах фигуры пользовательского интерфейса. Для получения дополнительной информации смотрите hover страница с описанием.

Среда тестирования приложения: Выполните жест нажатия на осях, осях пользовательского интерфейса и фигурах пользовательского интерфейса

matlab.uitest.TestCase.press метод позволяет вам выполнить жесты нажатия в тестах на осях пользовательского интерфейса и объектах фигуры пользовательского интерфейса. Для получения дополнительной информации смотрите press страница с описанием.

Среда тестирования приложения: Выполните жест типа на объектах средства выбора даты

matlab.uitest.TestCase.type метод позволяет вам выполнить жесты типа на объектах средства выбора даты. Для получения дополнительной информации смотрите type страница с описанием.

Функциональность, удаляемая или измененная

javacomponent функция и JavaFrame свойство будет удалено в будущем релизе

Предупреждает

Недокументированное javacomponent функция и JavaFrame свойство будет удалено в будущем релизе. JavaFrame свойство все еще запускается, но возвращает предупреждение. javacomponent функционируйте все еще запускается, без предупреждения, но начнет предупреждать в предстоящем релизе. Пользователи поощряются обновить свой код, чтобы использовать зарегистрированные альтернативы. Для списка зарегистрированной функциональности можно использовать вместо этого, видеть Java Альтернативы Swing для Приложений MATLAB на mathworks.com.

Поддержка выполнения развернутых веб-приложений в Internet Explorer будет удалена в будущем релизе

Все еще работает

Поддержка выполнения развернутых веб-приложений в Internet Explorer будет удалена в будущем релизе. Используйте текущие версии (рекомендуемого) Google Chrome, Safari, Firefox или Microsoft Edge, чтобы запустить развернутые веб-приложения вместо этого.

Производительность

MATLAB и Simulink запускаются на macOS платформах

Чтобы предотвратить регрессию эффективности при запуске для MATLAB и Simulink на macOS платформах, MathWorks рекомендует использовать Обновление MATLAB R2018b 4 или позже с Обновлением macOS 10.13.6 или позже.

sortrows Функция: Сортировка строк больших матриц быстрее

Для больших матриц можно теперь отсортировать строки быстрее с помощью sortrows функция.

Например, в системе тестирования, этот код запускается быстрее в R2019a, чем в предыдущих релизах.

A = repmat(eye(200),500,1);
sortrows(A)

uitable Функция: Более быстрая эффективность с помощью table массивы

Таблицы, составленные с uitable функционируйте и с данными, заданными как a table массив имеет лучшую эффективность рендеринга и более высокую частоту кадров при прокрутке. Таблицы то использование table массивы представляют до 40% быстрее, и эффективность взаимодействия (как прокрутка) до 75% быстрее. Например, в системе тестирования, этот код представляет таблицы быстрее в R2019a, чем в предыдущих релизах.

rows = 10000;
columns = 25;
data = array2table(randi(30, [rows, columns]));
fig = uifigure;
tbl = uitable(fig, 'Data', data);
Для получения дополнительной информации об использовании table массивы в Table Компоненты пользовательского интерфейса, смотрите Табличные Типы данных массива в Приложениях App Designer.

Инструменты разработки программного обеспечения

checkcode Функция: Получите модифицированную цикломатическую сложность функций

Используйте checkcode функция с 'modcyc' опция, чтобы получить модифицированную цикломатическую сложность каждой функции в файле. Модифицированная цикломатическая сложность для функции равна сложности Маккейба за исключением одного различия. Сложность Маккейба считает каждый отдельный случай в a switch оператор как 1, в то время как изменено цикломатическая сложность считает целое switch оператор как 1. В общем случае switch операторы более просты, чем вложенный if-elseif-else операторы и поэтому, модифицированная цикломатическая сложность часто рассматривается лучшей мерой сложности кода.

Интеграция с системой контроля версий: Синхронизируйте состояние MATLAB Git с внешними клиентами Git

Если вы используете внешний клиент Git, MATLAB теперь слушает внешние изменения в рабочих копиях .git папки и обновления состояние файла в случае необходимости. MATLAB сохраняет состояние файла Git в синхронизации при использовании другого клиента Git, и в текущей папке MATLAB и в проекте.

Среда Модульного тестирования: Отобразите метрики покрытия кода в формате HTML

matlab.unittest.plugins.codecoverage.CoverageReport класс обеспечивает формат отчета покрытия кода HTML, чтобы отобразить метрики покрытия кода. Используйте этот формат с matlab.unittest.plugins.CodeCoveragePlugin представить отчет.

Среда Модульного тестирования: Задайте источники для наборов данных о покрытии кода с runtests

runtests функция позволяет вам задать файлы исходного кода, чтобы включать в отчет покрытия кода. Используйте ReportCoveragefor вход значения имени, чтобы задать файлы или папки, содержащие исходные файлы, чтобы включать в тесты.

Среда Модульного тестирования: runperf собирает больше выборок, чтобы достигнуть его целевого предела погрешности

Максимальное количество по умолчанию демонстрационных измерений это runperf делает, когда рабочие измерения эффективности увеличились до 256. Задайте количество демонстрационных измерений с помощью matlab.perftest.TimeExperiment.limitingSamplingError метод.

Среда Модульного тестирования: Возвратите результаты тестирования производительности как TimeResult массивы

runperf функционируйте теперь возвращает matlab.perftest.TimeResult массив, содержащий результаты заданных тестов производительности. Этот класс выводит из matlab.unittest.measurement.MeasurementResult класс, который является теперь абстрактным классом.

Среда Модульного тестирования: Загрузите ранее сохраненный MeasurementResult объекты как DefaultMeasurementResult

MeasurementResult объекты, сохраненные в предыдущих релизах, загружаются как matlab.unittest.measurement.DefaultMeasurementResult объекты. Этот класс выведен из MeasurementResult класс.

Среда Модульного тестирования: используйте matlab.unittest.fixtures.Fixture.onFailure метод только в подклассах

onFailure метод теперь имеет protected доступ. В предыдущих релизах, onFailure имел public доступ. Это изменение лучшие поддержки использование onFailure произвести дополнительную диагностику в случае отказа во время настройки фиксатора или отключения в классах, выведенных из Fixture.

Среда Модульного тестирования: Сравните таблицы, которые не содержат строк

В предыдущих релизах, для таблиц, которые не имели никаких строк (то есть, который имел первую размерность размера нуля), matlab.unittest.constraints.IsEqualTo ограничение не сравнило переменные столбца таблицы при определении равенства. Теперь IsEqualTo всегда сравнивает размер и тип каждой переменной столбца.

Например, сравнивая эти два табличных сбоя теперь, потому что переменные столбца являются различными типами (double и cell).

tc = matlab.unittest.TestCase.forInteractiveUse;
a = table(zeros(0,2));
b = table({});
tc.verifyEqual(a,b)
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> Path to failure: <Value>.Var1
        --> Classes do not match.
            
            Actual Class:
                double
            Expected Class:
                cell
        
        Actual double:
          0×2 empty double matrix
        Expected cell:
          0×0 empty cell array
    
    Actual Value:
      0×1 empty table
    Expected Value:
      0×1 empty table

Среда Модульного тестирования: Создайте массив тестового набора из тестов в проекте

fromProject метод позволяет вам создать массив тестового набора из файлов в проекте, которые помечены классификацией Тестов. Для получения дополнительной информации смотрите matlab.unittest.TestSuite.fromProject страница с описанием.

Среда Модульного тестирования: Запустите тесты из файлов в использовании проекта runtests или testsuite

Запустите тестовые файлы из проектов с помощью runtests или testsuite функции. IncludeReferenceProjects аргумент пары "имя-значение" позволяет вам включать в файлы тестового набора из проекта, которые помечены классификацией Тестов.

Среда Модульного тестирования: Задайте перечисление многословия как строку или вектор символов

Можно задать аргумент level многословия для следующих методов как строковый скаляр или вектор символов, которые соответствуют matlab.unittest.Verbosity имя элемента перечисления.

Среда тестирования приложения: Выполните наводят жест на осях, осях пользовательского интерфейса и фигурах пользовательского интерфейса

matlab.uitest.TestCase.hover метод включает, вы, чтобы выполнить наводите жесты в тестах на осях, осях пользовательского интерфейса и объектах фигуры пользовательского интерфейса. Для получения дополнительной информации смотрите hover.

Среда тестирования приложения: Выполните жест нажатия на осях, осях пользовательского интерфейса и фигурах пользовательского интерфейса

matlab.uitest.TestCase.press метод позволяет вам выполнить жесты нажатия в тестах на осях пользовательского интерфейса и объектах фигуры пользовательского интерфейса. Для получения дополнительной информации смотрите press.

Среда тестирования приложения: Выполните жест типа на объектах средства выбора даты

matlab.uitest.TestCase.type метод позволяет вам выполнить жесты типа на объектах средства выбора даты. Для получения дополнительной информации смотрите type.

Платформа для мокинга: Создайте макеты для классов, которые используют пользовательские метаклассы

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

Платформа для мокинга: Создайте макеты для классов та валидация свойства использования

Среда модульного тестирования может теперь создать макеты для классов та валидация свойства использования. Для получения информации о валидации свойства см. Проверку значений свойств.

Платформа для мокинга: Задайте который методы дразнить

При создании фиктивного объекта можно управлять, какие методы дразнят в тесте. Используйте createMock метод с MockMethods аргумент пары "имя-значение", чтобы задать метод, чтобы дразнить. Эта функция позволяет тестам дразнить только те методы, которые важны для теста, который может улучшать производительность, когда суперклассы задают много методов.

Функциональность, удаляемая или измененная

matlab.unittest.fixtures.Fixture.onFailure метод имеет защищенный доступ

Изменение поведения

В релизе R2019a, onFailure метод Access атрибут изменяется от public к protected. Это изменение ограничивает использование onFailure к классам, выведенным из Fixture.

matlab.unittest.constraints.IsEqualTo всегда сравнивает переменные столбца таблицы

Изменение поведения

В релизе R2019a, IsEqualTo ограничение всегда сравнивает размер и тип переменных столбца.

Интерфейсы к внешним языкам

C++: Используйте классы C++ от сторонних библиотек в MATLAB

Если у вас есть библиотека, которая экспортирует построения C++, включая классы, функции и перечисления, то можно использовать эту функциональность непосредственно в MATLAB. Для получения дополнительной информации смотрите Библиотеки C++.

Если у вас есть совместно использованная библиотека C, то используйте loadlibrary функция как описано в Библиотеках C.

Python: поддержка Версии 3.7

MATLAB теперь поддерживает CPython 3.7, в дополнение к существующей поддержке 2,7, 3.5, и 3.6.

Для получения дополнительной информации смотрите Установку Поддерживаемая Реализация Python.

Вопросы совместимости

Чтобы запустить движок MATLAB асинхронно с Python 3.7, используйте (background=True) аргумент ключевого слова для matlab.engine.start_matlab. Чтобы вызвать функцию MATLAB асинхронно, используйте background=True аргумент ключевого слова для matlab.engine.MatlabEngine. Не используйте async аргумент для любой функции, поскольку это - ключевое слово в Python 3.7. Также можно использовать background аргумент для всех поддерживаемых версий Python.

Механизм Python: Поддержка типов данных

Механизм Python теперь поддерживает эту функциональность:

  • Преобразуйте строки MATLAB в строки Python

  • Передайте указатели на функцию Python с feval команда

  • Передайте объекты значения MATLAB как непрозрачные объекты

MEX C++: Выполните MEX-функцию из процесса

Запустите MEX-функции C++ в процессах, которые являются отдельными от процесса MATLAB. Вы можете запустить несколько MEX-функций в том же процессе и можете создать несколько процессов, чтобы выполнить MEX-функции. Для получения дополнительной информации смотрите Выполнение Из процесса MEX-функций C++.

MEX-функции: Используйте потребительскую версию библиотеки Boost

Несмотря на то, что MATLAB создает с версией 1.56.0 библиотеки Boost с MATLAB R2018a, можно использовать любую версию библиотеки Boost в MEX-функции.

Массив данных MATLAB: Поддержка упорядоченного по строкам размещения памяти

Создайте matlab::data::Array с размещением памяти данных, заданным как упорядоченный по столбцам (значение по умолчанию) или упорядоченный по строкам. Для получения дополнительной информации смотрите memoryLayout параметр в createArrayFromBuffer. Определить размещение памяти для существующего matlab::data::Array, вызвать getMemoryLayout.

Поддержка компилятора изменяется для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла

ПоддержкаКомпиляторПлатформа

Добавленный

Studio XE 2019 параллели Intel с Microsoft Visual Studio 2015 и 2017 для C, C++ и Фортрана

Windows

Добавленный

Studio XE 2019 параллели Intel для Фортрана

macOS

Чтобы гарантировать постоянную поддержку создания ваших файлов MEX, рассмотрите обновление до другого поддерживаемого компилятора. Для актуального списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы.

Аппаратная поддержка

Пакет поддержки MATLAB для Беспилотников Попугая: Управляйте Мамбо Попугая беспилотник FPV из MATLAB и получите данные о датчике

Пакет поддержки MATLAB для попугая® Беспилотники доступны от релиза R2019a вперед.

Пакет поддержки включает функции, чтобы вести Мамбо Попугая беспилотник FPV путем отправки команд MATLAB, чтобы управлять его направлением, скоростью и ориентацией. Можно также считать данные о навигации рейса, такие как скорость, высота и ориентация с помощью команд MATLAB.

Разверните Смысл функции HAT на оборудовании Raspberry Pi

Они Смысл функции HAT от Пакета поддержки MATLAB для Оборудования Raspberry Pi улучшены, чтобы сгенерировать код: sensehat, readHumidity, readPressure, readTemperature, readAngularVelocity, readAcceleration, readMagneticField, readJoystick, displayImage, writePixel, и clearLEDMatrix. Можно теперь развернуть эти функции на оборудовании.

Функциональность изменена или удалена

i2cdev и функции spidev будут удалены в будущем релизе

Предупреждает

Используйте device вместо i2cdev и spidev соединяться с I2C или устройствами SPI на оборудовании Arduino.

Свойство Pins объекта сервомотора будет удалено в будущем релизе

Предупреждает

Используйте свойство Pin вместо Pins получить ПИН-код оборудования Arduino и Моторного Щита Adafruit V2 для оборудования Arduino, с которым соединяется сервопривод. Для получения дополнительной информации смотрите Связь с сервоприводом на Arduino и Связь с сервоприводом на Моторном Щите Adafruit V2.

Класс arduinoio.LibraryBase будет удален в будущем релизе

Предупреждает

Используйте класс matlabshared.addon.LibraryBase вместо arduinoio.LibraryBase для получения библиотек дополнения Arduino.

Поддержка MATLAB Щита Adafruit Bluefruit EZ-Link и Программиста будет удалена в будущем релизе

Предупреждает

Поддержка Щита Adafruit Bluefruit EZ-Link и Программиста будет удалена в будущем релизе

Поддержка MATLAB аппаратных плат Arduino была удалена

Ошибки

Эти аппаратные платы Arduino больше не поддерживаются:

  • Arduino Fio

  • Мини-Arduino

  • Arduino Pro

R2018b

Новые возможности, исправления ошибок, Вопросы совместимости

Рабочий стол

Live Editor: Организуйте live скрипты с помощью дополнительного ​​​ стилей подзаголовка

Отформатируйте текст в live скриптах с помощью нового Heading 2 и стилей текста Heading 3. Чтобы применить стиль текста, перейдите к вкладке Live Editor и в разделе Text, выберите любую из опций под выпадающим Text Style.

Для получения дополнительной информации смотрите Файлы формата в Live Editor.

Live Editor: Перейдите в live скрипте с помощью внутренних гиперссылок ​​​

Используйте внутренние гиперссылки, чтобы перейти к местоположениям в live скрипте. Чтобы вставить внутреннюю гиперссылку, перейдите к вкладке Insert и нажмите Hyperlink. Введите свой текст отображения, выберите Internal Hyperlink, и затем щелкните где угодно в документе, чтобы выбрать цель.

Live Editor: Отфильтруйте таблицу выход в интерактивном режиме, и затем добавьте сгенерированный код в live скрипт ​​

В Live Editor можно отфильтровать табличные данные в интерактивном режиме. Чтобы отфильтровать данные в таблице, кликните по стрелке вниз справа от имени переменной в таблице и выборе из доступных опций фильтрации.

Чтобы добавить сгенерированный код в ваш live скрипт, используйте кнопку Update Code ниже таблицы. Добавление сгенерированного кода к вашему live скрипту гарантирует, что сортировка воспроизводится в следующий раз, когда вы запускаете live скрипт.

Live Editor: Создайте новые и открытые существующие live скрипты быстрее ​​​

Новые и существующие live скрипты открываются быстрее, чем в предыдущих релизах.

Live Editor: Измените случай текста или кода

В Live Editor можно изменить случай выделенного текста или кода от всего верхнего регистра до нижнего регистра, или наоборот. Чтобы изменить случай, выберите текст, щелкните правой кнопкой и выберите Change Case. Также можно нажать Ctrl+Shift+A. Если текст содержит и прописной и строчный текст, MATLAB изменяет случай в весь верхний регистр.

В MATLAB Online эта функция также доступна в Редакторе.

Инструмент сравнения: Объедините две версии live скрипта или функции ​​

При сравнении live скриптов или live функций с помощью Инструмента Сравнения, можно объединить изменения от одного файла до другого. Слияние изменений может быть полезным при решении конфликтов между различными версиями файла.

Чтобы объединить два live скрипта или функции, перейдите к вкладке Live Editor и в разделе File, нажмите Compare. Новое окно открывает и отображает эти два файла рядом друг с другом. Нажмите кнопку Merge Mode, чтобы запустить слияние.

Используйте кнопку, чтобы заменить содержимое на правой панели с содержимым от левой панели. Правая панель содержит объединенный результат. Чтобы сохранить результат, нажмите Save Result.

Для получения дополнительной информации смотрите, Выдерживают сравнение и Слияние Живой Код.

Add-On Manager: Установите и управляйте несколькими версиями пользовательского тулбокса ​

Можно установить несколько версий пользовательского тулбокса в Add-On Manager. Наличие нескольких версий пользовательского установленного тулбокса полезно, если вы регулярно используете несколько версий и переключателя между ними.

Чтобы установить дополнительную версию пользовательского тулбокса, не перезаписывая ни одной из других установленных версий, используйте matlab.addons.install функционируйте и задайте 'add' как опция инсталляции. Например, matlab.addons.install('C:\myAddons\GUI Layout Toolbox 2.1.2.mltbx','add').

Чтобы выбрать, какая версия тулбокса включена, перейдите к вкладке Home и выберите Add-Ons> Manage Add-Ons. Нажмите кнопку справа от тулбокса, который вы хотите. Затем в меню Versions, выберите из доступных версий. Выбор версии включает ту версию и отключает все другие установленные версии тулбокса. Также можно использовать matlab.addons.enableAddon функция.

Add-On Manager: Сохраните дополнения в новое местоположение по умолчанию

MATLAB теперь сохраняет дополнения в новое местоположение по умолчанию. Местоположение по умолчанию специфично для платформы.

  • Платформы Windows — C:\Users\usernameДополнения \AppData\Roaming\MathWorks\MATLAB.

  • Платформы Linux — ~/MATLAB Add-Ons.

  • Платформы Mac~/Library/Application Support/MathWorks/MATLAB Add-Ons.

Для получения дополнительной информации смотрите, Управляют Вашими Дополнениями.

Документация: Просмотрите документацию MATLAB на испанском языке

Подмножество документации MATLAB на испанском языке имеется в сети к лицензированным пользователям MATLAB. Для получения дополнительной информации см. Переведенную Документацию.

Язык и программирование

string Массивы: используйте string массивы в MATLAB, Simulink и Stateflow

Задайте текст как строковые массивы где вы ранее заданный текст как векторы символов или массивы ячеек из символьных векторов. Используйте строковые массивы для данных, свойств и аргументов пары "имя-значение". Задайте строки с помощью двойных кавычек, как вы задаете векторы символов с помощью одинарных кавычек.

Для получения дополнительной информации о строковых массивах см. Символы и строки. Для инструкций по принятию строк в вашем собственном коде смотрите Обновление Ваш Код, чтобы Принять Строки.

MathWorks поощряет использование строковых массивов. Для обратной совместимости Продукты Mathworks продолжат поддерживать использование векторов символов и массивов ячеек из символьных векторов.

convertContainedStringsToChars Функция: Преобразуйте строковые массивы на любом уровне массива ячеек или структуры

Заставить ваш существующий код принять строковые массивы, или массивы ячеек и массивы структур, которые содержат строки, использование convertContainedStringsToChars функция в целом списке входных параметров. Для получения дополнительной информации о принятии строк в вашем собственном коде смотрите Обновление Ваш Код, чтобы Принять Строки.

Перечисления: Улучшенная производительность операций присвоения с перечислениями

Когда названо массивами перечисления, выполнение операции присвоения функционирует такой как ismember быстрее.

Документы веб-сервисов WSDL: необходимое обновление инструментов

С MATLAB R2018b, поддерживаемых версий Oracle® Java JDK и Apache программы CXF, которые требуются, чтобы использовать веб-сервис WSDL в MATLAB, изменился.

Для большей информации смотрите Настроенные Инструменты WSDL.

Вопросы совместимости

Загрузите и установите программное обеспечение JDK из Java веб-страница Загрузок SE https://www.oracle.com/technetwork/java/javase/downloads. Выберите Java SE Development Kit 8.

Загрузите релиз последней версии 3.2 инструмента Apache CXF от https://cxf.apache.org / загрузка.

Функциональность, удаляемая или измененная

validateattributes проверяйте на 'finite' и 'nonnan' атрибуты

Изменение поведения в будущем релизе

В validateattributes функция, 'finite' и 'nonnan' атрибуты больше не требуют, чтобы вход передал isnumeric проверять.

Папки под названием resources не будет позволен на пути MATLAB

Все еще работает

В будущих релизах, resources папка станет зарезервированной папкой и папками с именем resources не будет позволен на пути MATLAB. В настоящее время эти папки позволены на пути MATLAB.

Если папка под названием resources задан при вызове addpath, userpath, или pathdef функции, MATLAB возвратит предупреждение, и папка не будет не добавлена к пути.

Переименуйте все папки на пути под названием resources.

Математика

boundaryshape Функция: создайте polyshape объект от 2D триангуляции

Теперь можно использовать boundaryshape функционируйте, чтобы преобразовать 2D triangulation возразите против a polyshape объект.

polyshape Объекты: Задайте, когда сохранить коллинеарные точки при создании polyshape

При создании a polyshape объект, коллинеарные точки удалены по умолчанию. Эти функции теперь предлагают опцию, чтобы сохранить коллинеарные точки как вершины возвращенного polyshape использование пары "имя-значение" 'KeepCollinearPoints'.

RandStream Объекты: Сгенерируйте использование случайных чисел алгоритмы Philox и Threefry

При создании случайного потока с RandStream, теперь можно использовать алгоритмы генерации случайных чисел Threefry и Philox.

GraphPlot Объект: Настройте узел и метки ребра со свойствами шрифта

GraphPlot объекты имеют несколько новых свойств включить индивидуальную настройку узла и меток ребра в графиках направленных или неориентированных графов.

Свойство

Описание

NodeLabelColor

EdgeLabelColor

Цвет фона метки

NodeFontSize

EdgeFontSize

Размер шрифта для метки

NodeFontName

EdgeFontName

Шрифт для метки

NodeFontAngle

EdgeFontAngle

Нормальный или курсивный текст

NodeFontWeight

EdgeFontWeight

Обычный или полужирный текст

Interpreter

Интерпретация текстовых символов в метках (ни один, tex, или LaTeX)

ArrowPosition

Положение стрелы на ориентированных ребрах

Вопросы совместимости

Новый GraphPlot свойство Interpreter имеет значение по умолчанию 'tex'. В предыдущих релизах, вершине графика и ребре помечает отображаемый текст как буквенные символы вместо того, чтобы интерпретировать текст, использующий синтаксис TeX. Если вы не хотите узел, и ребро помечает, чтобы использовать синтаксис TeX, то установленный Interpreter свойство к 'none'.

sinpi и cospi Функции: Вычислите синус и косинус множителей π

sinpi и cospi функции вычисляют значения sin (π x) и because(π x). Ответы, предоставленные этими функциями, более точны, чем ответы, предоставленные sin(pi*x) или cos(pi*x) потому что они не вычисляют pi*x явным образом. Это соглашение компенсирует ошибку округления в значении с плавающей точкой pi.

Графика

Взаимодействия осей: Исследуйте данные с панорамированием, изменением масштаба, всплывающими подсказками, и 3-D вращение включило по умолчанию

В интерактивном режиме исследуйте свои данные с помощью взаимодействий осей, которые включены по умолчанию. Например, можно использовать колесико прокрутки, чтобы масштабировать в данные или навести на точку данных, чтобы видеть всплывающую подсказку. Кроме того, можно перетащить оси, чтобы панорамировать оси (2D представление) или вращать оси (3-D представление). Для получения дополнительной информации смотрите, В интерактивном режиме Исследуют Отображенные на графике Данные.

Вопросы совместимости

В предыдущих релизах ни одно из взаимодействий не было включено по умолчанию. Чтобы управлять, если взаимодействия осей включены по умолчанию, используйте disableDefaultInteractivity и enableDefaultInteractivity функции.

Панель инструментов осей: Доступ и настраивает панель инструментов исследования данных для каждого Объекта осей

Оси имеют панель инструментов, которая появляется выше верхнего правого угла для быстрого доступа к инструментам исследования данных. Кнопки, доступные на панели инструментов, зависят от содержимого осей. Панель инструментов обычно включает кнопки, чтобы нарисовать данные кистью, добавить всплывающие подсказки, вращать оси (только 3-D оси), панорамирование или масштабировать данные и восстановить представление.

Можно настроить кнопки, доступные на панели инструментов с помощью axtoolbar и axtoolbarbtn функции.

Вопросы совместимости

В предыдущих релизах кнопки, которые теперь появляются на панели инструментов осей, появились на панели инструментов фигуры вместо этого. Можно выключить панель инструментов осей путем установки Visible свойство AxesToolbar возразите против 'off'.

ax = gca;
ax.Toolbar.Visible = 'off';
Можно восстановить кнопки на панели инструментов фигуры с помощью addToolbarExplorationButtons команда.

Географические Графики: Создайте линию, рассеяние и графики плотности точки на интерактивных картах и свойствах элементов управления географические оси

Создайте линию, рассеяние и графики плотности точки на интерактивных картах и свойствах элементов управления географические оси. Используйте geoplot, geoscatter, и geodensityplot функции, чтобы создать эти графики. geolimits функционируйте теперь работает с любым из этих географических графиков, в дополнение к географическим пузырьковым диаграммам. Чтобы изменить основную карту, используемую любым из этих географических графиков или графиков, используйте новое geobasemap функция.

stackedplot Функция: Постройте переменные таблицы или расписания для сравнения с помощью общей оси X

Постройте переменные таблицы или расписания. Упрощать визуальное сравнение, stackedplot функция обеспечивает общую ось X и отдельные оси Y для переменных.

scatterhistogram Функция: Визуализируйте сгруппированные данные как график рассеивания с крайними гистограммами

Чтобы создать график рассеивания с крайними гистограммами, используйте scatterhistogram функция. Чтобы сгруппировать данные, можно использовать любого 'GroupVariable' аргумент пары "имя-значение" с табличными данными или 'GroupData' аргумент пары "имя-значение" с массивами.

sgtitle Функция: Создайте заголовок для сетки подграфиков

Можно добавить полный заголовок на сетку подграфиков, в дополнение к добавлению заголовка на каждый отдельный подграфик. Чтобы добавить полный заголовок, используйте sgtitle функция.

xline и yline Функции: Добавьте вертикальные или горизонтальные линии на график

Чтобы добавить вертикальные или горизонтальные линии на график, используйте xline или yline функции, соответственно. Например, xline(3) строит вертикальный график в x = 3.

imtile Функция: Объедините системы координат повторного изображения в одно прямоугольное мозаичное изображение

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

Всплывающие подсказки: Используйте TeX или ПРОПИТАЙТЕ ЛАТЕКСОМ разметку во всплывающих подсказках с улучшенным общим видом

Всплывающие подсказки имеют улучшенный общий вид с новыми цветами текста.

Кроме того, всплывающие подсказки теперь отображают текстовые символы, использующие синтаксис TeX по умолчанию. Управляйте интерпретацией текстовых символов с помощью Interpreter свойство объекта режима Data Cursor. Установите значение свойства на 'tex' для разметки TeX (значение по умолчанию), 'latex' для разметки LATEX или 'none' для буквенных символов.

d = datacursormode;
d.Interpreter = 'latex';

Вопросы совместимости

В предыдущих релизах, отображаемый текст всплывающих подсказок как буквенные символы вместо того, чтобы интерпретировать текст, использующий синтаксис TeX. Если вы не хотите, чтобы всплывающие подсказки использовали синтаксис TeX, то установленный Interpreter свойство к 'none'.

Функциональность, удаляемая или измененная

legend функция интерпретирует аргумент как имя свойства, когда свойство существует

Изменение поведения

Запуск в R2018b, если вы передаете аргумент legend функция, которая совпадает с именем свойства легенды, функция, интерпретирует аргумент как имя пары "имя-значение". В предыдущих релизах, legend функционируйте распознанные пары "имя-значение" только, когда первый аргумент был массивом ячеек.

В результате этого изменения, в большинстве случаев, является ненужным задать первый аргумент как массив ячеек при использовании пар "имя-значение". Однако, если вы хотите метку в своей легенде, которая совпадает с именем свойства легенды, такого как Position или NumColumns, затем необходимо задать все метки в массиве ячеек. В противном случае, legend функция интерпретирует аргумент как пару "имя-значение" вместо метки.

Описание Рекомендуемый код

Если вы хотите метку в своей легенде, которая совпадает с именем свойства легенды, такого как 'NumColumns', затем задайте все метки в массиве ячеек. Если вы задаете 'NumColumns' за пределами массива ячеек, legend функция интерпретирует его как пару "имя-значение".

legend({'Label1','NumColumns','Label3','Label4'},'NumColumns',2)

Если ни одна из ваших марок не совпадает с именем свойства легенды, то вы не должны использовать массив ячеек вокруг меток.
legend('Label1','Label2','Label2')

alpha и shading установите оба FaceColor и FaceAlpha свойства

Изменение поведения

При обновлении поверхности и объектов закрашенной фигуры, alpha и shading функции иногда набор оба FaceColor и FaceAlpha свойства. Этот набор функций оба свойства в случаях, где установка всего одного свойства приводит к проблеме рендеринга. Никакие обновления вашего кода не требуются.

В предыдущих релизах, alpha функционируйте устанавливает только FaceAlpha свойство. Точно так же shading функционируйте устанавливает только FaceColor свойство.

Импорт и экспорт данных

Инструмент для импорта: Сгенерируйте улучшенный код при импорте из электронных таблиц

Import Tool теперь предлагает функциональность генерации улучшенного кода для импорта электронных таблиц через платформы. Например, можно импортировать datetimes на Mac и Linux и сгенерировать код, который легко считать. Для получения дополнительной информации смотрите, что Данные об электронной таблице Чтения Используют Import Tool.

Веб-Данные: Читайте из веб-источников данных как Amazon Web Services и Устройство хранения данных Блоба Azure с помощью readtabledetectImportOptionsSpreadsheetDatastoreimread, и imfinfo

Можно получить доступ к табличным данным и изображениям из файлов, хранивших в удаленных местоположениях (Amazon S3, Windows Azure Blob Service и HDFS) использующий эти функции:

При чтении данных из удаленных местоположений необходимо задать полный путь с помощью универсального локатора ресурса (URL). Например, считайте csv файл от облака Amazon S3:

T = readtable('s3://bucketname/path_to_file/my_text_file.csv');
Для получения дополнительной информации о подготовке MATLAB, чтобы получить доступ к вашему сервису оперативного хранения, смотрите работу с Удаленными данными.

write Функция: Напишите длинные массивы во множестве форматов к локальным или удаленным районам

Функциональность write расширен, чтобы поддержать дополнительные форматы и места хранения:

  • Выходные форматы включают .txt, .csv, .xlsИ т.д.

  • Пары "имя-значение", чтобы управлять параметрами формата, такими как WriteVariableNames и Delimiter.

  • Расширенная поддержка записи .seq и .mat форматы ко всем поддерживаемым файловым системам.

  • Запишите данные к удаленным местоположениям в Amazon S3 или Windows Azure Blob Storage (WASBS).

stlread и stlwrite Функции: Читайте из и запишите в STL (Стереолитография) файлы для триангуляций

stlread функция позволяет вам считать информации триангуляции из файла STL, чтобы создать a triangulation объект. Также можно записать a triangulation возразите или 2D delaunayTriangulation возразите против бинарного файла STL с stlwrite.

TabularTextDatastore Объект: Импортируйте данные, содержащие даты и времена от неанглийских локалей

TabularTextDatastore возразите теперь поддерживает импорт данных о дате и времени из неанглийских локалей. Например, чтобы создать datastore для чтения файлов, которые содержат немецкие данные о дате и времени, установите DatetimeLocale параметр к 'de_DE'.

ds = tabularTextDatastore('myDataFile.csv','DatetimeLocale','de_DE')

readtable и writetable Функции: Считайте или запишите файлы электронной таблицы, не инициируя Microsoft Excel для Windows на платформах Windows

На платформах Windows можно выбрать not to open an instance of Microsoft Excel при чтении или записывании данные из файлов электронной таблицы. Установите 'UseExcel' параметр к одному из этих значений:

  • true — Откройте экземпляр Microsoft Excel, чтобы считать (или запись) файл. Эта установка является значением по умолчанию для систем Windows с установленным Excel.

  • false — Не открывайте экземпляр Microsoft Excel, чтобы считать (или запись) файл. Используя эту установку может заставить данные быть записанными по-другому для файлов с живыми обновлениями как оценка формулы или плагины.

Для получения дополнительной информации смотрите readtable и writetable.

readtable Функция: Управляйте импортом пустых полей с помощью настроек импорта

Можно управлять пустыми полями в табличных данных при помощи readtable наряду с настройками импорта. Используйте EmptyFieldRule из настроек импорта возражают, чтобы задать как readtable указатели пустые поля. Для получения дополнительной информации смотрите setvaropts.

Научные Библиотеки Формата файла: Библиотека CFITSIO обновила, чтобы присвоить версию 3.420

Библиотека CFITSIO обновляется, чтобы присвоить версию 3.420.

Функциональность, удаляемая или измененная

Обработка Import Tool дат и времен электронной таблицы и полей, которые пусты, неимпортируемы, или ошибочное порождение

Изменение поведения

Начиная в R2018b, приложение Import Tool улучшило функциональность для того, чтобы импортировать данные из файлов электронной таблицы. Изменения в импортированных данных минимальны и ограничиваются редкими случаями:

  • Пустые или неимпортируемые ячейки в электронных таблицах:

    • Значение, которое вы используете, чтобы заменить пустые ячейки и неимпортируемые ячейки, должно быть тем же самым. Ранее Import Tool допускал различные значения для пустых ячеек и неимпортируемых ячеек.

    • Ранее Import Tool позволял вам задавать целевую строку для ячеек, которые неимпортируемы. Эта функция больше не поддерживается.

  • Данные о дате и времени в электронных таблицах:

    • Импортируйте данные о дате и времени как MATLAB datetime массивы на всех платформах.

    • Импортируйте числа как дату и времена на всех платформах.

    • Импортируйте даты Excel как числа на всех платформах.

  • При выполнении приложения Import Tool в MATLAB на машине Windows больше не отображаются ячейки в электронных таблицах Excel с состоянием ошибки.

Basic параметр readtable функция (Не Рекомендуемый)

Все еще работает

Basic параметр readtable функция не рекомендуется. Используйте название параметра UseExcel вместо этого. Нет никаких планов удалить Basic параметр в это время.

UseExcel параметр readtable и writetable функции

Изменение поведения в будущем релизе

В будущих релизах, значении по умолчанию UseExcel параметр будет изменен на false. Текущая настройка по умолчанию для UseExcel в системах Windows с установленным Excel true.

Эта таблица показывает типичное использование readtable и как обновить ваш код, чтобы сохранить текущее поведение в будущих релизах.

Код

(R2018b и ранее)

Используйте это вместо этого

(Будущие релизы)

Поведение

T = readtable(filename)
T = readtable(filename,'UseExcel',true)

Запустите экземпляр Microsoft Excel при чтении файла.

Для получения дополнительной информации смотрите readtable и writetable.

Выведите от audioread функция для файлов WAVE A-закона или mu-закона

Изменение поведения

При чтении в режиме работы в собственной системе команд, audioread функция возвращает данные из файлов WAVE A-закона или mu-закона как int16.

Ранее audioread возвращенные данные из файлов WAVE A-закона или mu-закона как int8.

Transparency выход от imread функция

Изменение поведения

imread функция возвращает информацию о прозрачности для индексируемых изображений PNG. Например, чтение png файла возвращает непустой массив прозрачности alpha:

[img,map,alpha] = imread('myIndexedImage.png');
whos alpha
Name        Size             Bytes  Class     Attributes

  alpha      50x120            48000  double 
Ранее imread функция не возвратила информацию о прозрачности для индексируемых изображений PNG. Например, ранее чтение png файла возвратило пустую прозрачность выход alpha:
[img,map,alpha] = imread('myIndexedImage.png');
whos alpha
Name       Size            Bytes  Class     Attributes

  alpha      0x0                 0  double   

Анализ данных

Векторный Аргумент Размерности: Работайте с несколькими размерностями за один раз для выбранных функций сокращения

Эти функции теперь принимают, что векторный аргумент размерности задает несколько операционных размерностей за один раз, а также опцию 'all' задавать все размерности массива.

Например, sum(A,'all') суммы все элементы в матричном A, и эквивалентно sum(A,[1 2]).

grouptransform Функция: Преобразуйте данные о таблице или расписании группами

Можно использовать grouptransform функция, чтобы выполнить расчеты группы, такие как нормализация или заполняющий недостающие данные по переменным таблицы и расписания. Например, g = grouptransform(T,'School','norm') нормирует данные в таблице T школой с помощью векторной 2-нормы.

groupsummary Функция: Выполните расчеты сводных данных группы на матрицах

Теперь можно сгруппироваться строками матрицы, чтобы выполнить итоговые расчеты с помощью groupsummary функция.

tall Массивы: Напишите пользовательские алгоритмы, чтобы работать с длинными массивами

Функции matlab.tall.transform и matlab.tall.reduce позвольте вам написать пользовательские алгоритмы, чтобы выполниться на длинных массивах. Эти функции позволяют вам реализовать область значений parallelizable алгоритмов. matlab.tall.transform применяет одну функцию к каждому блоку длинного массива, в то время как matlab.tall.reduce похоже на MapReduce, где две функции применяются к длинному массиву с выходом первой функции, питаемой, как введено вторую функцию.

matlab.tall.transform и matlab.tall.reduce обеспечьте гибкость, чтобы реализовать функции, которые в противном случае в настоящее время не поддерживают длинные массивы. Для получения дополнительной информации смотрите, Разрабатывают Пользовательские Алгоритмы Длинного массива.

tall Массивы: Работайте с длинными массивами с большим количеством функций, включая conv2, wordcloud, и groupsummary

Функции, перечисленные в этой таблице, добавляют поддержку длинных массивов как входные параметры. Для полного списка поддерживаемых функций введите methods tall. Для получения дополнительной информации об использовании и ограничениях, смотрите раздел Extended Capabilities в нижней части страниц с описанием.

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

Функции

Добавленная поддержка

join

Присоединение двух высоких входных параметров (длинные таблицы и/или длинные расписания) теперь поддерживается.

Ранее одни из входных параметров требовались, чтобы быть таблицей в оперативной памяти или расписанием.

sort

sortrows

topkrows

unique

Эти функции теперь поддерживают несколько выходных аргументов. Дополнительные выходные параметры возвращают индексы, которые относятся к операции или которые описывают местоположение интересных элементов.

Ранее эти функции не поддерживали несколько выходных параметров для длинных массивов.

mean

Вычисление среднего значения значений datetime теперь поддерживается.

Ранее эта функция не поддерживала длинные массивы с базовым типом данных datetime.

rmoutliers Функция: Удалите выбросы в массиве, таблице или расписании

rmoutliers функция обнаруживает и удаляет данные о выбросе в массиве, таблице или расписании.

islocalmin и islocalmax Функции: Укажите диапазон данных для расчета выдающегося положения

'ProminenceWindow' пара "имя-значение" для islocalmin и islocalmax функции позволяют вам задать локальное окружение о каждом элементе во входных данных при вычислении соответствующего выдающегося положения.

Таблица и Метаданные Расписания: Сохраните пользовательские метаданные для каждой переменной

Можно сохранить пользовательские метаданные для переменных таблицы или расписания с помощью его Properties.CustomProperties объект. Для получения дополнительной информации смотрите Пользовательские разделы Метаданных table и timetable.

timetable Тип данных: Сохраните память при хранении времен строки шагами постоянного времени

Если вы создаете расписание с шагами постоянного времени, то оно хранит времена строки с помощью меньшей памяти, чем в предыдущих релизах. Можно создать обычное расписание с помощью array2timetable, retime, synchronize, table2timetable, или timetable функции.

Расписание хранит время начала, временной шаг и частоту дискретизации как свойства. Для получения дополнительной информации смотрите раздел Row Times Metadata timetable.

timerange Функция: Задайте модуль времени, чтобы задать область значений времени

Когда вы задаете начало и конец области значений времени с помощью значений datetime, также можно задать дату, или компонент времени раньше задавал конечные точки. Например, S = timerange('2018-9-30','quarters') создает область значений времени, охватывающую все даты в третьем квартале 2 018, с 30 сентября находится в третьем квартале. Для получения дополнительной информации смотрите timerange.

convertvars Функция: Преобразуйте переменные таблицы или расписания в заданный тип данных

Можно задать переменные таблицы или расписания, и преобразовать их в другой тип данных, с помощью convertvars функция.

table, timetable, и addvars Функции: Используйте одинарные кавычки для входных имен, не дважды заключенные в кавычки строки

При создании или обновлении таблицы или расписания с помощью tableрасписание, или addvars функции, используйте одинарные кавычки для входных имен (таких как 'Size'Имена переменных, 'After', или 'TimeStep') избегать беспорядка с вводами переменной. Переменные и входные значения могут использовать дважды заключенные в кавычки строки. Например:

T = table("some text",'VariableNames',["X"]);

Функциональность, удаляемая или измененная

'SamplingRate' не рекомендуется

Все еще работает

'SamplingRate' аргумент пары "имя-значение" не рекомендуется. Используйте 'SampleRate' вместо этого. Соответствующее свойство расписания также называют SampleRate.

Для обратной совместимости все еще можно задать 'SamplingRate' как имя пары "имя-значение". Однако значение присвоено SampleRate свойство.

Это изменение в поведении влияет на функции расписания, показанные в таблице.

Изменение генератора случайных чисел по умолчанию для tallrng

Изменение поведения в будущем релизе

Начиная в R2019a, генераторе случайных чисел по умолчанию для tallrng превратится в threefry. Этот генератор предлагает улучшения эффективности для параллельных вычислений по текущему значению по умолчанию. В релизах до R2018b, генератора случайных чисел по умолчанию для tallrng combRecursive.

С различным генератором по умолчанию MATLAB сгенерирует различные последовательности случайных чисел по умолчанию в контексте длинных массивов. Однако статистика этих вычислений останется незатронутой. Поэтому необходимо обновить любой код, который использует определенные сгенерированные случайные числа. Однако большинство вычислений на случайных числах должно быть незатронутым.

Чтобы установить генератор на настройки, используемые по умолчанию в R2018b и более ранних релизах, используйте команду:

tallrng(0,'combRecursive')

Создание приложений

Дизайнер приложений: Добавьте и сконфигурируйте компоненты выбора даты на холсте App Designer

Перетащите мышью компоненты средства выбора даты от Component Library на холст.

Дизайнер приложений: Объединенный инспектор свойств в Режиме конструктора и Представлении кода

Панель Component Properties в Режиме конструктора теперь обеспечивает полный список свойств и тех же интерактивных способов управления, как Представление кода делает.

Дизайнер приложений: Расширьте и сверните разделы кода в Представлении кода

App Designer предусматривает код, сворачивающий возможности в Представлении кода. Можно расширить разделы кода, что вы продолжаете работать и сворачиваете другие разделы, чтобы переместиться по вашему коду более легко.

Дизайнер приложений: Экспортируйте приложения как файлы кода

Экспортируйте приложения, создаваемые в App Designer как (.m) программные файлы. Выберите Save> Export to .m File в панели инструментов App Designer.

При экспорте приложения, когда программный файл позволяет вам изменить его за пределами App Designer. Однако нет никакой опции для импорта ваших изменений назад в App Designer.

Дизайнер приложений: Найдите ошибки и предупреждения в вашем коде со строкой сообщений Code Analyzer

App Designer теперь обеспечивает ту же систему обмена сообщениями Анализатора кода, как редактор MATLAB делает.

Дизайнер приложений: приложения Программы быстрее с помощью предложений улучшенного кода и завершений

Когда вы кодируете свое приложение, App Designer отображает те же контекстные подсказки для аргументов, значений свойств и синтаксисов, как Live Editor делает.

Дизайнер приложений: настройки Control App Designer Code View с помощью настроек MATLAB

Управляйте следующими настройками для Представления кода App Designer настройками установки MATLAB:

  • Подсветите текущую линию

  • Покажите номер строки

  • Цвета подсветки синтаксиса MATLAB

Когда вы устанавливаете любую из этих настроек, изменение применяется к редактору MATLAB и App Designer.

uigridlayout Функция: Сконфигурируйте размещения приложения с помощью менеджера по размещению сетки

Используйте uigridlayout функция, чтобы создать менеджеров по размещению сетки в ваших приложениях. Когда вы используете менеджера по размещению сетки, вы располагаете компоненты пользовательского интерфейса вдоль строк и столбцов невидимой сетки, которая охватывает окно целого приложения или контейнер в окне. Используя строки и столбцы, чтобы расположить компоненты легче справиться, чем установка пиксельных значений в Position векторы. Для приложений изменяемого размера размещения сетки обеспечивают больше гибкости, чем поведение при автоматическом изменении размера в App Designer, и они легче к коду, чем SizeChangedFcn коллбэки. Для получения дополнительной информации смотрите Используя менеджеров по Размещению Сетки.

Менеджеры по размещению сетки доступно только в приложениях, созданных с uifigure функция.

Прокрутка Контейнеров: Позвольте прокрутить для фигуры, панели, вкладки и контейнеров группы кнопок

Позвольте прокрутить в фигуре или любом дочернем контейнере путем установки Scrollable свойство к 'on'. Чтобы прокрутить к местоположению в контейнере программно, вызовите scroll функция.

Прокрутка работает только в приложениях App Designer, в цифрах созданный с uifigure функция, или в дочерних контейнерах в тех фигурах.

Взаимодействия фигуры: Создайте приложения с пользовательскими взаимодействиями мыши и клавиатуры с помощью фигур, созданных с uifigure функция

Создайте приложения, которые отвечают на пользовательские взаимодействия мыши и клавиатуры. Следующие свойства доступны в App Designer и в цифрах созданный с uifigure функция.

КатегорияСвойства
Изобразите данныеSelectionTypeCurrentPoint , CurrentCharacter
Коллбэки мышиButtonDownFcnWindowButtonDownFcn WindowButtonUpFcn WindowButtonMotionFcn WindowScrollWheelFcn
Коллбэки клавиатуры

KeyPressFcnKeyReleaseFcn WindowKeyPressFcn WindowKeyReleaseFcn

Фигуры, созданные с figure функция продолжает поддерживать эти свойства, как они имеют в прошлом.

Графическая Поддержка: Интегрируйте графики в приложение с помощью axespolaraxes, и geoaxes функции

Отобразите больше типов графиков в приложениях App Designer и в цифрах созданный с uifigure функция. Расширенный список графиков включает подграфики, графики в полярной системе координат и географические графики. Для получения дополнительной информации смотрите Отображающуюся Графику в App Designer.

Подсказки: Создайте пользовательские подсказки для компонентов пользовательского интерфейса в приложениях

Установите Tooltip свойство на компоненте пользовательского интерфейса, чтобы отобразить подсказку, когда пользователь наводит мышь на компонент во время выполнения. Подсказки отображаются, даже когда компоненты отключены.

Tooltip свойство доступно для компонентов пользовательского интерфейса в приложениях App Designer и в цифрах созданный с uifigure функция.

Если вы создаете приложение с помощью GUIDE или figure функция, используйте Tooltip свойство вместо TooltipString свойство на UIControlТаблица, Tab, PushTool, и ToggleTool Компоненты пользовательского интерфейса. Для получения дополнительной информации смотрите, что свойство TooltipString не рекомендуется.

Развернутые Веб-приложения: Доступ к файлам в развернутых веб-приложениях с помощью uigetfile и uiputfile функции

Вызвать uigetfile в веб-приложении, чтобы позволить пользователям выбрать файлы в своих локальных системах. Пользователи могут выбрать файлы путем отбрасывания их на приложение или путем выбора их в файловом браузере.

Вызвать uiputfile позволять пользователям задать имена файлов для того, чтобы сохранить файлы.

Для получения информации о других новых возможностях развернутых веб-приложений см. Информацию о релизах (MATLAB Compiler).

Запущенные приложения в Браузерах: Используйте большинство современных браузеров, чтобы запустить приложения в MATLAB Online или как развернутые веб-приложения

Запустите приложения в MATLAB Online, и запуск развернул веб-приложения с помощью Safari, Firefox и Microsoft Edge в дополнение к Google Chrome и Internet Explorer. Используйте текущие версии этих браузеров для лучших результатов. Для лучшего общего опыта используйте Google Chrome.

Для получения информации о системных требованиях MATLAB Online см. https://www.mathworks.com/support/requirements/browser-requirements.html.

Для получения информации о других новых возможностях развернутых веб-приложений см. Информацию о релизах (MATLAB Compiler).

uisetcolor Функция: Выберите пользовательские цвета в интерактивном режиме

Выберите пользовательские цвета с помощью улучшенной интерактивной палитры цветов в uisetcolor диалоговое окно. Сделайте свой выбор путем нажатия в цветовом градиенте. Можно выбрать цвета как HSV-значения в дополнение к RGB и шестнадцатеричным опциям, которые были доступны в предыдущих релизах.

Функциональность, удаляемая или измененная

TooltipString свойство не рекомендуется

Все еще работает

TooltipString свойство для UIControlТаблица, Tab, PushTool, и ToggleTool Объекты компонента пользовательского интерфейса не рекомендуются. Используйте новый Tooltip свойство отобразить подсказку вместо этого.

TooltipString свойство больше не перечисляется, когда вы вызываете get, set, или properties функции, чтобы перечислить свойства объекта. Нет никакого плана в это время, чтобы удалить поддержку того, чтобы получить или установить значение TooltipString свойство. Однако частично определение TooltipString имя свойства может произвести ошибки. Чтобы предотвратить ошибку, задайте полное имя TooltipString свойство или использование Tooltip свойство. Оба имени свойства соответствуют тому же значению.

Производительность

Запуск: Увеличенная скорость запуска MATLAB

MATLAB запускается быстрее из-за продолжительных улучшений инфраструктуры и оптимизации.

Механизм выполнения: индексируйте в большие массивы с улучшенной производительностью при использовании оператора двоеточия ​

Теперь индексация двоеточия в большие, числовые массивы быстрее.

Механизм выполнения: Более быстрые вызовы встроенных функций

Вызовы встроенных функций происходят быстрее из-за уменьшаемых издержек.

Live Editor: Создайте новые и открытые существующие live скрипты быстрее ​

Новые и существующие live скрипты открываются быстрее, чем в предыдущих релизах.

Перечисления: Улучшаемая производительность функции множества с перечислениями ​

Когда названо массивами перечисления, выполнение операции присвоения функционирует такой как ismember быстрее.

Создание Приложений: Более быстрые взаимодействия холста в App Designer

Много общих задач в холсте App Designer, таких как копирование, вставка и удаление компонентов на 90% быстрее.

Запущенные приложения: Быстрее запустите время для приложений

Запуститесь время составляет 10% к на 30% быстрее для приложений, созданных в App Designer и приложениях, созданных программно с помощью uifigure функция. Экономия времени становится более примечательной как количество компонентов в ваших увеличениях приложения.

sort Функция: Сортировка матриц и массивов быстрее

sort функция теперь быстрее при сортировке числовых матриц или многомерных массивов.

Аппаратная поддержка

MATLAB Online : Свяжитесь с аппаратной платой Raspberry Pi из MATLAB Online

Теперь можно соединиться с и управлять аппаратными платами Raspberry Pi удаленно от MATLAB Online. Модель B Raspberry Pi 2 и Модель B Raspberry Pi 3 поддерживаются. Установите пакет MATLAB на Raspberry Pi, используйте raspilist в MATLAB Online, чтобы обнаружить доступные платы и использование raspi создать связь. Функции в Пакете поддержки MATLAB для Оборудования Raspberry Pi (кроме openShell и putFile) доступны в MATLAB Online. Для получения дополнительной информации о том, как связаться с вашим Raspberry Pi в MATLAB Online, смотрите Подключение к Аппаратному Совету Raspberry Pi в MATLAB Online (Пакет поддержки MATLAB для Оборудования Raspberry Pi).

Разверните функцию MATLAB на оборудовании Raspberry Pi

От R2018b Пакет поддержки MATLAB для Оборудования Raspberry Pi позволяет вам развернуть свою функцию MATLAB как независимый исполняемый файл на оборудовании Raspberry Pi. Для развертывания функции используйте targetHardware команда, чтобы создать объект настройки Raspberry Pi, и затем использовать deploy команда, чтобы развернуть функцию на оборудовании Raspberry Pi.

Чтобы использовать эту функцию, необходимо установить MATLAB Coder в компьютере.

Чтобы поддержать развертывание, функции Raspberry Pi улучшены, чтобы сгенерировать код. Некоторые функции перечислены здесь. Для получения дополнительной информации смотрите Пакет поддержки MATLAB для Оборудования Raspberry Pi.

Периферийное устройствоФункция
Raspiraspi
СветодиодыwriteLED
Контакты GPIOconfigurePin, readDigitalPin, и writeDigitalPin
Интерфейс I2Ci2cdev, read, write, readRegister, и writeRegister
Интерфейс SPIspidev и writeRead
Последовательный портserialdev, read, и write
Сервомоторservo и writePosition
Linuxsystem
Совет камерыcameraboard, snapshot, record, и stop
Веб-камераwebcam и snapshot
Модуляция ширины импульсаwritePWMFrequency, writePWMDutyCycle, и writePWMVoltage

iOS и Датчики Android: Получите данные о датчике, когда ваше устройство не будет иметь сетевого доступа

Можно получить данные о датчике локально по Android™ или устройству на iOS Apple, с или без сетевого подключения. Этот метод является альтернативным методом сбора данных о датчике вместо того, чтобы передать его потоком с устройства на ваш компьютер рабочий MATLAB. Особенно полезно, если вы хотите собрать данные о датчике, в то время как ваше устройство не имеет сетевого подключения.

Чтобы использовать этот метод получения данных о датчике, вы регистрируете данные о датчике локально на вашем мобильном устройстве с помощью MATLAB Mobile, и затем загружаете файлы на MATLAB Drive, если вы соединяетесь. Чтобы использовать MATLAB Drive, необходимо регистрировать в учетную запись MathWorks. В качестве альтернативы можно передать файлы журнала вручную с помощью USB-кабеля. Если у вас есть данные о датчике по вашему компьютеру рабочий MATLAB, вы используете Пакет поддержки MATLAB для Датчиков Android или Пакет поддержки MATLAB для Датчиков iOS Apple, чтобы просмотреть и анализировать данные.

Для получения дополнительной информации смотрите экраны справки в MATLAB Mobile или Пакете поддержки MATLAB для Датчиков Android или Пакете поддержки MATLAB для документации Датчиков iOS Apple.

iOS и Датчики Android: Загрузите журналы датчика от устройства до MATLAB Drive

Можно получить данные о датчике локально по Android или устройству на iOS Apple, с или без сетевого подключения. Можно затем загрузить файлы на MATLAB Drive, когда вы соединяетесь. Чтобы использовать MATLAB Drive, необходимо регистрировать в учетную запись MathWorks.

У вас могут быть файлы журнала, автоматически загружают на MATLAB Drive, когда вы имеете сетевое подключение или принимаете решение загрузить их с экрана Sensor Logs в MATLAB Mobile любое время. Перейдите к Settings > Configure > MATLAB Drive Upload > Auto Upload, чтобы выбрать вашу настройку.

Для получения дополнительной информации смотрите экраны справки в MATLAB Mobile или Пакете поддержки MATLAB для Датчиков Android или Пакете поддержки MATLAB для документации Датчиков iOS Apple.

Продвинутые возможности разработки программ

Заполнение клавишей Tab: Подтвердите функциональный файл подписи с validateFunctionSignaturesJSON функция

Используйте validateFunctionSignaturesJSON функция, чтобы подтвердить JSON-отформатированный файл, который содержит информацию о ваших функциональных подписях. Для получения дополнительной информации смотрите validateFunctionSignaturesJSON.

MATLAB использует информацию в functionSignatures.json улучшить интерактивные функции, такие как заполнение клавишей Tab и подсказчик функций. Для получения информации о создании functionSignatures.json файл, смотрите, Настраивают Предложения Кода и Завершения.

Заполнение клавишей Tab: синтаксический анализатор JSON для functionSignatures.json обновление

Синтаксический анализатор файла JSON, что использование MATLAB, чтобы считать functionSignatures.json файлы обновляются для R2018b.

Вопросы совместимости

Обновленный синтаксический анализатор имеет более строгую валидацию для файлов JSON. Перед R2018b, functionSignatures.json файл мог иметь синтаксические ошибки, которые были не обнаружены синтаксическим анализатором JSON. Для этих недавно обнаруженных ошибок MATLAB отображает сообщение об ошибке в Командном окне, когда это читает файл.

Откорректируйте любые синтаксические ошибки в файле JSON. Лучшая практика должна подтвердить functionSignatures.json файлы с validateFunctionSignaturesJSON функция.

Java SE 8: Поддержка MATLAB, обеспечивая повышенную безопасность и доступ к новому Java показывает ​​​

Интерфейс Java поддерживает Java версии JRE 1.8.0_152. Для получения дополнительной информации смотрите MATLAB Поддерживаемые Интерфейсы на Другие Языки.

Интерфейс Python: Передайте многомерные числовые или логические массивы между MATLAB и Python

MATLAB автоматические преобразования ввод данных числового и логического массива к Python функционирует к memoryview Python объект. Для получения дополнительной информации см. Передающие Матрицы и Многомерные массивы.

API C++ MEX: Вызовите MATLAB асинхронно из файла MEX с помощью API C++

Используйте асинхронный API C++ MEX, чтобы вызвать функции MATLAB от потоков пользовательского приложения в MEX-функциях. Вызовы MATLAB от потоков пользовательского приложения ставятся в очередь и выполняются в последовательности с другими командами MATLAB. Для получения дополнительной информации смотрите Вызов MATLAB от Отдельных Потоков в MEX-функции.

Среда Модульного тестирования: Запустите тесты параллельно с большим количеством плагинов и более интеллектуального планирования

R2018b включает улучшения в алгоритм планирования параллели среды тестирования. Эти улучшения улучшают общую производительность 'UseParallel' опция в runtests и TestRunner.runInParallel метод.

Кроме того, следующие плагины теперь могут запустить тесты параллельно:

Среда Модульного тестирования: Используйте внешние параметры в параметрированном тесте

Можно ввести вводы переменной в параметрированный тест. Например, можно указать, что тест использует входные данные из файла вместо данных, трудно закодированных в тесте. Чтобы задать внешние параметры, используйте fromData метод matlab.unittest.parameters.Parameter класс. Затем укажите, что ваш параметрированный тест использует внешние параметры с помощью 'ExternalParameters' опция к TestSuite методы создания. TestSuite методы создания включают fromClass, fromFile, fromFolder, fromMethod, fromName, и fromPackage.

Для получения дополнительной информации смотрите Использование Внешние Параметры в Параметрированном Тесте.

Среда Модульного тестирования: Сортировка тестового набора на основе разделяемых фиксаторов

Уменьшать совместно использованную настройку фиксатора и операции отключения, элементы тестового набора вида так, чтобы элементы, которые требуют той же разделяемой настройки фиксатора, были смежны. Чтобы отсортировать существующий тестовый набор, используйте sortByFixtures метод matlab.unittest.TestSuite. testsuite функция автоматически создает тестовый набор, который сортируется на основе разделяемых фиксаторов. Однако, если вы конкатенируете тестовые наборы после создания их, вызовите sortByFixtures метод, чтобы переупорядочить набор. Для получения дополнительной информации смотрите matlab.unittest.TestSuite.sortByFixtures.

Среда Модульного тестирования: Явным образом управляйте выходной деталью отображения, и регистрировал диагностический уровень

От раздела Run Tests в Редакторе можно управлять суммой детали, отображенной для тестового прогона. Например, чтобы отобразить большую часть информации, выберите Verbose из Выходной тестовой опции Детали в соответствии со значком Run Tests. Чтобы подавить выход, выберите None.

Можно управлять, который регистрировал диагностику, отображены путем выбора значения из тестовой опции Уровня Логгирования в соответствии со значком Run Tests. Регистрируемая диагностика является диагностикой, которую вы предоставляете в своем тестовом коде вызов TestCase.log метод. MATLAB сообщает о регистрируемой диагностике на заданном уровне логгирования и ниже. Например, чтобы исключить диагностику, регистрируемую на подробных или многословных уровнях, выберите Concise.

Вы можете также управлять выходной деталью и регистрировали диагностический уровень программно с помощью 'OutputDetail' и 'LoggingLevel' пары "имя-значение" в этих функциях:

matlab.unittest.Verbosity перечисление теперь содержит Verbosity.None член. Используйте этот уровень многословия, чтобы указать на уровень детализации, который не включает информации. Этот член перечисления принят где угодно, который принимает Verbosity значение, за исключением matlab.unittest.TestCase.log и matlab.unittest.fixtures.Fixture.log методы. Эти методы направляют среду, чтобы регистрировать диагностику, не отобразить их.

Вопросы совместимости

Перед R2018b, 'Verbosity' парой "имя-значение" управляют и выходной деталью и регистрируемым диагностическим уровнем и 'ExcludingLoggedDiagnostics' пара "имя-значение" определила, записали ли плагины регистрируемую диагностику.

Эти пары "имя-значение" поддерживаются, но не рекомендуются. Используйте 'LoggingLevel' и 'OutputDetail' вместо этого. Замените экземпляры 'ExcludingLoggedDiagnostics' и 'Verbosity' в следующих плагинах:

Среда Модульного тестирования: Сконфигурируйте уровень детализации выходной диагностики

Чтобы сконфигурировать сумму детали, включенной в поток вывода для диагностики от передачи, сбой и логгирование событий, добавляют DiagnosticsOutputPlugin к TestRunner экземпляр. Например, можно указать, что окно Command Window включает передающую диагностику в многословный уровень детализации, или можно подавить отображение диагностики.

Для получения дополнительной информации смотрите matlab.unittest.plugins.DiagnosticsOutputPlugin класс.

Среда Модульного тестирования: Сравните значения быстрее при использовании ограничений

matlab.unittest.constraints.IsEqualTo класс имеет улучшенную производительность при сравнении равных значений.

Вопросы совместимости

Перед R2018b, IsEqualTo ограничение называется isequal или isequaln определить, были ли фактические и ожидаемые объекты равны. С релизом R2018b ограничение может, иногда, решать, что фактические и ожидаемые объекты равны, не вызывая эти функции. В этих случаях, если сравненные объекты перегружаются isequal или isequaln функции, затем безотносительно специализированного поведения, которое задают эти методы, не используются в сравнении.

Среда тестирования приложения: Программно выберите древовидный узел

choose метод теперь поддерживает программируемый выбор древовидных узлов в ваших тестах приложения. Для получения дополнительной информации смотрите matlab.uitest.TestCase.choose.

Среда для тестирования производительности: Измерьте время выполнения быстрого кода более точно с TestCase.keepMeasuring метод

Тесты производительности, которые выполняются слишком быстро для MATLAB ко времени точно, отфильтрованы с отказом предположения. С keepMeasuring метод, среда тестирования может измерить значительно более быстрый код путем автоматического определения числа раз, чтобы выполнить итерации через код и измерения среднего уровня. Используйте keepMeasuring метод в условии while цикл. Для получения дополнительной информации смотрите matlab.perftest.TestCase.keepMeasuring и мера, быстро выполняющая тестовый код.

Платформа для мокинга: Вызовите функцию на дразнивший вызов метода

Можно указать, что, каждый раз вы вызываете дразнивший метод, он вызывает другую функцию. Например, укажите, что каждый раз вы вызываете дразнивший roll метод, это вызывает randi функция.

Чтобы указать, что ложный метод использует указатель на функцию, чтобы вызвать другую функцию, задайте поведение с Invoke класс matlab.mock.actions пакет. Это действие отличается от AssignOutputs действие, которое возвращает значения, которые заданы, когда вы создаете AssignOutputs экземпляр.

Для получения дополнительной информации смотрите matlab.mock.actions.Invoke.

Платформа для мокинга: Проверьте, что взаимодействия на макете произошли в порядке

Можно создать ограничение, которому удовлетворяют, произошли ли взаимодействия с макетом в определенном порядке. Используйте 'RespectingOrder' опция с matlab.mock.constraints.Occurred чтобы проверить, что ложные методы были названы и к свойствам получили доступ и установили в особом порядке.

Для получения дополнительной информации смотрите matlab.mock.constraints.Occurred.

Платформа для мокинга: Очистите историю от записанных взаимодействий фиктивного объекта

Используйте clearMockHistory метод matlab.mock.TestCase очистить историю от записанных взаимодействий фиктивного объекта. Для получения дополнительной информации смотрите matlab.mock.TestCase.clearMockHistory.

matlab.test.behavior.Missing класс: Проверьте, что класс удовлетворяет контракту поведения отсутствующего значения

Создайте тестовый класс, который выводит из matlab.test.behavior.Missing класс, чтобы протестировать, если отсутствующее значение для класса удовлетворяет контракту отсутствующего значения в MATLAB. Если ваш класс представляет тип данных, и вы хотите, чтобы MATLAB обработал отсутствующие значения вашего класса, похожего на встроенные классы, гарантировал, что ваш класс удовлетворяет контракту отсутствующего значения.

Как правило, вы используете тест поведения в качестве части рабочего процесса разработки через тестирование. Если вы хотите, чтобы отсутствующее значение для вашего класса удовлетворило недостающему контракту с MATLAB, запишите, что поведение тестирует и изменяет класс под тестом, пока результаты испытаний не состоят в том, как вы ожидаете.

Для получения дополнительной информации смотрите matlab.test.behavior.Missing.

MEX-функции: Создание файла MEX на языке Фортран с чередованным комплексным API

Матричный API Фортрана поддерживает представление хранения с чередованием комплексных чисел. Для получения дополнительной информации смотрите Поддержку MATLAB Чередованного Комплексного API в MEX-функциях.

Примечание

Запускать файл MEX Фортрана создало с чередованным комплексным API в MATLAB R2018a, необходимо использовать Обновление MATLAB R2018a 3.

Вопросы совместимости

Если вы создаете MEX-функции Фортрана, то необходимо ли рассмотреть меня Потребность Обновить Мои файлы MEX, чтобы Использовать Чередованный Комплексный API? тема.

Функциональность для нескольких Матричных API-функций Фортрана изменилась. Для получения информации см.:

Поддержка компилятора изменяется для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла

ПоддержкаКомпиляторПлатформа

Добавленный

MinGW®- компилятор версии 6.3.0 w64 под эгидой https://mingw-w64.org

Windows

Добавленный

Studio XE 2018 параллели Intel с Microsoft Visual Studio 2015 и 2017 для C, C++ и Фортрана

Windows

Добавленный

Studio XE 2018 параллели Intel для Фортрана

macOS

Прекращенный

Microsoft Visual C++® 2 013 Профессионалов

Windows

Чтобы гарантировать постоянную поддержку создания ваших файлов MEX, рассмотрите обновление до другого поддерживаемого компилятора. Для актуального списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы.

Системные объекты: Гибкие требования для входных параметров при вызове Системных объектов

В MATLAB можно теперь вызвать Системные объекты с меньшим количеством входных параметров, чем заданные в stepImpl или outputImpl методы. Когда Системный объект запускается, алгоритм определяет, как используются входные параметры. Эта гибкость совпадает с поведением MATLAB по умолчанию для других функций и объектов.

Алгоритм Системного объекта не может быть гибким для входных параметров в зависимости от того, как алгоритм реализован или если Системный объект реализует getNumInputsImpl метод.

Авторская разработка системного объекта: Используйте перечисления, чтобы задать конечные списки свойств в Системных объектах

При добавлении свойства Системного объекта с конечным списком значений используйте перечисления, чтобы задать позволенные значения. Чтобы добавить перечисления, откройте свой файл Системного объекта в редакторе MATLAB и выберите Insert Property> Enumerations.

Для получения информации о преобразовании StringSets к перечислениям смотрите, что Системный объект создать класс StringSet будет удален.

Эталонная архитектура: Разверните и запустите MATLAB на Amazon Web Services (AWS) и Microsoft Azure

Можно развернуть и запустить рабочий стол MATLAB на AWS® и Azure® и соединитесь с ним с помощью Протокола удаленного рабочего стола (RDP). Используйте MathWorks, обеспеченный шаблон AWS CloudFormation, чтобы развернуться к AWS и шаблону Azure Resource Manager (ARM), чтобы развернуться к Microsoft Azure. Для получения дополнительной информации смотрите MATLAB in the Cloud (https://www.mathworks.com/cloud.html). Для получения дополнительной информации развертывания эталонной архитектуры см.:

Притоны Git: Сохраните незафиксированные изменения для дальнейшего использования

Начиная в R2018b, можно использовать притоны Git непосредственно из MATLAB. Можно создать притон Git, чтобы сохранить незафиксированные изменения для дальнейшего использования. Для получения дополнительной информации смотрите Притоны Git Использования.

Функциональность, удаляемая или измененная

matlab.unittest.plugins.FailureDiagnosticsPlugin не рекомендуется

Все еще работает

matlab.unittest.plugins.FailureDiagnosticsPlugin класс не рекомендуется. Используйте matlab.unittest.plugins.DiagnosticsOutputPlugin класс вместо этого. Нет никаких планов удалить FailureDiagnosticsPlugin в это время.

Программируемая зависимость от определенного диагностического подкласса от getDiagnosticFor метод ограничения и допусков

Переделайте код, который использует свойства или методы, характерные для matlab.unittest.diagnostic.ConstraintDiagnostic экземпляры возвращены в getDiagnosticFor метод matlab.unittest.constraints классы.

С R2018b, диагностика, возвращенная в ограничение и классы допуска в matlab.unittest.constraints пакет является экземплярами matlab.unittest.diagnostics.FrameworkDiagnostic.

Защищенный доступ для matlab.unittest.fixtures.Fixture.onFailure

Изменение поведения в будущем релизе

matlab.unittest.fixtures.Fixture.onFailure метод будет иметь защищенный доступ в будущем релизе. В настоящее время, Fixture.onFailure метод имеет открытый доступ. Однако этот метод спроектирован, чтобы использоваться в подклассах Fixture класс. В будущем релизе, Fixture.onFailure метод будет иметь защищенный доступ, который ограничивает использование метода к подклассам matlab.unittest.fixtures.Fixture класс.

Матричные API-функции Фортрана mxGetPi, mxSetPi, mxGetImagData, и mxSetImagData несовместимый с чередованным комплексным API

Все еще работает

Не используйте mxGetPi и mxSetPi функции в файлах MEX Фортрана, созданных с чередованным комплексным API (mex опция -R2018aИспользование mxGetComplexDoubles (Fortran) вместо mxGetPr и mxGetPi.

Не используйте mxGetImagData и mxSetImagData функции в файлах MEX Фортрана, созданных с чередованным комплексным API (mex опция -R2018a). Используйте Введенные функции Доступа к данным вместо этого.

Для получения дополнительной информации смотрите Поддержку MATLAB Чередованного Комплексного API в MEX-функциях.

Изменение поведения для Матричных API-функций Фортрана mxGetPr, mxSetPr, mxGetData, и mxSetData

Все еще работает

Не используйте mxGetPr и mxSetPr функции в файлах MEX Фортрана, созданных с чередованным комплексным API (mex опция -R2018a) для комплексных массивов. Используйте эти функции для действительных массивов только или используйте Введенные функции Доступа к данным.

Не используйте mxGetData и mxSetData функции в файлах MEX Фортрана, созданных с чередованным комплексным API (mex опция -R2018a) для числовых массивов. Используйте эти функции для нечисловых массивов только. Для числовых массивов используйте Введенные функции Доступа к данным.

Изменение поведения для Матричной API-функции Фортрана mxGetElementSize

Изменение поведения в будущем релизе

Для комплексного Фортрана mxArray созданный с чередованным комплексным API (mex опция -R2018a), mxGetElementSize (Fortran) возвращает дважды значение, которое возвращает функция в отдельном комплексном API.

Изменение поведения для Матричных API-функций Фортрана mxCopyComplex16ToPtr, mxCopyPtrToComplex16, mxCopyComplex8ToPtr, и mxCopyPtrToComplex8

Изменение поведения в будущем релизе

Функциональные подписи для Матричных API-функций Фортрана mxCopyComplex16ToPtr (Fortran), mxCopyPtrToComplex16 (Fortran), mxCopyComplex8ToPtr (Fortran), и mxCopyPtrToComplex8 (Fortran) отличаются для файлов MEX, созданных с чередованным комплексным API (mex опция -R2018a). Функции, созданные с отдельным комплексным API, имеют два аргумента для данных, действительных и комплексных частей. Функции, созданные с чередованным комплексным API, имеют отдельный аргумент для данных.

Системный объект, создающий StringSet класс будет удален

Все еще работает

Класс matlab.system.StringSet будет удален в будущем релизе. Чтобы приблизить инфраструктуру Системного объекта к классам MATLAB, регулярные перечисления MATLAB заменяют специфичную для системного объекта функциональность StringSet. Чтобы задать конечное множество свойств в Системных объектах, используйте перечисления вместо этого.

Обновите код

Свойства StringSetСвойства перечисления
properties
    Flavor = 'Chocolate'
end

properties (Hidden,Constant)
    FlavorSet = matlab.system.StringSet...
       ({'Vanilla','Chocolate'})
end

В вашем классе Системного объекта задайте свойство:

properties
    Flavor (1,1) FlavorValues
end

В отдельном файле задайте класс перечисления:

classdef FlavorValues < int32
    enumeration
        Chocolate (0)
        Vanilla (1)
    end
end

В редакторе MATLAB используйте Свойство Вставки> Перечисление для справки в создании класса перечисления.

Вопросы совместимости

Перечисления MATLAB не поддерживают специальные символы или пробелы для перечислимых величин. При преобразовании от StringSets до перечислений удалите или замените эти символы в классе перечисления.

matlab.editor.autoformat.DoubleHashtagForHeading установка была удалена

Ошибки

matlab.editor.autoformat.DoubleHashtagForHeading установка была удалена. Используйте matlab.editor.autoformat.HashtagsForHeading установка вместо этого.

Чтобы обновить ваш код, измените экземпляры установки matlab.editor.autoformat.DoubleHashtagForHeading к matlab.editor.autoformat.HashtagsForHeading. Для получения дополнительной информации см. matlab.editor Настройки.

R2018a

Новые возможности, исправления ошибок, Вопросы совместимости

Рабочий стол

Live Editor: Создайте live функции с документацией с расширенным форматом, включая уравнения и изображения

В Live Editor можно создать live функции, которые принимают входные параметры и возвращают выходные параметры. Чтобы зарегистрировать ваши live функции, добавьте текст с расширенным форматом, который включает уравнения, изображения и отформатированные примеры кода. Затем можно использовать doc команда, чтобы просмотреть документацию в Браузере документации. Для получения дополнительной информации смотрите, Создают Live функции.

Live Editor: Отладьте live функции и скрипты

Чтобы диагностировать проблемы в live функциях и live скриптах, отладьте свой код в Live Editor. Можно использовать несколько методов, чтобы отладить в Live Editor:

  • Выход Show путем удаления точек с запятой.

  • Запуститесь к определенной строке кода и приостановите использование кнопки.

  • Исследуйте вызванные функции и скрипты путем продвижения в использование кнопки.

  • Добавьте точки останова в свой файл, чтобы позволить делать паузу в определенных линиях, когда вы будете петлять.

Для получения дополнительной информации см. Код Отладки в Live Editor.

Live Editor: Добавьте ползунки и выпадающие списки к значениям контрольной переменной в live скрипте

Можно добавить ползунки и выпадающие списки к live скриптам к в интерактивном режиме значениям контрольной переменной. Добавление интерактивных способов управления к live скрипту полезно, когда это необходимо, чтобы совместно использовать live скрипт с другими. Используйте средства управления, чтобы задать и ограничить значения переменных, которые другие могут заменить в вашем live скрипте.

Чтобы добавить числовой ползунок или выпадающий список, перейдите к вкладке Insert, нажмите Control и выберите из доступных параметров. Для получения дополнительной информации смотрите, Добавляют Интерактивные управления к Live Script.

Live Editor: данные о таблице Sort в интерактивном режиме

В Live Editor можно отсортировать табличные данные в интерактивном режиме. К данным о виде в таблице кликните по стрелке вниз справа от имени переменной в таблице и выборе из доступных опций сортировки.

Используйте кнопку Update Code ниже таблицы, чтобы добавить сгенерированный код в ваш live скрипт. Добавление сгенерированного кода к вашему live скрипту гарантирует, что сортировка воспроизводится в следующий раз, когда вы запускаете live скрипт.

Live Editor: Создайте оглавление и добавьте отформатированные примеры кода ​

Можно создать оглавления в live скриптах и функциях, которые содержат список всех заголовков и заголовков в документе. Чтобы вставить оглавление, перейдите к вкладке Insert и выберите Table of Contents. Только заголовок оглавления доступен для редактирования.

Также можно добавить отформатированные примеры кода в live скрипты и функции. Пример кода является примером кода, который появляется как текст. Чтобы добавить пример кода, перейдите к вкладке Insert, нажмите Code Example и выберите Plain. Live Editor отображает пример кода, как расположено с отступом и моноширинный текст. Добавить синтаксис MATLAB подсветило пример кода, перейдите к вкладке Insert, нажмите Code Example и выберите MATLAB.

Для получения дополнительной информации о добавлении форматированного текста к live скриптам и функциям, смотрите Файлы формата в Live Editor.

Live Editor: Выберите и отредактируйте прямоугольную область кода

В Live Editor можно выбрать прямоугольную область в коде (также известный как column selection или block edit) путем нажатия клавиши Alt при делании выбора. Выбор и редактирование прямоугольной области кода полезны, если вы хотите скопировать или удалить несколько столбцов данных, или если вы хотите отредактировать несколько линий одновременно. Например, выберите второй столбец данных в A.

Введите 0 устанавливать все выбранные значения к 0.

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

Используйте доступные категории, чтобы просмотреть новые, удобные, и полезные дополнения в Проводнике Дополнений. Для получения дополнительной информации о дополнениях и как найти и установить их, смотрите, Получают Дополнения.

Инструмент сравнения: Найдите различия в live скриптах и функциях

Используйте инструмент Comparison, чтобы найти различия в live скриптах и функциях. Инструмент Comparison подсвечивает различия и в коде и в тексте.

Чтобы запустить сравнение live скрипта или функционировать, перейдите к вкладке Live Editor или Home, нажмите Compare, и затем выберите файлы, которые вы хотите сравнить. Чтобы запустить сравнение с Браузера текущей папки, выберите файл, щелкните правой кнопкой и выберите Compare Against.

Избранное: Повторно выполните любимые команды

Создайте любимые команды (ранее названные быстрые клавиши), чтобы легко повторно выполнить группу операторов языка MATLAB, которые вы регулярно используете. Чтобы получить доступ к существующим любимым командам, перейдите к вкладке Home и в Секции кода, нажмите Favorites и затем выберите из доступных любимых команд. Чтобы создать новую любимую команду, нажмите Favorites и затем нажмите кнопку New Favorite. Для получения дополнительной информации смотрите Команды Фаворита Повторного выполнения.

Упаковка тулбокса: Укажите информацию мобильности для пользовательских тулбоксов

Можно указать, какие платформы и релизы MATLAB поддерживают пользовательский тулбокс. Когда кто-то установил ваш тулбокс на неподдерживаемой платформе или релизе MATLAB, MATLAB выводит предупреждение. Однако они могут все еще установить тулбокс. Для получения дополнительной информации смотрите, Создают и Тулбоксы Доли.

Язык и программирование

Пустые массивы: Создайте комплексные пустые массивы с помощью функций, таких как zeros и ones

Можно создать комплексные пустые массивы с помощью complex функционируйте и функции, которые поддерживают комплексный вход с 'like' синтаксис, такой как zeros и ones. Например, команды zeros(0,0,'like',1i) и complex([]) теперь возвратите комплексный пустой выходной параметр вместо действительного пустого выхода.

Вопросы совместимости

Ранее complex функционируйте и функции, которые поддерживают комплексный вход с 'like' синтаксис всегда возвращал действительные пустые массивы, когда одно или несколько измерений было 0. Чтобы сохранить это поведение, можно проверять на комплексные пустые массивы с помощью isreal функционируйте и преобразуйте их в действительные пустые массивы с помощью real функция.

CodeCompatibilityReport: Сгенерируйте отчет совместимости от Браузера текущей папки

Отчет Совместимости Кода отображает потенциальные проблемы совместимости в вашем коде и категоризирует их серьезностью. Этот отчет помогает вам обновить код к более новому релизу MATLAB путем группировки проблем в те проблемы, которые требуют немедленного разрешения и тех проблем, которые можно решить в более позднем релизе.

С R2018a можно сгенерировать Отчет Совместимости Кода от Браузера текущей папки. Ранее вы генерировали отчет с помощью codeCompatibilityReport функция только. Для получения дополнительной информации см. Отчет Совместимости кода MATLAB.

timer Объект: Доступ к свойствам с многоуровневой индексацией

timer поддержка объектов многоуровневая индексация для установки и доступа к свойствам. Например, считайте таймер t с UserData свойство, которое содержит структуру. Теперь можно получить доступ к данным в структуре непосредственно.

t.UserData.field1

Получить доступ к field1 значение в предыдущих версиях MATLAB, вы или задали промежуточную переменную или использовали getfield функция.

d = t.UserData;
d.field1

getfield(t.UserData, 'field1')

Теперь можно установить значения в структуре непосредственно.

t = timer;
t.UserData.field1 = 'value1';
t.UserData.field2 = 'value2';

Используя запись через точку, чтобы получить доступ к свойствам на массиве timer объекты теперь возвращают список, разделенный запятыми вместо массива ячеек. Используя запись через точку, чтобы установить свойства на массиве timer объекты теперь ошибки.

Вопросы совместимости

Если ваш код использует MATLAB, возвращающий массив ячеек при получении свойств для массива timer объекты, или обновление ваш код, чтобы работать со списком, разделенным запятыми или использовать get функция. Этот код продолжает возвращать массив ячеек.

t_arr = [timer timer timer];
get(t_arr,'Name')
ans =

  3×1 cell array

    {'timer-5'}
    {'timer-6'}
    {'timer-7'}

Продолжать устанавливать свойства для всех элементов в массиве timer объекты, используйте set функция.

set(t_arr,'TimerFcn','myFunction')

В MATLAB R2018a и позже, с помощью записи через точку, чтобы установить свойства для всего timer объекты в массиве приводят к ошибке. Например, t_arr.TimerFcn = 'myFunction' теперь ошибки.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

complex функционируйте и функции, поддерживающие комплексный вход с 'like' синтаксис

Все еще работает

Не применяется

Ранее complex функционируйте и функции, которые поддерживают комплексный вход с 'like' синтаксис (такой как zeros и ones) всегда возвращаемые действительные пустые массивы, когда одно или несколько измерений было 0. Чтобы сохранить это поведение, можно проверять на комплексные пустые массивы с помощью isreal функционируйте и преобразуйте их в действительные пустые массивы с помощью real функция.

Имена пути MATLAB, содержащие '.', '..', и символьные ссылки

Все еще работает

Не применяется

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

Например, если вы запускаете команду addpath('c:\matlab\..\work'), MATLAB добавляет папку c:\work к пути.

MATLAB также разрешает пути при изменении текущей папки.

Для получения дополнительной информации смотрите addpath, rmpath, path, и cd.

Чувствительность к регистру при добавлении или удалении папок к пути MATLAB.Все еще работает

Не применяется

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

Например, если папка c:\TEMP существует в вашей системе, и вы запускаете команду addpath('c:\temp'), MATLAB добавляет папку 'c:\TEMP' к пути.

Для путей UNC случай MATLAB корректирует только часть пути к файлу пути. Имя сервера и части сетевого имени пути стандартизированы ко всему нижнему регистру.

ans во вложенных функциях

Все еще работает

Не применяется

В настоящее время вложенные функции иногда могут получать доступ и изменять ans переменная, которая задана в родительской функции. В будущих релизах вложенные функции никогда не будут иметь доступа к ans переменная задана в родительской функции. Например, в будущих релизах, в этом коде, MATLAB выдает ошибку во вложенной функции.

function foo
    1+2 % Assigns to ans.
    nested()
    function nested
       ans % MATLAB throws an error.
    end
end
Чтобы совместно использовать значение между вложенной функцией и ее родительской функцией, присвойте значение переменной кроме ans.
function foo
    sharedVar = 1+2
    nested()
    function nested
       sharedVar
    end
end

Классификация MATLAB идентификаторов в анонимных функциях

Все еще работает

Не применяется

В настоящее время, если какие-либо идентификаторы в анонимной функции неизвестны во время создания, все идентификаторы неизвестны. В будущем релизе они будут классифицированы, используя те же правила, как будто они были в функции. Если идентификатор известен в функции, он известен в анонимной функции. Например, рассмотрите следующую функцию и ее локальную функцию.

function myfun 
  myscript; % script sets x = 1 and lf = 10 
  f1 = @()lf(1);
  f2 = @()lf(x);   
end 
function lf(y) 
  % local function to myfun
end 

Все идентификаторы в f1 известны, когда MATLAB создает анонимную функцию. Это вызывает локальную функцию lf с входом 1. В текущей версии MATLAB, начиная с x неизвестно, MATLAB рассматривает lf быть неизвестным также, и твердость оба идентификатора во времени выполнения. Поэтому это использует x от myscript индексировать в переменную lf от myscript.

В будущей версии MATLAB, lf в f2 решит к локальной функции, начиная с lf известен, когда анонимная функция создается. x продолжает быть неизвестным до времени выполнения. Во времени выполнения MATLAB будет использовать x от myscript как введено к локальной функции lf, вместо как индекс к переменной lf от myscript.

Разрешение MATLAB идентификаторов в parfor/spmd блоки

Все еще работаетНе применяется

В настоящее время MATLAB разрешает идентификаторы в parfor/spmd блоки только в рамках того блока. В будущей версии MATLAB эти идентификаторы будут иметь то же разрешение вне parfor/spmd блок. Например, рассмотрите следующую функцию.

function myFunc()
    parfor i = 1:2
        y(i); 
    end
    i
end

В настоящее время, в parfor блок, i распознан переменной, но за пределами parfor блокируйтесь, это - нераспознанная функция или переменная. В будущей версии MATLAB, i будет распознан переменной за пределами parfor цикл. Однако его значение от parfor цикл не доступен за пределами блока. В этом примере, значении i sqrt(-1) за пределами parfor цикл.

Изменитесь в приоритете составного разрешения имени

Все еще работаетНе применяется

В MATLAB составное имя является именем, состоявшим из нескольких частей, к которым соединяет точка. Например, structName.fieldName или packageName.ClassName.methodName. В текущей версии MATLAB, если составное имя, такое как a.b.c, не решает к переменной, затем она имеет выполняющий приказ приоритета.

  1. Класс под названием a.b.c

  2. Класс под названием a.b со статическим методом c

  3. Функция пакета под названием a.b.c

  4. Класс под названием a.b (никакой статический метод c)

  5. Класс, названный a

В будущей версии MATLAB, если a.b.c не решает к переменной, она будет иметь этот порядок приоритета.

  1. Класс или пакет функционируют названные a.b.c

  2. Класс или пакет функционируют названные a.b

  3. Класс или функция под названием a

Удаление папки, которая была удалена за пределами MATLABПредупреждаетНе применяетсяMATLAB теперь обнаруживает и предупреждает, при попытке удалить папку, которая была удалена за пределами MATLAB.
блокнотОшибкиLive Editornotebook был удален. Чтобы создать документ, который комбинирует код, форматированный текст и выход, используют Live Editor вместо этого.

Изменитесь в приоритете *базирующийся импорт

Предупреждает

Чтобы использовать функцию пакета, используйте полностью определенное имя.

Импорт в функции имеет наивысший приоритет. Переменные тени импорта, локальные функции и вложенные функции. Например,

function myfunc
%import "local" and "nest" functions 
  import pkg1.* 
  local()  % Calls "pkg1.local" 
           % and displays warning. 

  function nest 
  end 

  nest(); % Calls "pkg1.nest" 
          % and displays warning. 
end 

function local 
end

В будущем импортированные функции будут иметь более низкий приоритет, чем переменные, вложенные функции и локальные функции

function myfunc
%import "local" and "nest" functions  
  import pkg1.* 
  local()  % Calls "myfunc/local"

  function nest 
  end 

  nest(); % Calls "myfunc/nest"
end 

function local 
end

Полностью определенное поведение импорта

Предупреждает

Чтобы использовать функциональное "вложенное множество" от полностью определенного импорта вместо вложенной функции с тем же именем, или удалите оператора импорта или определение вложенной функции.

Полностью определенный импорт более приоритетен по сравнению с вложенной функцией.

function myfunc 
% import function "nest"
  import pkg.nest  
% Calls "pkg.nest" and displays warning
  nest(); 

  function nest 
  end 
end 
myfunc
Warning: Prec-1.File: myfunc.m Line: 2 Column: 10
 Using "nest" from the fully qualified 
import instead of the nested function
with the same name.
 This will error in a future release. 
Either remove the import statement or 
 the nested function definition.

В будущем полностью определенный импорт, совместно использующий имена с идентификаторами в том же осциллографе, выдаст ошибку.

Полностью определенный импорт с именами, что теневые идентификаторы во внешних осциллографах

ПредупреждаетНе применяется

Полностью определенный импорт проигнорирован когда это тени идентификатор во внешнем осциллографе.

1.function myfunc 
2.  x = 1; 
3.  function nest 
4.    import pkg1.x
% Calls variable "myfunc/x" on line 2 
% and displays warning 
5.    x() 
6.  end 
7.end 
myfunc
Warning 
ID: mir_nr_id_shadows_imported_function 
Message: "x" is both the name of an imported 
function in a nested function and 
the name of a variable in the outer scope.
The imported "x" function is not called.
In future, the imported "x" will be called. 

В будущем полностью определенный импорт будет теневые идентификаторы во внешних осциллографах с тем же именем.

1.function myfunc 
2.  x = 1; 
3.  function nest 
4.    import pkg1.x 
5.    x() % Calls imported function "pkg1.x" 
6.  end 
7.end 

Обработка ошибок для полностью определенного импорта, который не может быть разрешен

Все еще работаетНе применяется

Если MATLAB запускается без Java, то полностью определенный импорт, который не может быть разрешен, не выдает ошибку.

Если MATLAB запускается с Java, то полностью определенный импорт, который не может быть разрешен, выдает ошибку.

В будущем полностью определенный импорт, который не может быть разрешен, выдает ошибку с или без Java.

Импорт, используемый в скриптах по сравнению с импортом, используется в функциях

Все еще работаетНе применяется

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

В будущем импорт, используемый в скриптах, будет вести себя как импорт в функциях.

Обработка ошибок, когда импорт, не найденный

Все еще работает

Удалите функции такой как javachk и usejava используемый для обработки ошибок.

Полностью определенный импорт, который не может быть разрешен, выдает ошибку в MATLAB -nojvm режим. Например, создайте эту функцию.

function myfunc 
  import java.lang.String 
  if ~usejava('jvm') 
    disp('This function requires Java'); 
  else 
    % do something with java String class 
  end 
end

Запустите matlab -nojvm, и затем запустите функцию.

myfunc 
This function requires Java

В будущем MATLAB выдает ошибку. Например:

myfunc 
Unable to find class or function 'java.lang.String' 
(line 2) for import. If your class or function 
requires Java, restart MATLAB without the 
-nojvm option.

Математика

graph и digraph Объекты: Работа с мультиграфами, которые имеют несколько ребер между двумя узлами

graph и digraph классы теперь поддерживают несколько ребер между двумя узлами. Повторные ребра отличны и могут иметь различные веса. Чтобы упростить работу с графиками, которые повторили ребра, несколько новых функций доступны:

  • ismultigraph — Определите, является ли график мультиграфом или простым графиком.

  • simplify — Уменьшайте мультиграф в простой график. Опционально, можно задать правило объединить или выбрать между повторными ребрами.

  • edgecount — Считайте количество ребер между двумя узлами.

  • outedges, inedges — Найдите исходящие или входящие индексы ребра для конкретного узла.

Кроме того, некоторые функции существующего графика обновили возможности с учетом нескольких ребер.

ФункцияНовая функциональность
shortestpathНовый третий выход, который перечисляет индексы ребра всех ребер на пути.
shortestpathtreeНовый третий выход, который указывает, является ли каждое ребро в дереве.
highlightВсе ребра между входными и выходными узлами подсвечены по умолчанию. Новая пара "имя-значение" 'Edges' позволяет вам подсветить определенные ребра с помощью индексов, который совместим с новой третью выход shortestpath.
bfsearch, dfsearchНовый второй выход, который содержит индекс ребра. Если первичный выход является таблицей, то он имеет дополнительную переменную EdgeIndex с той же информацией.
isomorphismНовый второй выход, который содержит информацию о сочетании ребер.
findedgeНовый второй выход, который содержит индексы ребра.

Вопросы совместимости

Существует несколько изменений, которые могут потребовать обновлений существующего кода:

  1. neighbors функционируйте самоциклы количеств только однажды. В предыдущих релизах, если узел u имел самоцикл, затем neighbors(g,u) перечисленный u дважды в выходе. neighbors(g,u) теперь возвращает только один экземпляр u.

  2. Отобразите изменение самоциклов в графике простого графика. Самоциклы в графике простого графика теперь формируются как лист или слезинка. В предыдущих релизах самоциклы были отображены как круги.

  3. graph, digraph, и addedge больше не производите ошибки, когда они столкнутся с дублирующимися ребрами. Вместо этого дублирующиеся ребра добавляются к графику, и результатом является мультиграф. ismultigraph функция полезна, чтобы обнаружить эту ситуацию, и simplify обеспечивает простой способ удалить дополнительные ребра.

graph и digraph Объекты: Вычислите размеры компонента и взвешенные матрицы смежности

conncomp функционируйте предлагает второй выход, чтобы возвратить количество узлов в каждом связанном компоненте. Кроме того, adjacency функция принимает, что второй вход создает взвешенные матрицы смежности.

GraphPlot Объект: Визуализируйте графики с дополнительными опциями для 'force', 'force3', и 'circle' размещения

Когда вы строите график G с определенным размещением с помощью plot(G,'Layout',method), можно использовать много специфичных для размещения пар "имя-значение" для каждого из различных методов. Например, plot(G,'Layout','layered','Direction','left') изменяет ориентацию многоуровневого размещения.

Новые специфичные для размещения пары "имя-значение" для визуализации ориентированных и неориентированных графов с plot функция включает:

  • 'WeightEffect' пара "имя-значение" — Чтобы включить вес ребра в 'force' и 'force3' размещения.

  • 'UseGravity' пара "имя-значение" — Чтобы включить эффекты силы тяжести (набор к прочь по умолчанию) с 'force' и 'force3' размещения. Когда сила тяжести включена, строение графика с несколькими компонентами привлекает все узлы до начала координат и позволяет большим компонентам занять больше места.

  • 'Center' пара "имя-значение" — Чтобы задать один узел, который должен появиться в центре кругового графика графика с 'circle' размещение.

polyshape Объекты: Анализируйте многоугольники с turningdist, nearestvertex, и overlaps функции

Новая функциональность для анализа 2D многоугольников доступна для polyshape объекты:

  • turningdist функция возвращает номер близко к 0 когда два входа polyshape объекты имеют почти соответствие с граничными формами, независимо от шкалы или ориентации.

  • nearestvertex функция возвращает самую близкую вершину входа polyshape возразите против точки запроса.

  • overlaps функция определяет если два polyshape объекты перекрываются.

polyshape Объекты: Возвратите карту вершины и примите массивы с совместимыми размерами для intersectвычитаниеобъединение, и xor функции

intersect, subtract, union, и xor функции для polyshape объекты теперь возвращают информацию об отображении вершины и принимают входные массивы polyshape объекты с совместимыми размерами.

Отображение вершины позволяет вам идентифицировать где вершины выхода polyshape порожденный. Например, [pout,pshapeID,vertexID] = intersect(pshape1,pshape2) возвращает вектор-столбцы pshapeID и vertexID содержа одинаковое число строк как количество вершин в pout.

Каждый элемент shapeID содержит значение 1, 2, или 0:

  • Элемент равняется 1 когда соответствующие вершины pout принадлежите pshape1.

  • Элемент равняется 2 когда соответствующие вершины pout принадлежите pshape2.

  • Элемент 0 когда соответствующие вершины pout принадлежите пересечению pshape1 и pshape2.

Информация о вершине vertexID содержит номера строк для соответствующих вершин в pshape1 и pshape2.

polybuffer Функция: Создайте буфер вокруг точек или линий

polybuffer функция позволяет вам задать буфер вокруг набора точек или линейных сегментов. Например, pshape = polybuffer([0 0; 2 3],'Points',1) создает a polyshape объект pshape чьи контуры являются кругами радиуса 1 сосредоточенный о точках (0,0) и (2,3).

triangulation Объекты: Найдите соседние вершины и местоположения точек запроса с улучшенной производительностью

Можно вычислить соседние вершины и местоположения точек запроса быстрее с nearestNeighbor и pointLocation функции для triangulation объекты.

ode45 Функция: Решение нежестких дифференциальных уравнений быстрее

ode45 функция показывает улучшенную производительность для некоторых проблем.

Графика

Объект осей: Просмотрите оси в небольшом размере с улучшенным размещением, ограничьте выбор и масштабирование шрифта

Маленькие оси имеют улучшенное размещение, которое уменьшает пробел для лучшей удобочитаемости. Чтобы уменьшать пробел, пределы осей теперь соответствуют более плотно вокруг данных. Кроме того, легенды и шкалы палитры имеют более узкие поля. Кроме того, размер шрифта уменьшается немного для маленьких осей, чтобы избежать перекрывающегося текста или текста, который убегает фигура.

Вопросы совместимости

Для маленьких осей вы можете столкнуться с немного отличающимися пределами, значениями деления или размерами шрифта, чем в предыдущих релизах. Однако, если вы ранее заданный пределы, значения деления или размер шрифта, затем оси все еще используют значения, которые вы задаете. Чтобы задать пределы, используйте xlim и ylim функции. Чтобы задать значения деления, используйте xticks и yticks функции. Чтобы задать размер шрифта, используйте FontSize свойство.

Объект осей: Сопоставьте значения данных с палитрой с помощью линейной шкалы или логарифмического масштаба

Масштабируйте палитры линейно или логарифмически использование нового свойства ColorScale для Axes объекты.

Объект легенды: Создайте легенды с несколькими столбцами

Можно создать легенды с несколькими столбцами с помощью нового NumColumns свойство для Legend объекты. Для примера смотрите Добавление легенды к Графику.

heatmap Функция: Изменение масштаба и данные о панорамировании, отобразите всплывающие подсказки и строки и столбцы вида в интерактивном режиме

Тепловые карты имеют новые опции для взаимодействия с данными:

  • Изменение масштаба — Использование колесико прокрутки или ключи + и -, чтобы масштабировать.

  • Панорамирование — Использование клавиши со стрелками к панорамированию через строки или столбцы.

  • Всплывающие подсказки — Наводят на тепловую карту, чтобы отобразить всплывающую подсказку.

  • Перестройте строки и столбцы — Перетаскивание строка или метка столбца, чтобы переместить его в различное положение.

  • Сортировка оценивает — Нажатие кнопки значок, который появляется, когда вы наводите на метку столбца или строку. Щелкните однажды, чтобы отсортировать значения в порядке возрастания, дважды отсортировать значения в порядке убывания, и в третий раз, чтобы сбросить порядок.

geobubble Функция: Исследуйте с интерактивными всплывающими подсказками и шкалой ​ ​

Географические пузырьковые диаграммы теперь поддерживают всплывающие подсказки. Наведите на пузырь на графике, чтобы отобразить всплывающую подсказку.

Кроме того, географические пузырьковые диаграммы теперь включают шкалу в свой левый нижний угол, чтобы указать на фактические расстояния, представленные в карте. Используйте ScalebarVisible свойство управлять, включает ли ваш график шкалу.

Панель инструментов осей: Добавьте панели инструментов на свои оси для быстрого доступа к панорамированию, изменению масштаба и другим инструментам исследования данных

Можно добавить панель инструментов на верхний правый угол осей для быстрого доступа к инструментам исследования данных. Панель инструментов обычно включает опции, чтобы нарисовать данные кистью, добавить всплывающие подсказки, вращаться (только 3-D оси), панорамирование и изменение масштаба.

Чтобы добавить панель инструментов, используйте новый Toolbar свойство для Axes объекты. Toolbar свойство хранит AxesToolbar объект. Установите Visible свойство AxesToolbar возразите против 'on'. Некоторые опции панели инструментов осей избыточны с панелью инструментов фигуры. Можно удалить избыточные опции из панели инструментов фигуры с помощью removeToolbarExplorationButtons команда.

ax = gca;
ax.Toolbar.Visible = 'on';
removeToolbarExplorationButtons(gcf);

Чтобы восстановить кнопки исследования панели инструментов фигуры, используйте addToolbarExplorationButtons(gcf) команда.

Инспектор свойств: Измените графику в интерактивном режиме с улучшенным инспектором свойств

Улучшенный Property Inspector облегчает изменять графические объекты в интерактивном режиме. Чтобы открыть инспектора, используйте inspect функция. Например, inspect(gca) открывает инспектора для текущей системы координат.

Объект многоугольника: цвет Управления и прозрачность ребер отверстия

Можно управлять цветом и прозрачностью контуров отверстия многоугольника. Используйте новый HoleEdgeColor и HoleEdgeAlpha свойства для Polygon объекты.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

Изменение палитры фигуры влияет на все оси на рисунке

Все еще работает

Не применяется

Когда вы изменяете палитру фигуры, палитра изменяется для всех осей на рисунке. Ранее, если вы задавали палитру для детали, оси, затем изменяя палитру фигуры не влияли на оси.

Установите палитру осей после установки палитры фигуры избежать палитры фигуры, перезаписывающей палитру осей.

Пределы осей, значения деления или размеры шрифта для маленьких осей могут отличаться Все еще работаетНе применяется

Из-за улучшенного размещения, которое уменьшает пробел, маленькие оси могут иметь немного отличающиеся пределы, значения деления или размеры шрифта, чем в предыдущих релизах.

Если вы предпочитаете пределы, значения деления или размеры шрифта от предыдущих релизов, можно вручную установить их. Чтобы задать пределы, используйте xlim и ylim функции. Чтобы задать значения деления, используйте xticks и yticks функции. Чтобы задать размер шрифта, используйте FontSize свойство.

Установка свойств заголовка географической пузырьковой диаграммы опустеть ([]Массив Все еще работаетНе применяется

Объекты GeographicBubbleChart теперь хранят пустые свойства заголовка как пустой символьный массив 0 на 0. Свойства заголовка включают Title, SizeLegendTitle, и ColorLegendTitle свойства.

Ранее установка свойства к пустому массиву или возвратила ошибку или сохранила значение неожиданными размерностями (как 0 пустым символьным массивом 0 на 0).

Установка свойств заголовка географической пузырьковой диаграммы к многострочному заголовкуВсе еще работаетНе применяется

Объекты GeographicBubbleChart теперь хранят многострочные заголовки массива ячеек из символьных векторов. Свойства заголовка включают Title, SizeLegendTitle, и ColorLegendTitle свойства.

Ранее график сохранил значение как символьную матрицу и отобразил заголовок с неправильным выравниванием.

Импорт и экспорт данных

readtable Функция: Задайте количество строк, чтобы читать из текстового файла с помощью настроек импорта

Можно выбрать подмножество строк, чтобы читать из текстового файла с помощью readtable наряду с настройками импорта. Используйте DataLines свойство задать строки, чтобы читать. Задайте DataLines несколькими способами:

  • opts.DataLines = 5 устанавливает DataLines свойство к значению [5 inf]. readtable функционируйте читает все строки данных, начинающих со строки 5 до конца файла.

  • opts.DataLines = [2 6] устанавливает свойство прочитать строки 2 через 6. readtable функционируйте читает все строки данных, начинающих со строки 2 располагать в ряд 6.

  • opts.DataLines = [1 3; 5 6; 8 inf] устанавливает свойство считать строки 1, 2, 3, 5, 6, и все строки между 8 и конец файла.

После определения DataLines, импортируйте данные с помощью readtable:

T = readtable(filename,opts);
Для получения дополнительной информации смотрите DataLines свойство DelimitedTextImportOptions и FixedWidthImportOptions объекты.

readtable Функция: Легко управляйте префиксами и суффиксами из данных с помощью настроек импорта

Можно задать символы, чтобы удалить из префиксных и суффиксных положений в переменной с помощью readtable с настройками импорта. Задайте префиксные и суффиксные опции несколькими способами:

  • opts = setvaropts(opts,'Var1','Prefixes','$') устанавливает Prefixes опция для переменной Var1. Если Var1 содержит значение '$500', затем readtable чтения это как '500'.

  • opts = setvaropts(opts,'Var1','Suffixes','/-') устанавливает Suffixes опция для переменной Var1. Если Var1 содержит значение '$500/-' , затем readtable чтения это как '$500'.

  • opts = setvaropts(opts,'Var1','TrimNonNumeric',true) устанавливает TrimNonNumeric опция для переменной Var1. Если Var1 содержит значение '$500/-', затем readtable чтения это как 500.

Для получения дополнительной информации смотрите параметры переменной и описания на setvaropts страница с описанием.

preview Функция: Предварительный просмотр сначала 8 строк таблицы в файле, не импортируя полную таблицу

Можно предварительно просмотреть первый 8 строки таблицы из файла прежде, чем импортировать полную таблицу с помощью readtable и настройки импорта. Для получения дополнительной информации смотрите preview функция.

imageDatastore Функция: Работа с миллионами изображений с улучшенным использованием памяти и эффективностью

imageDatastore функционируйте теперь поддерживает более быструю обработку миллионов изображений для применения глубокого обучения с улучшенным использованием памяти.

Функции datastore: Беспрепятственно работайте с наборами данных, сохраненными в облаке и локальных машинах

Можно работать с наборами данных, сохраненными в облаке и локальных машинах при помощи 'AlternateFileSystemRoots' параметр в datastore функционирует и Установленный на файл объект для пользовательских хранилищ данных. Этот параметр поддерживается для:

Для получения дополнительной информации смотрите Настроенный Datastore для Обработки на Различных Машинах или Кластерах.

Функции datastore: Считайте данные HDFS более легко при использовании Hortonworks или Cloudera

Можно использовать функции datastore для доступа данные HDFS более легко по Hortonworks или Cloudera® не имея необходимость устанавливать HADOOP_HOME или HADOOP_PREFIX переменные окружения. MATLAB теперь автоматически присваивает эти переменные окружения при использовании узлов ребра приложения Hortonworks или Cloudera.

Для получения дополнительной информации смотрите Считанные Удаленные данные.

readtabledetectImportOptionsdatastore, и tabularTextDatastore Функции: Автоматически обнаружьте и возвратите данные о длительности в текстовых файлах

Функции readtable, detectImportOptions, datastore, и tabularTextDatastore обнаружьте и возвратите данные о длительности как duration ввод. Для получения дополнительной информации о duration массивы, смотрите duration страница с описанием.

Вопросы совместимости

Ранее readtable, detectImportOptions, datastore, и tabularTextDatastore функции возвратили данные о длительности как текст. Чтобы сохранить то поведение, используйте DurationType параметр. Например, T = readtable('myfile.txt','DurationType','text') считывает данные о длительности в myfile.txt как текст. Для получения дополнительной информации о DurationType параметр, смотрите страницы ссылки на функцию.

detectImportOptions Функция: Управляйте свойствами импорта данных о длительности

detectImportOptions теперь может обнаружить и управлять переменными типа duration в табличных данных.

Для переменной в таблице, содержащей данные о длительности, можно использовать setvaropts функционируйте, чтобы установить эти свойства: DurationFormat'InputFormat' 'DecimalSeparator' , и FieldSeparator. Для получения дополнительной информации смотрите setvaropts функциональная страница.

VideoReader Функция: Считайте видеофайлы быстрее на всех платформах

VideoReader имеет улучшенную производительность для всех поддерживаемых форматов видео, когда вы читаете видеокадры в цикле как часть общего рабочего процесса обработки видеоданных. Для получения дополнительной информации о поддерживаемых форматах видео и функциональном использовании, смотрите VideoReader.

VideoWriter Функция: Запишите видеофайлы быстрее на всех платформах

VideoWriter имеет улучшенную производительность для всех поддерживаемых форматов видео, когда вы написали видеокадры в цикле как часть общего рабочего процесса обработки видеоданных. Для получения дополнительной информации о поддерживаемых форматах видео и функциональном использовании, смотрите VideoWriter.

openDiskFile Функция: Считайте файлы данных в FITS (Гибкая система передачи изображения) формат данных

Считайте файлы данных в FITS (Гибкая система передачи изображения) формат данных с помощью openDiskFile функция.

webwrite Функция: Поддержка аутентификации NTLM

webwrite функция и weboptions POST и методы PUT поддерживают аутентификацию NTLM на платформах Windows.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

DataLine свойство DelimitedTextImportOptions и FixedWidthImportOptions объекты

Все еще работает

DataLines

Используйте имя свойства DataLines вместо DataLine.
readall метод для SpreadsheetDatastoreTabularTextDatastoreKeyValueDatastore, и TallDatastore объектыВсе еще работаетНе применяется

readall(ds) метод больше не сбрасывает datastore ds к состоянию, где никакие данные не были считаны из него. Это новое поведение readall включает read метод, чтобы считать данные из конца предыдущей операции чтения.

Ранее readall(ds) сбросил бы datastore, заданный ds к состоянию, где никакие данные не были считаны из него. Поэтому любой вызов read после readall всегда читал бы с начала datastore.

Выведите от sheetnames функцияВсе еще работаетНе применяется

sheetnames функционируйте теперь возвращает names аргумент как массив строк.

Ранее sheetnames возвращенный names как массив ячеек из символьных векторов. Преобразовывать names назад к массиву ячеек из символьных векторов, используйте следующее:

% Get sheet names from a file 'myfile3.xls' 
% in the spreadsheetDatastore ssds
names = sheetnames(ssds,'myfile3.xls');
% Convert names to cell array of character vectors
names = cellstr(names); 

hdfgd

Ошибкиmatlab.io.hdfeos.gdЗамените все экземпляры hdfgd с соответствующей функцией в matlab.io.hdfeos.gd пакет.

hdfsd

Ошибки matlab.io.hdf4.sdЗамените все экземпляры hdfsd с соответствующей функцией в matlab.io.hdf4.sd пакет.

hdfsw

Ошибкиmatlab.io.hdfeos.swЗамените все экземпляры hdfsw с соответствующей функцией в matlab.io.hdfeos.sw пакет.

Анализ данных

groupsummary Функция: Группа и дискретизирует данные для итоговых операций на переменных таблицы и расписания

Группировка и дискретизация данных о таблице и расписании для итоговых операций теперь легче с groupsummary функция. Например, groupsummary(T,'Gender','method','mean') вычисляет среднее значение переменных в таблице T полом.

Таблица и Переменные Расписания: Добавьте, удалите и перестройте ориентированные на столбец переменные с функциями addvars, removevars, movevars, splitvars, mergevars, rows2vars, и inner2outer

Функция

Описание

addvars

Добавьте переменные в таблицу или расписание.

removevars

Удалите переменные из таблицы или расписания.

movevars

Переместите переменные в таблицу или расписание.

splitvars

Разделите многостолбцовые переменные в таблице или расписании.

mergevars

Объедините переменные таблицы или расписания в многостолбцовую переменную.

rows2vars

Переориентируйте строки таблицы или расписания так, чтобы строки стали переменными.

inner2outer

Инвертируйте иерархию вложенной таблицы в таблице.

Предварительно выделенные Таблицы и Расписания: Инициализируйте переменные таблицы и расписания так, чтобы они задали размеры и типы данных

Чтобы инициализировать переменные таблицы и расписания так, чтобы они задали размеры и типы данных, задайте 'Size' и 'VariableTypes' аргументы пары "имя-значение" table и timetable функции. Можно задать количество строк, количество переменных и типы данных переменных. Предварительно выделенные переменные содержат значения по умолчанию или пустые массивы, в зависимости от заданных типов данных. Можно заполнить переменные значениями данных позже.

Обычные Расписания: Создайте расположенные с равными интервалами расписания с помощью временного шага или частоты дискретизации

Можно создать обычные расписания с помощью или временного шага или частоты дискретизации, чтобы задать идентичные временные интервалы между временами строки подряд. Чтобы создать обычные расписания, используйте timetable или array2timetable функции с 'TimeStep' или 'SamplingRate' аргументы в виде пар имя-значение. Также можно задать значение первого раза строки с помощью 'StartTime' пара "имя-значение".

retime и synchronize Функции: Синхронизируйте расписания с временным шагом или частотой дискретизации, которую вы задаете

Чтобы синхронизировать расписания с временным шагом или частотой дискретизации, используйте 'TimeStep' или 'SamplingRate' аргументы пары "имя-значение" retime или synchronize функции.

duration Массивы: Создайте массивы длительности из текста, который представляет прошедшие времена

Можно преобразовать текст, представляющий прошедшие времена в массив длительности с помощью duration функция. Входной текст представляет каждый раз в формате, таком как 'hh:mm:ss' или 'dd:hh:mm:ss'. Поля dd, hh, mm, и ss представляйте дни, часы, минуты и секунды, соответственно.

normalize Функция: Нормируйте массив, таблицу и данные о расписании

Можно нормировать данные в массиве, таблице или расписании количествами, такими как z-счет или p-норма с помощью normalize функция. Например, normalize(A,'norm',1) нормирует каждый столбец матрицы A его 1 нормой.

tall Массивы: Работайте с длинными массивами с большим количеством функций, включая smoothdata, find, и isoutlier

Функции, перечисленные в этой таблице, добавляют поддержку длинных массивов как входные параметры. Для полного списка поддерживаемых функций введите methods tall. Для получения дополнительной информации об использовании и ограничениях, введите help tall/functionName. Например, help tall/find.

tall Индексация массива: Используйте высокие числовые массивы, чтобы индексировать первую размерность

Для длинного массива X, можно индексировать первую размерность массива с X(idx,…), где idx высокий числовой массив.

tall Массивы: Решите линейные системы Ax = b

Можно решить линейные системы Ax = b с высокой матрицей коэффициентов A x = A\b. Решатель для длинных массивов использует разложение QR, чтобы найти решение методом наименьших квадратов к проблеме.

tall Массивы: Возвратите метки группы с findgroups

findgroups теперь поддержки несколько выходных аргументов с длинными массивами. Дополнительные выходные параметры от findgroups содержите уникальные списки меток группы для каждой сгруппированной переменной.

tall Массивы: Установите компоненты даты и времени высокого datetime и высоких массивов длительности

Можно изменить свойства высокого datetime и высоких массивов длительности, использующих точечную индексацию. Например, t.Format = 'dd-MMM-yyyy' изменяет формат отображения t.

Смотрите datetime и duration страницы для списка свойств или Компонентов Даты и времени Извлечения или Присвоения Массива datetime для примеров.

tall Массивы: Установите свойства длинных таблиц и длинных расписаний

Можно изменить свойства длинных таблиц и длинных расписаний, использующих точечную индексацию. Например, T.Properties.VariableNames = {'Name1' 'Name2'} изменяет имена переменных T. Поскольку список всех свойств использует команду T.Properties.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

Добавление и вычитание длительности, представленной как текст в формате таймера от массива datetime

Все еще работает

Не применяется

Начиная в R2018a, если вы представляете длительность как текст, можно добавить и вычесть его из массива datetime, и результатом является массив datetime. В обеих операциях текст в формате таймера преобразован в значение длительности. Например, этот код добавляет 1 час и 30 минут к текущей дате и время.

datetime('now') + '1:30:00'

Этот код вычитает 12 часов до текущей даты и время.

datetime('now') - '12:00:00'

Ранее, если вы представляли длительность как текст в формате таймера, таком как '1:30:00', затем добавление, что длительность к массиву datetime повысила ошибку при вычитании его, возвратило массив длительности вместо массива datetime.

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

datetime('now') - datetime('12:00:00')

Именование вектора времен строки из расписания, когда вы задаете 'VariableNames' аргумент пары "имя-значение" timetable функция

Все еще работает

Не применяется

Начиная в R2017b, timetable функционируйте присваивает имя входного временного вектора как имя вектора времен строки, даже когда вы задаете имена переменных с помощью 'VariableNames' аргумент пары "имя-значение". Ранее в R2016b и R2017a, timetable присвоенный 'Time' как имя вектора времен строки, когда вы задали 'VariableNames'. Это поведение изменилось, потому что вектор времен строки не является переменной расписания. Времена строки являются метками строк.

Чтобы переименовать вектор времен строки, используйте DimensionNames свойство. Например, TT.Properties.DimensionNames{1} = 'Time' изменяет название вектора времен строки из TT к 'Time'.

Индексирование в расписание с помощью datetime или значений длительности как индексы строки

Все еще работает

Не применяется

Начиная в R2018a, расписание, преобразовывающее в нижний индекс, использует допуск, чтобы совпадать с индексами, чтобы расположить времена в ряд. Поэтому один индекс может соответствовать два или больше отличных раза строки в расписании, когда те времена строки отличаются только небольшим количеством. Ранее в R2016b через R2017b, вы могли получить доступ к данным в расписании с помощью datetime или массива длительности, когда индекс строки, но преобразовывая в нижний индекс потребовал точного совпадения между временем в индексах и время строки расписания.

Можно воспроизвести более раннее поведение, которое потребовало точного совпадения несколькими способами. Чтобы выбрать только точные совпадения в одно время, создайте логический индекс строки путем тестирования на равенство между индексами и времена строки с помощью оператора равенства, ==. Чтобы выбрать только точные совпадения в многократно, создайте логический индекс строки с помощью ismember функция. Как альтернатива, используйте withtol функция с допуском seconds(0).

Создание приложений

Дизайнер приложений: Создайте развернутые веб-приложения с помощью MATLAB Compiler

Если вам установили MATLAB Compiler в вашей системе, можно создать веб-приложения с помощью кнопки Share в панели инструментов App Designer. Для получения дополнительной информации смотрите Способы Совместно использовать Приложения.

Google Chrome и Internet Explorer (версия 11 и позже) поддержка, запускающая веб-приложения.

Дизайнер приложений: Добавьте и сконфигурируйте древовидные компоненты на холсте App Designer

Перетащите мышью древовидные компоненты от Component Library на холст и измените их текстовые метки и положения непосредственно в холсте.

Дизайнер приложений: Выберите из недавно используемых наборов аргумента когда запущенные приложения с входными параметрами

Сконфигурируйте до семи наборов входных параметров под кнопкой Run в панели инструментов App Designer. Выберите любой из наборов, чтобы запустить их снова. Наборы остаются в выпадающем списке, пока вы не закрываете приложение.

Дизайнер приложений: Отредактируйте напрямую заголовок осей и метку в холсте

Теперь можно изменить заголовки графика и метки осей более быстро, отредактировав их напрямую на холсте.

GUIDE: Переместите приложения GUIDE на App Designer

Для помощи в миграции ваших приложений к App Designer используйте GUIDE для Инструмента Миграции App Designer для MATLAB. Этот инструмент доступен как пакет поддержки.

Среда тестирования приложения: Автор автоматизировал тесты для приложений App Designer

Используйте среду тестирования приложения, чтобы записать автоматизированные тесты для ваших приложений. Среда тестирования приложения усиливает среду модульного тестирования MATLAB.

Можно использовать среду тестирования приложения MATLAB для тестовых приложений, созданных с App Designer или приложениями, созданными программно с помощью uifigure функция. Среда тестирования приложения позволяет вам создать тестовый класс, который программно выполняет жест на компоненте пользовательского интерфейса, таком как нажатие кнопки или перетаскивание ползунка, и проверяет поведение приложения.

Для получения дополнительной информации смотрите Среду тестирования Приложения.

Figure Объекты: Максимизируйте и минимизируйте фигуры программно

Используйте WindowState свойство максимизировать, минимизируйте или отобразите фигуру в полноэкранном режиме.

uitable Функция: Задайте данные как table массив

Data свойство Table Компоненты пользовательского интерфейса теперь принимают table массивы. Например:

T = readtable('patients.xls');
uit = uitable(uifigure,'Data',T);

table массивы поддерживаются только в приложениях App Designer или фигурах, созданных с uifigure функция.

uidatepicker Функция: Добавьте средства управления выбором даты в приложения

Вызовите uidatepicker функция, чтобы добавить средство выбора даты в приложение.

Чтобы отобразить средство выбора даты в приложении App Designer, вызовите uidatepicker функция из коллбэка, такого как StartupFcn для UIFigure компонент.

Средства выбора даты работают только в приложениях App Designer или в цифрах созданный с uifigure функция.

uiprogressdlg Функция: Создайте модальные диалоговые окна прогресса в приложении к приложениям

Вызовите uiprogressdlg функция, чтобы создать диалоговое окно прогресса в рамках приложения.

Диалоговое окно может только отобразиться в приложениях App Designer или в цифрах созданный с uifigure функция.

uitree Функция: Создайте деревья с доступным для редактирования текстом узла в запущенном приложении

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

Выравнивание текста компонента: Улучшенное выравнивание текста для меток, флажков и переключателей

Высота по умолчанию и выравнивание по вертикали для меток, флажков и переключателей теперь сопоставимы с другой одной линией, основанными на тексте компонентами. Новые значения облегчают выравнивать текст этих компонентов с другими компонентами.

Только метки, флажки и переключатели в App Designer и в цифрах созданный с uifigure функция затронута.

Вопросы совместимости

Новая высота по умолчанию для этих компонентов составляет 22 пикселя (ранее, это были 15 пикселей). Текст теперь центрирован вертикально в текстовом поле компонента (ранее, текст был выровнен к верхней части текстового поля).

Метки, флажки и переключатели в приложениях, созданных в предыдущих релизах, могут выглядеть по-другому, когда вы открываете или запускаете их в силе R2018a.You, должен изменить выравнивание по вертикали или регулировать высоту и местоположение тех компонентов, чтобы обеспечить сопоставимый внешний вид.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

Приложения, сохраненные в App Designer с помощью R2018a

Ошибка (при открытии в предыдущих релизах)

Выберите Save> Save Copy As в панели инструментов R2018a App Designer.

.mlapp формат файла изменяется в R2018a. Приложения, созданные или измененные в App Designer, возвращают ошибку, когда вы пытаетесь открыть их в предыдущих релизах. Чтобы изменить приложение через несколько релизов, выберите Save> Save Copy As в панели инструментов R2018a App Designer. Затем выберите соответствующий релиз MATLAB из Save as type выпадающий список. В качестве альтернативы сделайте резервную копию приложения прежде, чем открыть приложение в R2018a.

Приложения создали в предыдущих релизах, которые содержат метки, флажки или переключатели

Все еще работает

Не применяется

Новая высота по умолчанию и выравнивание по вертикали текста для меток, флажков и переключателей изменились. Вы можете должны быть изменить выравнивание по вертикали или регулировать высоту и местоположение тех компонентов, чтобы обеспечить сопоставимый внешний вид. Для получения дополнительной информации смотрите Выравнивание текста Компонента: Улучшенное выравнивание текста для меток, флажков и переключателей.

Производительность

Запуск: Увеличенная скорость MATLAB запускает время

MATLAB запускается быстрее из-за улучшений инфраструктуры и оптимизации.

Механизм выполнения: Выполните жесткие циклы со скалярной математикой быстрее

Циклы, которые содержат в основном индексацию и скалярные математические операции, выполняются быстрее из-за оптимизации механизма выполнения.

Механизм выполнения: Улучшенная производительность для общих шаблонов программирования

Общие шаблоны программирования, такие как оценка анонимных функций и общие комбинации операций, такие как isequal(size(x),size(y)), выполнитесь быстрее из-за целенаправленной оптимизации.

Дизайнер приложений: Запуск, загрузка и задачи размещения быстрее

Стартовый App Designer на 40% быстрее, чем в R2017b. Загрузка приложений и выполнение задач размещения в App Designer составляют 10% к на 30% быстрее, чем в R2017b.

Аппаратная поддержка

Raspberry Pi: Поддержка Raspberry Pi Zero W плата

Можно теперь использовать Пакет поддержки MATLAB для Оборудования Raspberry Pi с Raspberry Pi Zero W плата.

Пакет поддержки MATLAB для Оборудования Raspberry Pi позволяет вам передать с Raspberry Pi Zero W использование Wi-Fi® или кабельное соединение micro-USB. Для получения дополнительной информации о том, как связаться с Raspberry Pi Zero W, выполните шаги в Установке, Обновлении или Пакете поддержки Uninstall (Пакет поддержки MATLAB для Оборудования Raspberry Pi).

MATLAB Online : Получите живые изображения от веб-камер USB в MATLAB Online

Теперь можно соединиться с и потоковые изображения от веб-камеры USB в MATLAB Online. Соедините веб-камеру USB со своим компьютером и предоставьте ваш доступ к браузеру к вашей камере. Все функции в Пакете поддержки MATLAB для Веб-камер USB доступны для MATLAB Online.

Продвинутые возможности разработки программ

Заполнение клавишей Tab: Опишите свои синтаксисы функций для пользовательского заполнения клавишей Tab и других контекстных предложений

Чтобы настроить предложения кода и завершения для ваших функций, предоставьте MATLAB JSON-отформатированный файл, который содержит информацию о ваших функциональных подписях. MATLAB использует эту информацию, чтобы улучшить интерактивные функции, такие как заполнение клавишей Tab и подсказчик функций. Для получения дополнительной информации смотрите, Настраивают Предложения Кода и Завершения.

Среда Модульного тестирования: Запустите тесты от панели инструментов редактора MATLAB

Можно запустить тесты от панели инструментов редактора MATLAB. Когда вы открываете функциональный или основанный на классах тестовый файл, панель инструментов Редактора имеет опции, чтобы запустить все тесты в файле или запустить один тест в файле. Кроме того, можно настроить тестовый прогон с опциями, такими как запущение тестов параллельно (который требует Parallel Computing Toolbox), или запускающие тесты с заданным уровнем выходной детали.

Тестовые средства управления Запуском в панели инструментов обеспечивают альтернативу программно запущению тестов с runtests функция. Для получения дополнительной информации смотрите Запущенные Тесты в Редакторе.

Среда тестирования приложения: Автор автоматизировал тесты для приложений App Designer

Используйте среду тестирования приложения, чтобы записать автоматизированные тесты для ваших приложений. Среда тестирования приложения усиливает среду модульного тестирования MATLAB.

Можно использовать среду тестирования приложения MATLAB для тестовых приложений, созданных с App Designer или приложениями, созданными программно с помощью uifigure функция. Среда тестирования приложения позволяет вам создать тестовый класс, который программно выполняет жест на компоненте пользовательского интерфейса, таком как нажатие кнопки или перетаскивание ползунка, и проверяет поведение приложения.

Для получения дополнительной информации смотрите Среду тестирования Приложения.

Среда Модульного тестирования: Повторно выполните проваленные тесты одним нажатием кнопки

Если непройденный тест вызывается неправильным или неполным кодом для теста или для кода под тестом, полезно смочь повторно выполнить проваленные тесты быстро и удобно. Если непройденные тесты существуют в ваших результатах испытаний, то MATLAB отображает ссылку, чтобы повторно выполнить проваленные тесты после того, как он отображает количество проваленных тестов.

Totals:
   1 Passed, 1 Failed (rerun), 0 Incomplete.
   0.25382 seconds testing time.

Для получения дополнительной информации смотрите Повторное выполнение Проваленные Тесты.

Среда Модульного тестирования: Протестируйте, если значения указывают на существующие файлы или папки с IsFile и IsFolder ограничения

Можно протестировать если значение в виде строкового скаляра или вектора символов, точек к существующему файлу или папке.

  • Чтобы протестировать, если значение указывает на существующий файл, используйте verifyThatassertThatassumeThat, или fatalAssertThat с IsFile ограничение. Для получения дополнительной информации смотрите matlab.unittest.constraints.IsFile.

  • Чтобы протестировать, если значение указывает на существующую папку, используйте verifyThatassertThatassumeThat, или fatalAssertThat с IsFolder ограничение. Для получения дополнительной информации смотрите matlab.unittest.constraints.IsFolder.

Среда Модульного тестирования: Протестируйте, если два набора являются тем же самым с IsSameSetAs ограничение

Чтобы протестировать, если два набора являются тем же самым, используйте IsSameSetAs ограничение. Среда тестирования полагает, что тесты то же самое, если они содержат те же элементы. Наборы могут быть тем же самым, даже если у них есть различный порядок, форма и размер. Например, если S = {'a' 'b' 'c'}, затем установите S совпадает со следующими наборами.

S1 = {'a' 'b' 'c'};
S2 = {'c';'a';'b'};
S3 = {'a' 'b' 'c' 'c' 'b'};

Для получения дополнительной информации смотрите matlab.unittest.constraints.IsSameSetAs.

Среда Модульного тестирования: Выберите тесты тестовой иерархией классов

Можно запустить тесты, которые имеют заданный суперкласс:

  • Чтобы выбрать и запустить тестовые элементы, которые имеют заданный суперкласс, используйте 'Superclass' пара "имя-значение" с runtests, runperf, и testsuite функции или matlab.unittest.TestSuite методы создания набора.

  • Чтобы выбрать тестовые элементы из существующего тестового набора, используйте TestSuite.selectIf метод с HasSuperclass селектор.

Вопросы совместимости

Элементы тестового набора, созданные до MATLAB R2018a, не могут быть отфильтрованы тестовой иерархией классов. Чтобы отфильтровать эти тестовые элементы суперклассом, воссоздайте тестовый набор в R2018a или позже.

Среда Модульного тестирования: Прямой поток вывода к уникальным файлам для плагинов

К простому тексту выход от плагинов до уникального файла используйте matlab.unittest.plugins.ToUniqueFile поток вывода. Этот поток вывода полезен для запущения тестов параллельно, в то время как перенаправление вывело к файлу, поскольку это использует уникальное имя файла для каждого экземпляра потока вывода. ToUniqueFile поток вывода отличается от ToFile поток вывода, который перезаписывает файл. Для получения дополнительной информации смотрите matlab.unittest.plugins.ToUniqueFile.

ToUniqueFile поток вывода поддерживается для

Кроме того, matlab.unittest.plugins.OutputStream класс обеспечивает интерфейс для тестовых авторов, чтобы создать пользовательские потоки вывода.

Среда Модульного тестирования: Увеличенный доступ к параметрированным свойствам тестирования

Когда вы создаете параметрированный тест, вы задаете свойства в properties блокируйтесь с TestParameter, MethodSetupParameter, или ClassSetupParameter припишите, в зависимости от уровня параметризации для вашего теста. Можно теперь получить доступ к параметрам “-уровня”.

  • Тесты в Test блок метода может получить доступ к параметрам, которые вы задаете в TestParameter, MethodSetupParameter, и ClassSetupParameter properties блоки.

  • Тесты в TestMethodSetup блок метода может получить доступ к параметрам, которые вы задаете в MethodSetupParameter и ClassSetupParameter properties блоки.

  • Тесты в TestClassSetup блок метода может получить доступ к параметрам, которые вы задаете в ClassSetupParameter properties блок.

В предыдущих версиях MATLAB вы могли получить доступ только к параметрам от тестов в блоках метода на соответствующем уровне. Например, параметры заданы в MethodSetupParameter блок свойства был только доступен от тестов в TestMethodSetup блок метода. Для получения дополнительной информации смотрите, Создают Усовершенствованный Параметрированный Тест.

Среда Модульного тестирования: Сравните массивы ячеек символьных массивов с помощью StringComparator

В дополнение к поддержке строк и символьных массивов, StringComparator ограничение теперь поддерживает массивы ячеек символьных массивов. Для получения дополнительной информации смотрите matlab.unittest.constraints.StringComparator.

Вопросы совместимости

Обновите любые тесты, которые используют StringComparator ограничение, не удовлетворяемое равными массивами ячеек символьных массивов. Если массивы ячеек символьных массивов равны, компаратору удовлетворяют. В предыдущих версиях MATLAB компаратору не удовлетворили ни для каких значений, которые были массивами ячеек символьных массивов. Например, следующий тест передает в MATLAB R2018a и позже. В более ранних версиях MATLAB перестал работать тест, потому что компаратор не поддерживал массивы ячеек символьных массивов.

import matlab.unittest.TestCase
import matlab.unittest.constraints.StringComparator
import matlab.unittest.constraints.IsEqualTo
 
testCase = TestCase.forInteractiveUse;
actVal = {'coffee','cream','sugar'};
expVal = {'coffee','cream','sugar'};

testCase.verifyThat(actVal,IsEqualTo(expVal,'Using',StringComparator))

Среда Модульного тестирования: Метод сравнения для измененных объектов

С R2018a, ObjectComparator удовлетворен если isequaln возвращает true. Однако, если класс ожидаемого значения задает isequal метод, или видимый или скрытый, но не isequaln метод, ObjectComparator использует isequal метод для сравнения. В предыдущих релизах, ObjectComparator используемый isequal сравнить все объекты, если класс ожидаемого значения не задал видимое isequaln метод.

IsEqualTo ограничение и assertEqualassumeEqualfatalAssertEqual, и verifyEqual методы проверки усиливают ObjectComparator и, поэтому, наследуйте то же изменение в поведении. Для получения дополнительной информации смотрите matlab.unittest.constraints.ObjectComparator.

Вопросы совместимости

ObjectComparator теперь использует isequaln для сравнения вместо isequal если класс ожидаемого значения

  • Задает isequaln, или видимый или скрытый.

  • Не задает также isequal или isequaln.

Среда для тестирования производительности: Задайте несколько, помеченные контуры измерения в методах тестирования

Контуры измерения позволяют вам совершенствовать, которые кодируют меры по среде эффективности, и теперь можно пометить контуры измерения. Измерения от нескольких контуров с той же меткой в том же методе тестирования накоплены и суммированы. Среда эффективности добавляет метку, к тестовому имени элемента в результатах измерения. Для получения дополнительной информации смотрите startMeasuring.

Платформа для мокинга: Задайте значения свойств по умолчанию на фиктивном объекте

Когда вы создаете фиктивный объект для класса, можно задать значения по умолчанию для свойств, которые реализованы классом. Чтобы задать значения свойств по умолчанию, используйте DefaultPropertyValues аргумент пары "имя-значение" с createMock метод. Для получения дополнительной информации смотрите matlab.mock.TestCase.createMock.

Платформа для мокинга: Получите историю взаимодействия для фиктивного объекта

Чтобы получить историю записанных взаимодействий для фиктивного объекта, используйте любого matlab.mock.TestCase.getMockHistory метод или matlab.mock.InteractionHistory.forMock метод. Когда вы вызываете определенные публично видимые методы или доступ или изменяете определенные публично свойства видимости на дразнившем классе, платформа для мокинга записывает взаимодействие. Для получения дополнительной информации смотрите matlab.mock.TestCase.getMockHistory или matlab.mock.InteractionHistory.forMock.

Платформа для мокинга: Создайте макеты для классов, которые имеют Abstract свойства с другими атрибутами

Можно создать фиктивный объект для классов, которые имеют Abstract свойства и другие атрибуты. Например, можно создать макет для свойства, которое имеет атрибуты Краткого обзора и Константа. Макет реализует свойство как бетон, Constant свойство. Точно так же свойства с Abstract и Hidden атрибуты реализованы как бетон и Hidden свойства. Для получения дополнительной информации смотрите, Создают Фиктивный объект.

Пакет matlab.net.http: Потоковые данные к и из веб-сервиса и указателя формируются и многослойные сообщения

Действовать на или отображение передало данные потоком, в то время как это получается, используйте matlab.net.http.io.ContentConsumer класс. Чтобы получить или сгенерировать данные одновременно, это отправляется, используйте matlab.net.http.io.ContentProvider класс. Используя этот класс избегает потребности иметь все данные в памяти перед запуском сообщения.

Чтобы обработать формы и многослойные сообщения, используйте matlab.net.http.io.MultipartConsumer и matlab.net.http.io.MultipartProvider классы.

Следующие классы и методы были добавлены к matlab.net.http и matlab.net.http.field пакеты.

Интерфейс C++ MEX: Доступ к данным MATLAB и объектам, легче с C++

MEX-функции автора с помощью современных шаблонов разработки C++, расширенной поддержки типов данных и семантики копирования при записи MATLAB для более быстрой обработки больших массивов данных. Для получения дополнительной информации см. Приложения C++ MEX.

Если вам не нужны файлы MEX, которые работают в R2017b и ранее и вы знакомы с современным C++, то рассматриваете использование нового API C++ MEX и MATLAB Data API. Если вы - более удобная работа на языке C, продолжаете использовать API MEX C и Матричный API C.

Конструкторы класса: подкласс Автора, не реализовывая конструктора только, чтобы передать аргументы до конструктора суперкласса

MATLAB передает аргументы неявно от конструктора подкласса по умолчанию до конструктора суперкласса. Это поведение избавляет от необходимости реализовывать метод конструктора для подкласса только, чтобы передать аргументы конструктору суперкласса. Для получения дополнительной информации смотрите Неявный Вызов Наследованного Конструктора.

Валидация свойства: Получите информацию о валидации свойства

Получите информацию о валидации, заданной для свойства путем доступа к метаданным валидации для того свойства. Для получения дополнительной информации смотрите Интерфейс Метаданных к Валидации Свойства.

Валидация свойства: Задайте валидацию для абстрактных свойств

С MATLAB Version 9.4 (R2018a) можно задать валидацию для абстрактных свойств. Валидация применяется ко всем подклассам. Для получения дополнительной информации смотрите Абстрактную Валидацию Свойства.

Функции: вызовите numArgumentsFromSubscript для объектного точечного метода от перегруженного subsref

В релизах до MATLAB Version 9.4 (R2018a), встроенного numArgumentsFromSubscript функционируйте обработанные вызовы метода формы object.method неправильно.

В релизах до MATLAB Version 9.4 (R2018a), когда класс перегрузил subsref и numArgumentsFromSubscript и пользователь вызвал индексируемое выражение формы object.method(), MATLAB по имени subsref с 0 выходные параметры, не вызывая numArgumentsFromSubscript.

Если вместо этого пользователь вызвал object.method (без круглых скобок), затем MATLAB обработал это выражение как точечную ссылку и вызвал numArgumentsFromSubscript. Если перегруженный numArgumentsFromSubscript названный встроенной версией функции, MATLAB возвратил 1 для object.method выражение. Это вызвало ошибки, когда вызывающие методы, которые не возвращают выходных параметров и созданных различий в поведении между object.method() и object.method.

С MATLAB Version 9.4 (R2018a), когда метод называется посредством индексирующего точку выражения на правой стороне, встроенного numArgumentsFromSubscript возвращается 0. Из-за этого изменения MATLAB вызывает subsref с нулевыми выходными параметрами в обоих object.method() и object.method случаи.

Вопросы совместимости

Измененное поведение может произойти для случаев в который перегрузка классов numArgumentsFromSubscript и вызовы метода встроенная функция для индексации выражений, которые заканчиваются в точечном методе (object.methodСсылки.

Классы: Конкатенация членов перечисления matlab.lang.OnOffSwitchState с char лица, не являющегося членом какой-либо организации, и строкой

С релизом MATLAB Version 9.4 (R2018a), matlab.lang.OnOffSwitchState класс поддерживает специальное поведение конкатенации, чтобы включить формирование текстовых выражений путем конкатенации членов перечисления с векторами символов или строками. Для получения дополнительной информации смотрите matlab.lang.OnOffSwitchState.

Вопросы совместимости

В релизах до MATLAB Version 9.4 (R2018a), массивы, содержащие matlab.lang.OnOffSwitchState члены перечисления и вектор символов или строковые элементы потребовали, чтобы все элементы массива были конвертируемы членам перечисления (то есть, onoffTRUEложь, 1, или 0). Полученный массив имел тип matlab.lang.OnOffSwitchState. С релизом MATLAB Version 9.4 (R2018a) правила конкатенации включают конкатенацию с векторами символов или строками, которые не сопоставляют с членами перечисления. Для получения дополнительной информации смотрите Concatenation Rules for OnOffSwitchState.

Версия 3.4 Python: Поддержка прекращена

Поддержка версии 3.4 Python прекращена.

Вопросы совместимости

Чтобы гарантировать постоянную поддержку ваших приложений, обновите до поддерживаемой версии Python — версия 3.5 или 3.6.

Интеграция с системой контроля версий: Просмотрите изменения, сохраните версии и управляйте блокировками репозитория

Когда вы используете систему контроля версий SVN, история версий файла SVN теперь показывает структурный вид файлов массива изменений, который имеет контекстное меню. Можно выбрать особую версию файла и просмотреть изменения или сохранить версии. Для получения дополнительной информации см. Обзор изменений в Системе контроля версий.

Можно теперь контролировать и повредить блокировки SVN. Диалоговое окно SVN Repository Locks поддерживает рабочие процессы блокировки SVN в командах:

  • Определите, у кого есть блокировка

  • Повредите блокировки

  • Группа блокирует пользователем или файлом

Для получения дополнительной информации смотрите, Получают Блокировки Файла SVN.

MATLAB Engine API для C++: Установите и получите значение свойства на объекте в объектном массиве

С релизом R2018a приложения Engine C++ могут вызвать matlab::engine::MATLABEngine getPropertygetPropertyAsyncsetProperty, и setPropertyAsync функции членства с входными параметрами объектного массива и передачей индекс массива, чтобы получить доступ к скалярным объектам в массиве. В предыдущих релизах приложения Engine C++ могли получить доступ к свойствам объектов только от скалярных переменных объекта. Для получения дополнительной информации смотрите Переменные Передачи от MATLAB до C++.

MATLAB Data API: Приложения, созданные с R2018a API, не запускаются в MATLAB R2017b

Приложения с помощью MATLAB Data API, созданного в R2018a, не поддерживаются в MATLAB R2017b.

Вопросы совместимости

Приложения, созданные в MATLAB R2018a, запущенном только в MATLAB R2018a. Для получения дополнительной информации смотрите Совместимость версий.

MEX-функции: создайте Файлы MEX на C с чередованным комплексным API

С MATLAB Version 9.4 (R2018a) MATLAB использует представление устройства хранения данных interleaved комплексных чисел. Термин Interleaved complex относится к этому представлению, где действительные и мнимые части хранятся вместе. Для получения дополнительной информации смотрите Поддержку MATLAB Чередованного Комплексного API в MEX-функциях C.

Это изменение не влияет на язык MATLAB. Можно продолжить использовать функциональность, описанную в Комплексных числах без любой модификации функций и скриптов.

Вопросы совместимости

Если вы создаете MEX-функции C, S-функции MEX C/C++, или автономный движок MATLAB и приложения MAT-файла, то необходимо ли рассмотреть меня Потребность Обновить Мои файлы MEX, чтобы Использовать Чередованный Комплексный API? тема. MATLAB не поддерживает чередованный комплексный API для функций Фортрана.

Функциональность для mxGetPr (C), mxSetPr (C), mxGetPi (C), mxSetPi (C), mxGetData (C), mxSetData (C), mxGetImagData (C), mxSetImagData (C), и mxGetElementSize (C) изменился. Для получения дополнительной информации см. Функциональность, удаляемую или измененную.

MEX-функции: специфичные для релиза опции сборки

mex команда имеет новые опции сборки, -R2017b и -R2018a, которые соединяются со специфичными для релиза версиями Матричного API C.

Версия, встроенная в файлы MEX

mex команда встраивает номер версии MEX в файлы MEX, созданные MATLAB R2016b и позже. Этот номер идентифицирует версию Матричного API, против которого MEX-функция ожидает соединяться во времени выполнения.

Вопросы совместимости

Если вы не используете mex команда, чтобы создать ваши файлы MEX, затем необходимо обновить команды, которые вы используете, чтобы создать файлы MEX. Для получения дополнительной информации см. https://www.mathworks.com/matlabcentral/answers/377799-compiling-mex-files-without-the-mex-command.

Perl 5.26.1: Поддержка MATLAB

MATLAB поставляется с версией 5.26.1 Perl.

  • Смотрите www.perl.org для стандартного распределения perl, источника perl и информации об использовании perl.

  • См. https://metacpan.org/pod/HTML:: Синтаксический анализатор для стандартного распределения HTML:: Синтаксический анализатор, исходный код и информация об использовании HTML:: Синтаксический анализатор.

  • См. https://metacpan.org/pod/HTML:: Tagset для стандартного распределения HTML:Tagset, исходного кода и информации об использовании HTML:Tagset.

Вопросы совместимости

Если вы используете perl команда на платформах Windows, смотрите www.perl.org для получения информации об использовании этой версии языка программирования Perl.

Системные объекты: Создание системных объектов в MATLAB

Системные объекты являются специализированным видом объекта MATLAB, которые позволяют вам легко реализовывать и симулировать динамические системы. Можно использовать предопределенные Системные объекты, поставленные со многими Системными Тулбоксами. Можно также создать собственные Системные объекты в редакторе MATLAB. Для получения дополнительной информации смотрите, Задают Объекты Базовой системы.

Когда вы создаете Системные объекты в R2018a, по умолчанию, пользователей которого Системный объект может изменить характеристики входных параметров, дискретных состояний, настраиваемых свойств от "вызова к вызову". Новые и обновленные методы позволяют вам ограничивать эти характеристики:

Характеристика, которая может изменитьсяМетоды, чтобы ограничить характеристику

количество входных параметров

getNumInputsImpl

количество выходных параметров

getNumOutputsImpl

введите размер

isInputSizeMutableImpl

введите тип данных

isInputDataTypeMutableImpl

введите сложность

isInputComplexityMutableImpl

типы данных дискретного состояния

isDiscreteStateSpecificationMutableImpl

настраиваемые типы данных свойства

isTunablePropertyDataTypeMutableImpl

Для получения дополнительной информации смотрите Системные объекты.

Вопросы совместимости

Если вы хотите сохранить строгие правила для входных параметров, настраиваемые свойства и дискретные состояния, используют sysobjupdate функционируйте, чтобы обновить код в существующих Системных объектах. Для получения дополнительной информации ввести help sysobjupdate в командной строке MATLAB.

isInputSizeLocked метод будет удален в будущем релизе. Используйте isInputSizeMutableImpl вместо этого.

Поддержка системного объекта строк

Системные объекты принимают строки как входные параметры для ввода текста и значений свойств.

При авторской разработке Системного объекта можно использовать строки, чтобы задать свойство StringSet. Однако значение по умолчанию свойства StringSet должно быть задано как вектор символов.

.NET: поддержки string тип данных

При вызове метода.NET или функции, MATLAB преобразует string скалярные аргументы на.NET System.String объект и string аргументы Array к System.String[]. Для получения дополнительной информации смотрите Данные о Передаче к Объектам.NET.

MATLAB string функция преобразует System.String скалярные аргументы к string скаляр. Функция преобразует String.String[], String.String[,], и так далее, к MATLAB string массивы с теми же размерностями и размерами. Преобразование зубчатых массивов, например, String.String[][], не поддерживается. Для получения дополнительной информации смотрите, Обрабатывают Данные, Возвращенные в Объекты.NET.

Поддержка компилятора изменяется для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла

ПоддержкаКомпиляторПлатформа

Добавленный

GNU® gcc и gfortran версия 6.x. Версия 6.3 рекомендована.

Linux

Прекращенный

GNU gcc и gfortran версия 4.9.x

Linux

Прекращенный

Apple XCode 7.x

macOS

Прекращенный

Intel компоновщик XE 2013 C++

Windows

Прекращенный

Intel визуальный компоновщик XE 2013 Фортрана

Windows

Прекращенный

Intel компоновщик XE 2013 Фортрана

macOS

Быть постепенно сокращенным

Visual C++ 2 013 профессионалов

Windows

Чтобы гарантировать постоянную поддержку создания ваших файлов MEX, рассмотрите обновление до другого поддерживаемого компилятора. Для актуального списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

Программируемая зависимость от определенного диагностического подкласса от getDiagnosticFor метод ограничения и допусков

Предупреждает

Не применяется

Переделайте код, который использует свойства или методы, характерные для matlab.unittest.diagnostic.ConstraintDiagnostic экземпляры возвращены в getDiagnosticFor метод matlab.unittest.constraints классы.

В будущем релизе, диагностика, возвращенная в ограничение и классы допуска в matlab.unittest.constraints пакет будет подклассами matlab.unittest.diagnostics.Diagnostic и не могут быть экземпляры matlab.unittest.diagnostic.ConstraintDiagnostic.

Отрицание matlab.unittest.constraints.ReturnsTrue ограничение (~ReturnsTrue)

Ошибки

Не применяется

Измените логику для тестов, которые используют отрицание ReturnsTrue ограничение.

mxGetPi и mxSetPi в MEX-функциях C, созданных с чередованным комплексным API (mex опция -R2018a)

Ошибки

Использование mxGetComplexDoubles вместо mxGetPr и mxGetPi.

Поддержка MATLAB чередованного комплексного API в MEX-функциях C

mxGetImagData и mxSetImagData в MEX-функциях C, созданных с чередованным комплексным API (mex опция -R2018a)

Ошибки

Введенные функции Доступа к данным

Поддержка MATLAB чередованного комплексного API в MEX-функциях C

mxGetPr и mxSetPr в MEX-функциях C, созданных с чередованным комплексным API (mex опция -R2018a)

Все еще запуски, когда требуется действительный mxArrays.

Ошибки, когда призвал к комплексному mxArrays.

Введенные функции Доступа к данным

Поддержка MATLAB чередованного комплексного API в MEX-функциях C

mxGetData и mxSetData в MEX-функциях C, созданных с чередованным комплексным API (mex опция -R2018a)

Все еще работаетВведенные функции Доступа к даннымИспользование mxGetData (C) и mxSetData (C) для нечисловых массивов только.

mxGetElementSize в MEX-функциях C, созданных с чередованным комплексным API (mex опция -R2018a)

Все еще работает

Не применяется

mxGetElementSize (C)

mexSetTrapFlag в матричном API C и Фортрана

Ошибки

mexCallMATLABWithTrap

mexCallMATLABWithTrap позволяет вам отловить, или прерывание, ошибки.

R2017b

Новые возможности, исправления ошибок, Вопросы совместимости

Рабочий стол

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

При записи команд MATLAB автоматически отображает контекстные подсказки для аргументов, значений свойств и альтернативных синтаксисов. Например, если вы хотите использовать size функция, MATLAB отображает информацию о синтаксисе, чтобы помочь вам записать команду.

MATLAB также автоматически предлагает и завершает имена функций, моделей, объектов MATLAB, файлов, папок, переменных, структур, графических свойств, параметров и опций. Для получения дополнительной информации см. Автоматические предложения и завершения кода.

Live Editor: Live скрипты Экспорта, чтобы ПРОПИТАТЬ ЛАТЕКСОМ формат ​​​​​​​​​

Чтобы экспортировать ваш live скрипт в формат LaTeX, на вкладке Live Editor, выбирают Save> Export to LaTeX. MATLAB создает отдельный Расширяемый язык таблиц стилей (XSL) файл в той же папке, где и выходной документ, если matlab.sty там нет. Файлы XSL дают вам больше контроля внешним видом выходного документа. Для получения дополнительной информации смотрите Live скрипты Доли.

Live Editor: Отображение графиков с высоким разрешением в PDF вывод ​​​

При сохранении live скрипта как PDF MATLAB теперь включает графики с высоким разрешением в файле PDF.

Live Editor: Горизонтально выровняйте текст, уравнения, и отображает ​​​​​​​​​​​

Можно горизонтально выровнять текст, уравнения и изображения в live скриптах. На вкладке Live Editor, в разделе Text , оставленный выбор, центр или право.

Для получения дополнительной информации смотрите Live скрипты Формата.

Live Editor: Автоматически совпадайте с разделителями и перенесите комментарии при редактировании кода ​​

MATLAB автоматически заполняет круглые скобки и кавычки при вводе кода в Live Editor. Например, если вы вводите r = rand(, MATLAB автоматически добавляет закрывающие скобки в оператор (r = rand()). Live Editor также автоматически заполняет любые комментарии, векторы символов и строки, которые разделены через две линии.

Для получения дополнительной информации см. Код Запуска.

Live Editor: Просмотрите и просмотрите табличные данные путем прокрутки, включая переменную, и строка называет ​​​​​​​​

Используйте полосы прокрутки, чтобы исследовать данные в таблицах и расписаниях в live скриптах. Просмотрите переменную и имена строки, включенные в таблицы.

Live Editor: Контрольный код для ошибок и предупреждений с помощью строки сообщений и индикатора сообщения

Определите, содержит ли live скрипт ошибку или предупреждение использования индикатора сообщения. Перейдите через ошибки и предупреждения с помощью строки сообщений. Для получения дополнительной информации смотрите Проверку кода для Ошибок и Предупреждений.

Документация: Использование Live Editor в веб-браузере, чтобы открыть, отредактировать, и запустить примеры онлайн-документации MATLAB

Открытый, редактирование и примеры live скрипта запуска непосредственно из онлайн-документации MATLAB с помощью Live Editor в веб-браузере. Чтобы открыть пример, нажмите кнопку Try this Example справа от примера и выберите Try it in your browser.

MATLAB Drive: Хранилище, доступ, и управляют вашими файлами отовсюду

Если вам установили Коннектор MATLAB Drive в вашей системе, можно получить доступ к файлам и папкам в диске из MATLAB с помощью Браузера текущей папки.

Чтобы просмотреть ваше недавнее действие, в Браузере текущей папки, щелкают правой кнопкой по любому файлу MATLAB Drive или папке и выбирают MATLAB Drive> View Recent Activity.... Чтобы открыть MATLAB Drive онлайн, щелкните правой кнопкой по любому файлу MATLAB Drive или папке и выберите MATLAB Drive> Go to MATLAB Drive Online....

Для получения дополнительной информации смотрите, Управляют Файлами и Папками или документацией MATLAB Drive.

Add-On Manager: Настройка среды MATLAB путем включения и отключения дополнений ​​​​​​

Включите и отключите дополнения в Add-On Manager, чтобы настроить вашу среду MATLAB. Чтобы включить дополнение в Add-On Manager, нажмите кнопку справа от дополнения и выберите Enabled. Эта опция только доступна для приложений, тулбоксов, функций, наборов и моделей Simulink.

Также можно включить или отключить дополнение с помощью matlab.addons.enableAddon и matlab.addons.disableAddon функции.

Add-On Manager: Нахождение установленных дополнений быстрее с помощью вида и поиск ​​​​​​​​​​

Используйте вид и поиск в Add-On Manager, чтобы найти установленные дополнения более эффективно.

Упаковка тулбокса: Создание Начала работы для тулбокса из шаблона Live Script ​​​​​​​​​​​​​

Можно создать Начало работы, когда вы группируете свой тулбокс. Пользователи вашего тулбокса могут просмотреть Начало работы через меню параметров для тулбокса в Add-On Manager. После того, как вы выберете свою папку тулбокса, опция, чтобы создать Начало работы появляется в разделе Examples, Apps, and Documentation диалогового окна Package a Toolbox. Для получения дополнительной информации смотрите, Создают и Тулбоксы Доли.

Упаковка тулбокса: Совместно используйте свой тулбокс на Exchange Файла непосредственно, когда вы группируете его ​​​​

Когда вы создаете свой тулбокс, можно группировать тулбокс и совместно использовать его на MATLAB Центральный Обмен файлами. Выберите Package and Share из меню Package наверху диалогового окна Package a Toolbox. Эта опция открывает веб-страницу для вашего представления тулбокса к представлению Обмена файлами. MATLAB заполняет форму представления Обмена файлами с информацией от диалогового окна Package a Toolbox. Рассмотрите и представьте форму, чтобы совместно использовать ваш тулбокс на Обмене файлами. Для получения дополнительной информации смотрите, Создают и Тулбоксы Доли.

Командное окно: Просмотр обновленного отображения для массивов ячеек

При отображении массива ячеек выводы Командное окно теперь отображает фигурные скобки вокруг каждой ячейки. Фигурные скобки показывают, что разделители ячейки и справки объединяют отображение массива ячеек.

Используйте фигурные скобки, чтобы получить доступ к содержимому ячейки. Например, этот код создает 2 3 массив ячеек текста и числовых данных, и затем отображает содержимое последней ячейки в массиве ячеек.

C = {'one', 'two', 'three'; 1, 2, 3}
last = C{2,3}
C =
  2×3 cell array
    {'one'}    {'two'}    {'three'}
    {[  1]}    {[  2]}    {[    3]}

last =
     3
Кроме того, если ячейка содержит числовое пустое значение, то Командное окно отображает класс и размер ячейки.

Для получения дополнительной информации смотрите, Создают Массив ячеек.

Язык и программирование

CodeCompatibilityReport: Сгенерируйте отчет, который помогает обновлению кода к более новому MATLAB выпустить ​​

Можно сгенерировать отчет потенциальных проблем совместимости в коде с помощью codeCompatibilityReport функция. Например, отчет содержит информацию об использовании нежелательных или удаленных функций в вашем коде и вхождении недопустимых синтаксисов. После того, как вы обновите до более новой версии MATLAB, можно использовать этот отчет идентифицировать потенциальные проблемы совместимости в существующем коде.

В качестве альтернативы можно создать CodeCompatibilityAnalysis возразите, чтобы сохранить результаты с помощью analyzeCodeCompatibility функция.

isStringScalar Функция: Определите, является ли введенный массивом строк с одним элементом

Чтобы определить, является ли входной параметр массивом строк, который имеет только один элемент, используйте isStringScalar функция.

convertStringsToChars и convertCharsToStrings Функции: Позвольте вашему коду принять все типы текстов как входные параметры, в противном случае не изменяя ваш код

Чтобы заставить ваш существующий код принять строки как входные параметры, можно использовать convertStringsToChars функция в целом списке входных параметров. convertStringsToChars преобразует массивы входной строки в векторы символов или массивы ячеек из символьных векторов при возврате всех других неизменных входных параметров. Если вы добавляете convertStringsToChars к началу вашего кода затем вы не должны вносить никакие другие изменения, чтобы принять строки как входные параметры.

Точно так же convertCharsToStrings преобразует векторы вводимого символа или массивы ячеек из символьных векторов к строковым массивам при возврате других неизменных входных параметров. Если у вас есть код, который работает со строками, то можно добавить convertCharsToStrings к началу так, чтобы это также приняло символьные массивы как входные параметры.

arrayfuncellfun, и structfun Функции: Возвратите массивы объектов как выходные аргументы

arrayfun, cellfun, и structfun функции могут возвратить массивы объектов любого типа данных, пока объекты могут быть конкатенированы.

Скрипты: Выполнение разделов в скриптах, содержащих локальные функции

Можно запустить отдельный раздел в скрипте, который содержит локальные функции. Чтобы запустить раздел, на вкладке Editor или Live Editor, нажимают Run Section.

Примечание

Необходимо зафиксировать все синтаксические ошибки в скрипте прежде, чем запустить отдельный раздел.

isfile и isfolder Функции: Определите, ли введенный файл или папка

Используйте isfile и isfolder функции, чтобы определить, является ли вход файлом или папкой, расположенной на заданном пути или в текущей папке.

Например, этот код создает папку, и затем он использует isfile и isfolder функции, чтобы проверять, является ли вход файлом или папкой:

mkdir myfolder;
result1 = isfile('myfolder')
result2 = isfolder('myfolder')
result1 =
  logical
   0

result2 =
  logical
   1

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

cellstr функция преобразует отсутствующие значения в массиве входной строки к символьным массивам 0 на 0 в выходном массиве ячеек.

Все еще работает

Не применяется

Запуск в R2017b, cellstr преобразует отсутствующие значения в строковых массивах к символьным массивам 0 на 0. В R2016b и R2017a, cellstr выдает ошибку, если входной параметр является массивом строк, который содержит отсутствующие значения.

isdir

Все еще работает

isfolder

Замените все экземпляры isdir с isfolder.

isdir поиски папок на пути поиска файлов, который может привести к неожиданным результатам. isfolder поиски папок только на заданном пути или в текущей папке.

На Windows, tempdir проверки сначала на существование TMP, и затем для TEMP.Все еще работаетНе применяетсяНа Windows, tempdir функционируйте теперь проверяет сначала на существование TMP переменная окружения, и затем это проверяет на TEMP переменная окружения. Это использует первый найденный путь. Ранее tempdir проверяемый сначала на существование TEMP.

На Linux и Mac, tempdir функционируйте использует TMPDIR.

Все еще работает

Не применяется

На Linux и Mac, tempdir функционируйте теперь использует TMPDIR переменная окружения, если это задано.

Используя идентификатор MATLAB, чтобы вызвать функцию и затем использование его как имя переменной в той же функции

Предупреждает

Выберите различные идентификаторы MATLAB для локальных или импортированных функций и имен переменных.

В будущем релизе, с помощью того же идентификатора для локальной или импортированной функции, и затем с помощью него для имени переменной приведет к ошибке. Например, в будущем релизе, обе из следующих функций приведут к ошибке.

function myFunc()
    x = containers.Map; 
    containers = 1;
end
function myFunc2()
    import java.lang.*
    % includes java.lang.String
    s = String('Hello');
    String = 1;
end

Индексация в неявно заданную переменную в функции

Все еще работает

Явным образом задайте переменную прежде, чем индексировать в к нему.

В настоящее время идентификатор без явного объявления классифицируется как переменная, когда он индексируется с двоеточием, end, или фигурные скобки. Например, X(a,b,:), X(end), или X{a}. В будущем релизе, если функция того же имени существует на пути, переменная будет классифицирована как функция.

Рассмотрите следующий код:

function myfunc()
    load data.mat;
    disp(x(:))
end
Если вы намереваетесь использовать x как переменная из data.mat вместо функции явным образом задайте его.
function myfunc()
    load data.mat x;
    disp(x(:))
end

Точно так же использовать x как переменная, полученная из скрипта, задайте переменную прежде, чем вызвать скрипт. Это поведение также применяется, если переменная неявно введена какой-либо из следующих функций: simevalevalc, и assignin. Например, если myscript.m задает x, задайте x прежде calling myscript.

function myfunc2()
    x = [];
    myscript;
    disp(x(:))
end

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

Все еще работает

Явным образом задайте совместно используемые переменные в родительской функции прежде, чем вызвать вложенную функцию.

Рассмотрите следующий код.

function myfunc()
    nested();
    x;
    function nested()
        x = 1;
    end
end
В настоящее время, если x функция на пути, MATLAB классифицирует его как функцию в myfunc и переменная в nested. В противном случае MATLAB классифицирует его как переменную, совместно использованную nested и myfunc.

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

function myfunc()
    x = 0;
    nested();
    x;
    function nested()
        x = 1;
    end
end 

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

Все еще работает

Не применяется

plot оператор в следующем nested вызовы функции plot функция на пути, не pkg.plot функция.

В будущем MATLAB вызовет plot функция в pkg.plot.

function myfunc
import pkg.plot
    function nested
        plot
    end
end

Точно так же в следующем примере, даже если plot функция задана в pkg.*, MATLAB вызывает функцию на пути. Однако в будущем, MATLAB вызовет функцию в импортированном пакете pkg.*.

function myfunc
import pkg.*
    function nested
        plot
    end
end
ans во вложенных функциях

Все еще работает

Не применяется

Вложенные функции теперь доступ и изменяют ans переменная, которая задана в родительской функции. В будущих релизах вложенные функции будут иметь доступ к ans переменная, даже если переменная объявляется неявно, не подавляя выход. Например, в будущих релизах, в этом коде, ans возвращается 1.

function foo
    a=1;
    a  % Assigns “ans” to 1.
    nested()
    function nested
       ans % will be 1
    end
end

Используя ans как имя функции

Предупреждает

Не применяется

Переименуйте все функции с именем ans. В будущем релизе, с помощью ans когда имя функции выдает ошибку.

Объявление переменной как глобальная переменная после ссылки на него

Предупреждает

Объявите переменные как глобальную переменную перед использованием их.

В настоящее время, если вы объявляете переменную как глобальную переменную после ссылки на него, MATLAB выдает предупреждение, и переменная становится глобальной переменной. В будущем релизе это приведет к ошибке.

MATLAB отключает обнаружение изменения папки для всего matlabroot

Все еще работаетНе применяетсяMATLAB теперь отключает обнаружение изменения папки для всех файлов и папок в matlabroot папка. Ранее MATLAB только отключал обнаружение изменения папки для файлов и папок в matlabroot/Toolbox. Для получения дополнительной информации смотрите, что Путь к Тулбоксу Кэшируется в MATLAB.

Математика

decomposition Объект: Решение линейных систем неоднократно с улучшенной производительностью

decomposition объекты эффективно хранят матричное разложение для повторного использования в решении линейных систем Ax = b или xA = b. Эти объекты позволяют вам усилить выигрыши в производительности предварительного вычисления матричного разложения, но они не требуют знания того, как использовать матричные факторы.

lsqminnorm Функция: Нахождение решения минимальной нормы недоопределенной линейной системы

Для недоопределенных задач наименьших квадратов A*x ≈ b где несколько эквивалентных решений методом наименьших квадратов существуют, x = lsqminnorm(A,b) возвращает решение методом наименьших квадратов x это минимизирует norm(x) среди всех векторов, которые минимизируют norm(A*x-b).

Ранее эта функциональность была доступна ограниченным способом с помощью x = pinv(A)*b. Однако lsqminnorm быстрее, поскольку это не должно вычислять псевдообратный pinv(A), и это также поддерживает разреженные матрицы.

dissect Функция: Переупорядочение столбцов разреженной матрицы с помощью вложенного упорядоченного расположения рассечения

Используйте dissect функция, чтобы сгенерировать упорядоченные расположения сокращения заливки разреженных матриц. Упорядоченное расположение сокращения заливки, произведенное dissect имеет тенденцию уменьшать устройство хранения данных и время вычисления для факторизаций разреженной матрицы, когда по сравнению с другим переупорядочением функционирует такой как amd.

vecnorm Функция: Вычисление векторно-мудрых норм массивов

Использование vecnorm вычислить норму строк и столбцов числового N-мерного массива. В отличие от этого, norm функция, которая вычисляет матричную норму, vecnorm обрабатывает элементы в заданном измерении как векторы и вычисляет норму каждого вектора.

polyshape Объект: Создайте, анализируйте и визуализируйте 2D многоугольники

polyshape функция позволяет вам создать многоугольник из списка 2D вершин. Например, p = polyshape([0 0 1 1],[0 1 1 0]) создает квадрат с вершинами (0,0), (0,1), (1,1), и (1,0).

После того, как вы создаете polyshape объект p, используйте команду plot(p) визуализировать его. Также можно вычислить общие геометрические количества p, такой как его центроид и область. Можно преобразовать p с помощью перевода, вращения или масштабирования, и можно запросить свойства p такой как его количество контуров или отверстий. Если вы работаете с несколькими многоугольниками, то можно вычислить количества, такие как их пересечение и объединение.

eigs Функция: Улучшенный алгоритм и новые опции

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

  • Новый sigma опции

    Эта таблица суммирует новые, более описательные опции для sigma. Эти изменения не требуют никаких обновлений существующего кода, поскольку старые значения продолжают поддерживаться.

    Старый sigmaНовый sigmaКакие собственные значения?
    'LM''largestabs'max(abs(d))
    'SM''smallestabs'min(abs(d))
    'LA' (если действительный симметричный), 'LR' (в противном случае)'largestreal'max(real(d))
    'SA' (если действительный симметричный), 'SR' (в противном случае)'smallestreal'min(real(d))
    'BE' (если действительный симметричный)'bothendsreal'Комбинация значений возвращена 'largestreal' и 'smallestreal'
    'LI' (если комплексный)'largestimag'max(imag(d))
    'SI' (если комплексный)'smallestimag'min(imag(d))
    'LI' (если действительный несимметричный)'bothendsimag'Комбинация значений возвращена 'largestimag' и 'smallestimag'

  • sigma значения 'LR', 'LA', 'SR', 'SA', и 'BE' примите и симметричные и несимметричные матрицы

    Если eigenproblem симметричен, он имеет действительные собственные значения. По этой причине 'LR'/'LA' и 'SR'/'SA' теперь считаются эквивалентными eigs.

    В несимметричном случае, 'BE' опция использует действительную часть каждого собственного значения, чтобы определить который собственные значения возвратиться. Поведение неизменно для проблем, которые ранее позволили 'BE' опция.

  • Альтернативные пары "имя-значение" для опций

    Эта таблица содержит взаимно-однозначное отображение старых полей структуры опции к соответствующим новым парам "имя-значение". Эти изменения не требуют никаких обновлений существующего кода, поскольку структура опций продолжает поддерживаться.

    Поле структуры опцийПара "имя-значение"Новые поведения
    issym'IsFunctionSymmetric'Эта опция используется только для входных параметров указателя на функцию. Для матричных входных параметров, eigs игнорирует эту опцию.
    isreal-eigs игнорирует эту опцию, потому что новый алгоритм не должен знать, является ли входная матрица действительной или комплексной.
    tol'Tolerance'Новое значение по умолчанию 1e-14.
    maxit'MaxIterations' 
    p'SubspaceDimension' 
    v0'StartVector'eigs использует тот же стартовый вектор для каждого вызова так, чтобы выход был восстанавливаем между вызовами.
    disp'Display'Значение отображения 2 больше не возвращает время выполнения. Вместо этого eigs обрабатывает значение 2 то же самое как значение 1. Кроме того, сообщения, показанные 'Display' опция изменилась. Новые сообщения показывают невязку в каждой итерации вместо значений Ритца.
    spdB'IsSymmetricDefinite'Новая опция.
    cholB'IsCholesky' 
    permB'CholeskyPermutation' 
    fail'FailureTreatment'Новая опция.
Вопросы совместимости

eigs функция также имеет некоторые новые поведения, которые влияют на выход и могут потребовать обновлений кода.

  • Изменения в порядке сортировки выхода

    eigs теперь сортирует выход согласно значению sigma. Например, команда eigs(A,k,'largestabs') производит k собственные значения, отсортированные в порядке убывания по величине.

    Ранее порядок сортировки выхода, произведенного eigs не гарантировался.

  • Воспроизводимость

    Вызов eigs многократно по очереди теперь приводит к тому же результату. Установите 'StartVector' к случайному вектору, чтобы изменить это поведение.

  • Отображение

    Значение отображения 2 больше не возвращает время выполнения. Вместо этого eigs обрабатывает значение 2 то же самое как значение 1. Кроме того, сообщения, показанные 'Display' опция изменилась. Новые сообщения показывают невязку в каждой итерации вместо значений Ритца.

svds Функция: Установка опций с парами "имя-значение"

Можно использовать пары "имя-значение", чтобы установить опции с svds вместо того, чтобы использовать структуру опций. Эта таблица содержит взаимно-однозначное отображение старых полей структуры опции к соответствующим новым парам "имя-значение".

Эти изменения не требуют никаких обновлений существующего кода, поскольку структура опций продолжает поддерживаться.

Поле структуры опцийПара "имя-значение"
tol'Tolerance'
maxit'MaxIterations'
p'SubspaceDimension'
u0'LeftStartVector'
v0'RightStartVector'
fail'FailureTreatment'
disp'Display'

Функции интерполяции: Метод для измененного Акима кубическая интерполяция Эрмита

griddedInterpolant, interp1, interp2, interp3, и interpn функции теперь поддерживают метод интерполяции 'makima'. Этот модифицированный Акима кубический метод интерполяции Эрмита имеет эти свойства:

  • Это - C1 непрерывный.

  • Это производит меньше волнистостей, чем 'spline', но результат не сглаживается так настойчиво как 'pchip'.

  • В отличие от 'pchip', это поддерживает массивы N-D.

  • В отличие от 'spline', это не производит перерегулирования.

convn Функция: Вычисление сверток на многомерных массивах с улучшенной производительностью

Можно вычислить свертки на многомерных массивах быстрее с convn функция.

subgraph и highlight Функции: Определение вершин графика с логическим вектором

subgraph и highlight функции для сетевого анализа теперь принимают, что логический вектор выбирает узлы.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

[bins,edges] = discretize(X,dur) где X массив длительности или datetime

Все еще работает

N/A

В R2017a и более поздних релизах, discretize(X,dur) работа на datetime или массиве длительности X использует максимум 216 = 65 536 интервалов. Это выравнивает поведение discretize с тем из histcounts и histogram. В релизах перед R2017a, discretize не наложил это ограничение на количество интервалов в результате.

Графика

geobubble Функция: Создайте интерактивную карту с пузырями, размер которых и цвет меняются в зависимости от значений данных

Создайте интерактивную карту с пузырями, размер которых и цвет меняются в зависимости от использования значений данных geobubble.

wordcloud Функция: Отображение слов в различных размерах на основе частоты или пользовательских данных размера

Отобразите слова в различных размерах на основе частоты или пользовательского использования данных о размере wordcloud.

binscatter Функция: Визуализация плотности данных с динамической корректировкой размера интервала

Использование binscatter визуализировать сгруппированные точечные графики и идентифицировать тренды и отношения в массивах данных. binscatter производит график, который похож на 2D гистограмму (histogram2). Однако начиная с binscatter функция имеет пользовательское поведение изменения масштаба, которое увеличивает разрешение, как вы увеличиваете масштаб, это лучше подходит для визуального исследования данных.

Поддержка Длинного массива: Визуализируйте данные, которые не помещаются в память, с помощью plotрассеяние, и binscatter

plot, scatter, и binscatter функции теперь поддерживают длинные массивы. Эти функции отображают данные на графике в итерациях, прогрессивно добавляя к графику, когда больше данных считано. Масштабирование и панорамирование поддерживаются в процессе обновления, до завершения построения.

heatmap Функция: Сортировка строк и столбцов и использует пользовательские метки в тепловой карте

Можно сделать новые типы из модификаций к тепловой карте, такие как переупорядочение или перемаркировка значений вдоль каждой оси. Используйте новый HeatmapChart перечисленный в этой таблице. Если вы хотите переупорядочить значения, также можно использовать sortx и sorty функции.

СвойствоОписание
XData и YDataЗначения сопоставлены со строками или столбцами в ColorData.
XDisplayData и YDisplayDataПорядок значений вдоль оси X или оси Y. Используйте эти свойства просмотреть, перестроить, или показать только подмножество значений.
XDisplayLabels и YDisplayLabelsМетки для оси X или значений оси Y. Используйте эти свойства просмотреть или повторно пометить значения.
XLimits и YLimitsПервое и последнее значение отображено вдоль оси X или оси Y.
ColorDisplayDataЗначения, когда они появляются в тепловой карте, отсортированной на основе XDisplayData и YDisplayData. Это - свойство только для чтения.

Для примера смотрите, Создают Тепловую карту из Табличных данных.

bar Функция: Управление отдельными цветами панели

Задайте различный цвет для каждой панели с помощью нового CData свойство для Bar объекты. Например, создайте столбчатую диаграмму и измените цвет второй панели.

b = bar(rand(10,1));
b.FaceColor = 'flat';
b.CData(2,:) = [.5 0 .5];

Для получения дополнительной информации смотрите Bar Properties.

Цвета диаграммы: Создание столбиковых диаграмм и диаграмм областей с новыми цветами по умолчанию

Подобно линейным диаграммам столбчатые диаграммы и диаграммы областей теперь используют цвета от ColorOrder свойство Axes объект. Ранее графики использовали цвета из палитры.

Эта таблица показывает цветовое различие для столбчатых диаграмм.

R2017b и позже (ColorOrder)Предыдущие релизы (палитра)

Эта таблица показывает цветовое различие для диаграмм областей.

R2017b и позже (ColorOrder)Предыдущие релизы (палитра)

Вопросы совместимости

Столбчатые диаграммы и диаграммы областей используют различные цвета, чем в предыдущих релизах.

  • Чтобы создать столбчатую диаграмму, которая использует цвета палитры, устанавливает FaceColor свойство к 'flat'. Затем установите CData свойство для каждого Bar возразите против целого числа. Например:

    y = [1 3 5; 3 2 7; 3 4 2];
    b = bar(y,'FaceColor','flat');
    for k = 1:size(y,2)
        b(k).CData = k;
    end
    

  • Чтобы создать диаграмму областей, которая использует цвета палитры, устанавливает FaceColor свойство к 'flat'. Например:

    y = [1 3 5; 3 2 7; 3 4 2];
    area(y,'FaceColor','flat')

Объект осей: Определение целевых осей для большего количества функций

Эти функции теперь поддерживают Axes возразите как первый входной параметр: camlightскрытыйisholdlightangleподсветка, и material.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости
Цвета по умолчанию для столбчатых диаграмм и диаграмм областейВсе еще работаетНе применяетсяСтолбчатые диаграммы и диаграммы областей имеют новые цвета по умолчанию. Эти графики используют цвета от последовательности цветов вместо цветов палитры. Для получения дополнительной информации смотрите цвета диаграммы: Создание столбиковых диаграмм и диаграмм областей с новыми цветами по умолчанию.
Пределы по осям по умолчанию для столбчатых диаграмм, гистограмм и графиков графикаВсе еще работаетНе применяетсяСтолбчатые диаграммы, гистограммы и графики графика могут использовать немного отличающиеся пределы, чем в предыдущих релизах. Эти графики автоматически выбирают пределы, которые сосредотачивают данные. Если вы хотите задать различные пределы, используйте xlim и ylim функции.
barh функция с Horizontal параметрПредупреждаетbar функцияУдалите экземпляры кода, который использует barh функция с Horizontal параметр. Чтобы создать вертикальную диаграмму, используйте bar функция. Чтобы создать горизонтальную диаграмму, используйте barh функция.
bar3 функция со стилем линии или спецификацией символа маркераОшибкиНе применяетсяУдалите экземпляры кода, который передает стиль линии или символ маркера к bar3 функция, такая как bar3(y,z,'r:*'). В предыдущих релизах проигнорированы стиль линии и символ маркера. Вместо этого задайте только цвет, такой как bar3(y,z,'r').
legend функцияВсе еще работаетНе применяется

legend функционируйте теперь всегда создает легенду, сопоставленную с текущими или заданными осями. Если оси не содержат данных, то legend функция создает пустую легенду. Если оси не существуют, то legend функция создает оси с пустой легендой.

В предыдущих релизах, legend функция не всегда создает легенду. Например, это не создает легенду, при отсутствии осей или никаких данных в осях. Для этих случаев функция возвращает предупреждающее сообщение вместо этого. Кроме того, lgd = legend синтаксис (без входных параметров) возвращает существующую легенду, но не создает ту, если легенда уже не существует.

Чтобы запросить для существования легенды, сопоставленной с деталью оси, не создавая новую, используйте Legend свойство Axes объект. Например:

ax = gca;
lgd = ax.Legend

subplot функционируйте при установке OuterPosition или ActivePositionProperty свойство как аргументы пары "имя-значение"ПредупреждаетPosition параметрУдалите экземпляры кода, который устанавливает OuterPosition или ActivePositionProperty свойство как аргументы пары "имя-значение" subplot функция. Если вы хотите задать положение подграфика, используйте Position свойство.
subplot функционируйте при определении местоположения подграфика с помощью и положения сетки и Position параметрПредупреждаетИли положение сетки или Position параметр (не оба)Вы не можете задать местоположение подграфика с помощью и положения сетки и Position параметр, такой как subplot(m,n,p,'Position',[x y w h]). Вместо этого используйте или положение сетки или Position параметр, такой как subplot(m,n,p) или subplot('Position',[x y w h]).
Поведение построения диаграммы функций, когда NextPlot свойство Axes объект установлен в 'replacechildren'Все еще работаетНе применяетсяПостроение диаграммы функций больше не изменяет большинство свойств осей когда NextPlot свойство Axes объект установлен в 'replacechildren'.

Импорт и экспорт данных

Пользовательский Datastore: Создание индивидуально настраиваемого datastore

Создайте свой собственный datastore для пользовательских или собственных данных (сохраненный в файлах или потоке данных) использование пользовательской среды хранилища данных. Затем используйте этот пользовательский datastore, чтобы принести ваши данные в MATLAB и усилить возможности Больших данных MATLAB такой как tall, MapReduce и Hadoop. Для получения дополнительной информации смотрите, Разрабатывают Пользовательский Datastore.

datastore Функция: Работа с данными, хранившими в Windows Azure Blob Storage

Можно использовать данные, хранимые на Windows Azure, чтобы создать datastore. Windows Azure Blob Storage (WABS) является онлайновым веб-сервисом хранилища файлов, предлагаемым Microsoft. Для получения дополнительной информации смотрите Введение в Windows Azure.

Чтобы использовать Windows Azure с datastore, см. Windows Azure Blob Storage.

datastore Функция: Доступ к данным Hadoop HDFS более легко

Можно получить доступ к данным Hadoop более легко при помощи hdfs:/// синтаксис:

ds = datastore('hdfs:///path_to_file/file.ext')
Например, эта команда создает datastore для файла myData.txt в папке data.
ds = datastore('hdfs:///data/myData.txt')
Когда вы задаете местоположение с этим синтаксисом, datastore функционируйте использует имя хоста Hadoop HDFS, сопоставленное с установкой Hadoop, с которой соединяется MATLAB.

FileDatastore Объект: Создание универсального вывода из datastore

Для вертикально конкатенированных данных можно спроектировать ReadFcn возвращать универсальный выходной параметр, в форме таблицы MATLAB.

Например, создайте FileDastore возразите и проверяйте значение его нового UniformRead свойство. Это свойство указывает ли несколько чтений FileDatastore возвратите универсальные данные, которые могут быть вертикально конкатенированы. UniformRead свойство установлено в любой true или false.

  • Если установлено в false (значение по умолчанию), затем readall метод возвращает массив ячеек данных где каждый вызов read метод добавляет новые записи в массив ячеек.

  • Если установлено в true, затем readall метод возвращает таблицу. Поэтому ваш ReadFcn еще должен возвратить вертикально объединенные данные readall метод возвращает ошибку.

Функции HDF5: Создание наборов данных, групп, атрибутов, ссылок и названных типов данных с помощью символов неASCII

HDF5 функционирует использование поддержки символов non-ASCII для наборов данных HDF5, групп, атрибутов, ссылок и названных типов данных. Чтобы создать и получить доступ к данным non-ASCII, установите 'TextEncoding' пара "имя-значение" к 'UTF-8'. Они высокий уровень и низкоуровневые функции поддерживают 'TextEncoding' пара "имя-значение":

Высокоуровневые функции

Низкоуровневые функции

Для получения дополнительной информации смотрите Работу с Символами Non-ASCII в Файлах HDF5.

Веб-сервисы: Пропуск верификации имени сервера в сертификатах

Отключить верификацию имени сервера сертификата в случаях, где сертификат сервера не совпадает с URI, раньше получало доступ к нему, устанавливало VerifyServerName свойство к false в matlab.net.http.HTTPOptions.

jsonencode Функция: Кодирование NaN и Inf как пустой указатель

jsonencode функция кодирует значения MATLAB NaN и Inf в JSON как пустой указатель.

Вопросы совместимости

Продолжать кодировать NaN как 'NaN', вызвать jsonencode с 'ConvertInfAndNaN' набор опции к false.

jsonencode(NaN,'ConvertInfAndNaN',false)
ans =

    'NaN'

Функциональность, удаляемая или измененная

ФункциональностьЧто происходит, когда вы используете эту функциональность?Используйте это вместо этогоВопросы совместимости
ncwriteВсе еще работаетnetcdf.putVar

ncwrite функция применяет соглашения атрибута _FillValueScaleFactor , и add_offset при записывании данные всех типов данных.

Если вы не хотите применять соглашения атрибута, когда вы записываете данные к переменной NetCDF, использовать netcdf.putVar.

Используя load операторы в функции, чтобы загрузить переменные из файла.

Например:

function loadVar()
     ...
     load data.mat x;
     disp(x)
     ...
end

Предупреждает'none'

В настоящее время, если вы используете оператор загрузки в функции, чтобы загрузить переменную, которая не существует, затем MATLAB ведет себя можно следующим образом:

  1. Выдает предупреждение 'Variable not found'.

  2. Интерпретирует любые последующие ссылки на ту переменную, как вызовы функции пути (с тем же именем как переменная), если вы существуете.

Например, считайте файл data.mat это имеет только две переменные, a и b. Запишите функцию, чтобы загрузить переменную pi от data.mat и включайте последующий вызов pi.

function loadVar()
  load data.mat pi; % pi does not exist in data.mat
  pi;
end
Вызов loadVar результаты в предупреждении. Затем pi в следующей строке разрешен к pi на пути.
Warning: Variable 'pi' not found.
> In loadVar (line 2)

ans =

    3.1416

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

  1. Выдает предупреждение 'Variable not found'.

  2. Интерпретирует любые последующие ссылки на ту переменную, как вызовы переменной. Поэтому MATLAB возвращает error'Undefined function or variable'.

Попытка загрузить pi от data.mat и последующий вызов pi, результаты в предупреждении и ошибке.

Warning: Variable 'pi' not found.
> In loadVar (line 2)
Undefined function or variable 'pi'.

Error in loadVar (line 3)
pi

Анализ данных

ischange Функция: Обнаружение резких изменений в данных

Можно использовать ischange функционируйте, чтобы найти локальные изменения в среднем значении, отклонении, или линейном наклоне и точке пересечения табличных данных и массива.

islocalmin и islocalmax Функции: Обнаружение локальных минимумов и максимумов в данных

Чтобы найти локальные минимумы и максимумы в таблице или данных массива, используйте islocalmin и islocalmax функции.

rescale Функция: Масштабирование данных к заданной области значений

Можно масштабировать данные в массиве к определенной области значений с помощью rescale функция. Например, rescale(A,1,10) масштабирует записи массива A к интервалу [1,10].

tall Массивы: Работайте с длинными массивами с большим количеством функций, включая fillmissing, filter, median, polyfit, и synchronize

Функции, перечисленные в этой таблице, добавляют поддержку длинных массивов как входные параметры. Для полного списка поддерживаемых функций введите methods tall. Для получения информации об использовании и ограничениях, введите help tall/functionName. Например, help tall/filter.

binscatterplotscatter
boundspolyfitsplit (для длинных массивов строк)
fillmissingpolyvalsummary (для длинных расписаний)
filterretime (для длинных расписаний)synchronize (для длинных расписаний)
medianrmmissingvertcat

tall Индексация массива: Использование преобразованного в нижний индекс присвоения с длинными массивами

Преобразованный в нижний индекс оператор присваивания A(m,n,p,…) = B добавляет поддержка этих ситуаций:

  • Правая сторона оператора присваивания B может быть длинный массив, выведенный из A. Например, с 3-D длинным массивом A = tall(ones(3,3,3)), можно сделать присвоения, такие как A(:,:,1) = mean(A,3).

  • Индексы n,p,... может превысить размерности A, который позволяет вам вырастить массив с преобразованным в нижний индекс присвоением для любой размерности кроме первой (высокой) размерности. Например, с 2D высоким матричным A = tall(rand(1000,3)), можно повернуть A в 3-D матрицу с A(:,:,2) = 2*A(:,:,1).

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

Использование tallrng способом, похожим на rng управлять генератором случайных чисел, используемым в определенных вычислениях длинного массива.

timetable Контейнер данных: Задайте ли каждая переменная в a timetable содержит текущие или дискретные данные с помощью VariableContinuity свойство

Задавать ли timetable переменные представляют текущие данные, можно использовать VariableContinuity свойство. Если вы задаете VariableContinuity и вызовите retime или synchronize функции, затем вы не должны задавать метод. Вместо этого retime и synchronize заполните выход timetable переменные с помощью различных методов по умолчанию для непрерывного, шага или данных о событиях. Для получения дополнительной информации смотрите VariableContinuity свойство timetable или повторно синхронизируйте и синхронизируйте переменные расписания Используя различные методы.

mink и maxk Функции: найдите k самые маленькие или самые большие элементы в массиве

Нахождение конкретного количества самых маленьких или самых больших элементов в данных массива теперь возможно с mink и maxk функции.

Например, mink(A,5) и maxk(A,5) возвратите самые маленькие 5 и 5 самых больших элементов векторного A, соответственно.

topkrows Функция: Нахождение k верхних рядов в отсортированном порядке для числовых массивов, таблиц и расписаний

topkrows функция добавляет поддержку числовых массивов в оперативной памяти, таблиц и расписаний. Ранее topkrows поддерживаемые только длинные массивы.

Вопросы совместимости

Существует несколько изменений поведения когда topkrows работает с длинными массивами:

  • При работе с длинным массивом, topkrows места NaNNAT, и другие отсутствующие значения в конце убывающего вида. В предыдущих релизах topkrows помещенные отсутствующие значения в начале убывающего вида.

  • topkrows больше не принимает высокие массивы ячеек, содержащие только скалярные числовые значения как входные параметры. Использование cell2mat преобразовывать высокий массив ячеек скалярных числовых значений в высокую матрицу перед использованием topkrows.

Создание приложений

Дизайнер приложений: Создавание приложений с большим разнообразием 2D и 3-D графиков

Включайте более широкий выбор 2D и 3-D графиков в вашем приложении, таких как поверхности и закрашенные фигуры. Для получения дополнительной информации смотрите Графическую Поддержку в App Designer.

Дизайнер приложений: Добавление меню к приложению из Component Library

Добавьте меню в свои приложения путем перетаскивания панели меню от Component Library App Designer на холст. Затем добавьте и отредактируйте свои пункты меню путем нажатия кнопок +, нажатия клавиши Delete и ввода непосредственно на этикетках меню.

Дизайнер приложений: Определение входных параметров при выполнении приложения

Задайте входные параметры для своего приложения и получите доступ к ним в StartupFcn коллбэк для UIFigure компонент. Можно использовать входные параметры, чтобы передать данные между приложениями или установить значения по умолчанию в приложении. Смотрите Задачи Запуска и Входные параметры в App Designer для получения дополнительной информации.

Дизайнер приложений: Добавление сводных данных, описания и снимка экрана для упаковки приложения и компиляции

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

  • Интерфейс Package App

  • Интерфейс MATLAB Compiler

  • Файловый браузер детализирует на некоторых операционных системах

Дизайнер приложений: Улучшенные свойства компонентов разделяют на области в Представлении кода

Панель Properties компонента в Code View имеет улучшенное размещение с более богатыми возможностями редактирования. Например, кнопки-переключатели теперь доступны для управления определенными свойствами, такими как толщина шрифта и выравнивание текста.

Дизайнер приложений: Редактирование меток в виде галочки для приборов, кнопок и ползунков непосредственно в холсте

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

uitree и uitreenode Функции: Создание деревьев и древовидных узлов в приложениях

Вызовите uitree и uitreenode функции к дисплейным спискам элементов в иерархии в рамках вашего приложения.

Чтобы отобразить иерархию в приложении App Designer, вызовите uitree и uitreenode функции из коллбэка, такие как StartupFcn для UIFigure компонент. Для примера смотрите Использование App Designer к Экспонатам в Дереве.

Функции только работают на приложения App Designer или в цифрах созданный с uifigure функция.

uiconfirm Функция: Создание модальных полей диалогового окна подтверждения в приложении

Вызовите uiconfirm функция, чтобы создать модальное диалоговое окно в приложении, которое отображает набор опций, которые вы задаете. Функция имеет выходной аргумент, который возвращает выбор пользователя.

Диалоговое окно может только отобразиться в приложениях App Designer или в цифрах созданный с uifigure функция.

Упаковка тулбокса: Добавление приложений App Designer к Галерее приложений после установки тулбокса

Когда вы группируете тулбокс, MATLAB автоматически обнаруживает приложения App Designer (.mlapp файлы) в дополнение к файлам установщика приложения (.mlappinstall файлы). Если вы группируете эти приложения или файлы установщика приложения с вашим тулбоксом, они появляются в галерее Apps MATLAB, когда пользователь установил ваш тулбокс. Для получения дополнительной информации смотрите, Создают и Тулбоксы Доли.

MATLAB Online : Запустите приложения App Designer в MATLAB Online

MATLAB Online теперь поддерживает запущенные приложения, созданные в App Designer. Только поддержка браузера Google Chrome эта возможность. Если вы хотите создать приложение, необходимо использовать App Designer, работающий на настольной версии MATLAB.

Производительность

Дизайнер приложений: Загрузка приложений быстрее

Загрузка приложений в App Designer составляет 40% к на 60% быстрее, чем в R2017a. Экономия времени становится более примечательной как количество компонентов в ваших увеличениях приложения.

Механизм выполнения: Улучшенная производительность для векторизованной математики на CPUs с AVX2 

Механизм выполнения MATLAB улучшает производительность векторизованной математики на центральных процессорах, которые поддерживают инструкции AVX2, по сравнению с центральными процессорами, которые поддерживают SSE2 или более ранние версии SIMD (Несколько-данных Одно Инструкции) расширения.

Live Editor: Выполнение live скриптов с циклами быстрее

Live скрипты, содержащие циклы, запущенные значительно быстрее, чем в предыдущих релизах. Кроме того, ввод и прокрутка в live скриптах являются более быстро реагирующими.

Аппаратная поддержка

Arduino: С помощью беспроводных технологий соединитесь с платами Arduino с помощью недорогих адаптеров Bluetooth

Пакет поддержки MATLAB для Оборудования Arduino позволяет вам с помощью беспроводных технологий соединиться с и связаться с платами Arduino по Bluetooth с помощью недорогих bluetooth-устройств, таких как Adafruit Bluefruit EZ-Link, HC-05 или HC-06. Программное обеспечение Instrument Control Toolbox требуется настроить коммуникацию Bluetooth.

Setup Arduino пользовательский интерфейс: Подготовка связи с платой Arduino по USB, Bluetooth или WiFi

Пакет поддержки MATLAB для Оборудования Arduino позволяет вам использовать arduinosetup ведомый интерфейс, чтобы настроить связь с вашей платой Arduino по USB, Bluetooth или Wi-Fi.

Обнаружение Плагина Arduino: Обнаружение доступной поддержки Arduino и примеров при включении совместимой платы Arduino

Пакет поддержки MATLAB для Оборудования Arduino автоматически обнаруживает совместимые платы Arduino, включил ваш компьютер и также показывает доступную поддержку Arduino MATLAB и Simulink наряду с примерами.

Продвинутые возможности разработки программ

MATLAB Engine API для C++: Выполнение кода MATLAB из программ C++ с поддержкой объектно-ориентированного программирования и асинхронным выполнением

MATLAB Engine API для C++ обеспечивает интерфейс между языком программирования на C++ и MATLAB. Этот API позволяет программам C++ запустить MATLAB, оценить функции MATLAB с аргументами и обмениваться данными между программами C++ и MATLAB. Для получения дополнительной информации см. MATLAB Engine API для C++.

MATLAB Engine API для C++: Передача данных между программами C++ и использованием MATLAB Массив данных MATLAB

MATLAB Data API использует современную семантику C++ и шаблоны разработки и избегает копий данных, когда это возможно, при помощи семантики копирования при записи MATLAB.

Java SE 8: Поддержка MATLAB, обеспечивая повышенную безопасность и доступ к новому Java показывает ​​​

Интерфейс Java поддерживает версию Java 8 JRE. Для получения дополнительной информации см. https://www.mathworks.com/support/requirements/language-interfaces.html.

MinGW 5.3: Поддержка MATLAB ​​​

MATLAB поддерживает компилятор версии 5.3.0 MinGW-w64 под эгидой https://mingw-w64.org для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла. Чтобы загрузить поддерживаемую версию, ищите MinGW в меню Add-Ons. Если вы не устанавливаете поддерживаемую версию, то MATLAB выводит предупреждение.

Microsoft Visual Studio 2017: Поддержка MATLAB сообщества Microsoft Visual Studio 2017, Профессионала и Версий для предприятий ​

MATLAB поддерживает Microsoft Visual C++ 2 017 Профессионалов, Сообщество и Версии для предприятий для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла.

Поддержка компилятора изменяется для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла

ПоддержкаКомпиляторПлатформа

Добавленный

Microsoft Visual C++ 2 017 Профессионалов, Сообщество и Версии для предприятий

Windows

Добавленный

Microsoft Visual C++ 2 015 и 2 013 Сообществ и Версии для предприятий в дополнение к постоянной поддержке Профессионального выпуска

Windows

Добавленный

Microsoft Visual Studio 2015 (v140) комплект инструментальных средств установлен по Visual Studio 2017

Windows

Добавленный

Компилятор версии 5.3.0 MinGW-w64 под эгидой https://mingw-w64.org

Windows

Добавленный

Studio XE 2017 параллели Intel с Microsoft Visual Studio 2017 для C, C++ и Фортрана

Windows

Прекращенный

Компилятор версии 4.9.2 MinGW-w64 от TDM-GCC

Windows

Прекращенный

Microsoft Visual C++ 2 012 профессионалов

Windows

Прекращенный

Microsoft Windows SDK 7.1

Windows

Быть постепенно сокращенным

Поддержка GNU gcc и gfortran версии 4.9 будет прекращена в будущем релизе, при котором времени будут поддерживаться новые версии.

Linux

Чтобы гарантировать постоянную поддержку создания ваших файлов MEX, рассмотрите обновление до другого поддерживаемого компилятора. Для актуального списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы.

Версия 3.6 Python: Поддержка MATLAB

MATLAB поддерживает следующие версии CPython:

  • Версия 2.7

  • Версия 3.4

  • Версия 3.5

  • Версия 3.6

Для получения дополнительной информации смотрите Установку Поддерживаемая Реализация Python.

Perl 5.24.1: Поддержка MATLAB

MATLAB поставляется с версией 5.24.1 Perl.

  • Смотрите www.perl.org для стандартного распределения perl, источника perl и информации об использовании perl.

  • См. https://metacpan.org/pod/HTML:: Синтаксический анализатор для стандартного распределения HTML:: Синтаксический анализатор, исходный код и информация об использовании HTML:: Синтаксический анализатор.

  • См. https://metacpan.org/pod/HTML:: Tagset для стандартного распределения HTML:Tagset, исходного кода и информации об использовании HTML:Tagset.

Вопросы совместимости

Если вы используете perl команда на платформах Windows, смотрите www.perl.org для получения информации об использовании этой версии языка программирования Perl.

Метод Класса Handle MATLAB: Добавление прослушивателя для события, не связывая прослушиватель исходного объекта

Метод класса Handle прослушивателя добавляет прослушиватель для события, не связывая жизненный цикл прослушивателя с объектом, который является источником события. Для получения дополнительной информации смотрите handle.listener.

Среда Модульного тестирования: Обеспечение отчетов покрытия кода в формате Cobertura для улучшенных непрерывных рабочих процессов интегрирования ​​​

Можно указать, что плагин покрытия кода возвращает результаты покрытия кода в формат Cobertura для использования в непрерывных системах интегрирования. Используйте 'Producing' аргумент пары "имя-значение" с forFolder, forPackage, или forFile статический метод matlab.unittest.plugins.CodeCoveragePlugin класс.

Среда Модульного тестирования: Генерация отчета HTML тестового прогона ​​

Создайте легко читаемые и пригодные для навигации отчеты HTML своих тестовых прогонов с помощью producingHTML статический метод TestReportPlugin. Для получения дополнительной информации смотрите matlab.unittest.plugins.TestReportPlugin.producingHTML.

Среда Модульного тестирования: Тесты записи ​​ как live скрипты

Можно записать и выполнить модульные тесты на основе скриптов с помощью Live скриптов. Для получения дополнительной информации см. Написание теста с помощью Live Script.

Среда Модульного тестирования: Задайте дополнительную диагностику, чтобы оценить после отказов с помощью onFailure​​​​​​ метод

Чтобы задать дополнительную диагностику для среды тестирования, чтобы оценить, когда тест перестанет работать, используйте onFailure метод matlab.unittest.TestCase класс. Для получения дополнительной информации смотрите matlab.unittest.TestCase.onFailure.

Если вы создаете пользовательские испытательные стенды, можно задать дополнительную диагностику для отказов во время настройки фиксатора и стандартных программ отключения. Для получения дополнительной информации смотрите matlab.unittest.fixtures.Fixture.onFailure.

Среда для тестирования производительности: Определение нескольких контуров измерения в методах тестирования

Далее совершенствовать, какой код измериться, тесты производительности теперь поддерживают несколько контуров измерения в методе тестирования. Используйте несколько, невложенные вызовы startMeasuring и stopMeasuring методы matlab.perftest.TestCase в ваших методах тестирования. Измерения от нескольких контуров в том же методе тестирования накоплены и суммированы. Для получения дополнительной информации смотрите startMeasuring.

Платформа для мокинга: Создайте макеты для классов, которые имеют Abstract методы с другими атрибутами

Можно создать макет для класса, который имеет Abstract методы и другие атрибуты. Например, можно создать макет для класса с методом, который имеет Abstract и Static атрибуты. Макет реализует метод как бетон, Static метод. Точно так же методы с Abstract и Hidden атрибуты реализованы как бетон и Hidden методы. Для получения дополнительной информации смотрите, Создают Фиктивный объект.

Интеграция с системой контроля версий: Показ различий от родительских файлов и сохранение копий в Ответвлениях Git

В проекте под системой контроля версий Git, в диалоговом окне Branches, можно показать различия, чтобы породить файлы и сохранить ветви. Можно сохранить копию выбранных файлов или породить файлы, чтобы исследовать добавленные или удаленные файлы или протестировать, как код запустился в предыдущих версиях. Для получения дополнительной информации смотрите Ветвь и Слияние с Git.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

Программируемая зависимость от определенного диагностического подкласса от getDiagnosticFor метод ограничения и допусков

Все еще работает

Не применяется

Переделайте код, который использует свойства или методы, характерные для matlab.unittest.diagnostic.ConstraintDiagnostic экземпляры возвращены в getDiagnosticFor метод matlab.unittest.constraints классы.

В будущем релизе, диагностика, возвращенная в ограничение и классы допуска в matlab.unittest.constraints пакет будет подклассами matlab.unittest.diagnostics.Diagnostic и не могут быть экземпляры matlab.unittest.diagnostic.ConstraintDiagnostic.

Отрицание matlab.unittest.constraints.ReturnsTrue ограничение (~ReturnsTrue)

Предупреждает

Не применяется

Измените логику для тестов, которые используют отрицание ReturnsTrue ограничение.

Генерация тестовых наборов от класса, который выводит из конкретного базового класса, который задает методы та ссылка TestParameter, MethodSetupParameter, или ClassSetupParameter не заданный в базовом классе

Ошибки

Задайте любого:

  • Базовый класс как Краткий обзор с помощью атрибута Краткого обзора уровня класса. Например, classdef (Abstract) MyTest < matlab.unittest.Testcase.

  • Абстрактные свойства параметра для всех параметров используются методами класса. Например, properties (Abstract,TestParameter).

Если ваш тестовый класс наследовался конкретному базовому классу, который использует параметр, который не задан в базовом классе, MATLAB выдает ошибку.

Вызов TestRunnerPlugin методы суперкласса несколько раз

Ошибки

Не применяется

Пользовательские плагины содержат методы, которые вызывают соответствующий TestRunnerPlugin методы суперкласса точно однажды. Переделайте любые пользовательские плагины, которые вызывают методы суперкласса несколько раз. Начиная в R2017b, это поведение выдает ошибку.

Установка события ListenAccess или NotifyAccesst атрибуты к immutable.

Ошибки

immutable не допустимое значение для этих атрибутов.

В предыдущих релизах, устанавливая эти атрибуты на immutable не вызвал ошибку.

Установка метода Access припишите immutable.

Ошибки

immutable не допустимое значение для этого атрибута.

В предыдущих релизах, устанавливая этот атрибут на immutable не вызвал ошибку.

R2017a

Новые возможности, исправления ошибок, Вопросы совместимости

Рабочий стол

Live Editor: Редактирование фигуры в интерактивном режиме включая заголовок, метки, легенду и другие аннотации

В Live Editor можно добавить форматирование и аннотации фигуре в интерактивном режиме. Чтобы добавить элемент переходят к вкладке Figure и в разделе Annotations, выбирают из этих доступных параметров:

  • Title

  • X-Label, Y-Label

  • Legend

  • Colorbar

  • Grid, X-Grid, Y-Grid

  • Line, Arrow, Text Arrow, Double Arrow

Для получения дополнительной информации смотрите, Изменяют фигуры в Live скриптах.

Live Editor: Получение предложений для введенных с опечаткой команд и переменных

MATLAB предлагает коррекции для введенных с опечаткой команд и переменных в Live Editor. Если вы вводите неопределенную команду или имя переменной, отображения MATLAB: Did you mean: сопровождаемый предложенной командой в соответствии с сообщением об ошибке. Нажмите кнопку Fix, чтобы заменить введенную с опечаткой команду на предложенное исправление.

Live Editor: Копирование live скрипта выходные параметры в другие приложения

При копировании от Live Editor к другим приложениям в линии выходные параметры в рамках выбора включены наряду с кодом и текстом. В приложениях, которые поддерживают только простой текст, код и текст, копируется, но выходные параметры не.

Также можно скопировать выход путем щелчка правой кнопкой по выходу и выбирания опции копии из контекстного меню

Live Editor: Нависните над переменными, чтобы видеть их текущую стоимость

Можно просмотреть текущее значение переменной как всплывающая подсказка в Live Editor. Чтобы просмотреть всплывающую подсказку, расположите свой указатель мыши над переменной.

Всплывающие подсказки включены по умолчанию в Live Editor. Чтобы включить или отключить всплывающие подсказки, с live скриптом, открытым в Live Editor, переходят к вкладке View, и в разделе Display, выбирают или отменяют выбор Datatips.

Add-On Explorer: Обнаружение и установка представлений Exchange Файла, размещенных на GitHub в Add-On Explorer

Представления Обмена файлами размещаются на GitHub® теперь доступны в Add-On Explorer. Для получения дополнительной информации о том, как получить дополнения через Add-On Explorer, смотрите, Получают Дополнения.

MATLAB Online : Используйте MATLAB через свой веб-браузер для обучения, изучения и удобного, легкого доступа

Дополните свой опыт MATLAB с MATLAB Online. Поскольку в любое время, где угодно доступ, просто регистрируются с вашей учетной записью MathWorks — никакая загрузка или требуемая установка.

MATLAB Online доступен с большинством лицензий MATLAB. Для получения дополнительной информации включая приемлемость, посетите страницу продукта MATLAB Online.

Изменения Поведения Папки запуска: Установка начальной рабочей папки с помощью новых опций и поведений

Опции, чтобы установить начальную рабочую папку (папка запуска) изменились. Для получения дополнительной информации смотрите Папку Запуска MATLAB.

Поведение, когда стартовый MATLAB от ярлыка изменился. MATLAB начинает с последней рабочей папки, за исключением платформ Linux или когда значение Start in задано на платформах Windows.

При вызове MATLAB от командной строки начальная рабочая папка является папкой окна терминала. Чтобы использовать начальный рабочий набор папки в панели общих настроек, используйте -useStartupFolderPref опция запуска.

matlab -useStartupFolderPref

Чтобы установить папку запуска от командной строки, используйте -sd опция. Например:

matlab -sd "C:\work"

Для получения информации о параметрах командной строки установить начальную рабочую папку, смотрите matlab (Mac), matlab (Windows), и matlab (Linux).

Вопросы совместимости

Если при запуске MATLAB с командного окна и хотите, чтобы папка запуска была набором значений в панели общих настроек, то добавьте -useStartupFolderPref опция запуска.

Язык и программирование

string Массивы: создайте string массивы с помощью двойных кавычек

Можно создать строки с помощью двойных кавычек, как можно создать векторы символов с одинарными кавычками.

  • str = "Hello, World" создает строку.

  • str = ["Good" "morning"] создает 1- 2 массив строк.

Для получения дополнительной информации см. Символы и строки.

Строковые функции: Возвратите символьные массивы или массивы ячеек вместо string массивы

Тип данных выходного аргумента изменился для compose, extractAfter, extractBefore, extractBetween, join, split, и splitlines функции. С R2017a тип выходных данных зависит от типа первого входного параметра.

  • Если первый входной параметр является массивом строк, то выходным аргументом является массив строк.

  • Если первый входной параметр является вектором символов, то выходным аргументом является или вектор символов или массив ячеек из символьных векторов.

  • Если первый входной параметр является массивом ячеек из символьных векторов, то выходным аргументом является или вектор символов или массив ячеек из символьных векторов.

В R2016b, эти функции всегда массивы возвращаемой строки.

missing Функция: Присвойте отсутствующие значения в типах фундаментальных выражений, включая doubledatetimeкатегориальный, и string массивы

Чтобы присвоить отсутствующие значения элементам массива или таблицы, используйте missing функция. Например, catarray(3) = missing присваивает третий элемент категориального массива catarray к отсутствующему значению.

issortedrows Функция: Определите, сортируются ли матрица и строки таблицы

Используйте issortedrows функция, чтобы определить, сортируются ли матрица или строки таблицы. Например, issortedrows(A,'descend') проверки, если строки матричного A в порядке убывания основаны на элементах в первом столбце.

sort и sortrows Функции: Определение опций для сортировки комплексных чисел и размещения недостающих элементов

Укажите, как вы хотите отсортировать комплексные числа и место недостающие элементы с помощью sort и sortrows функции с 'ComparisonMethod' и 'MissingPlacement' опции. Например, если A числовой вектор, содержащий комплексные числа, затем sort(A,'ComparisonMethod','real','MissingPlacement','last') виды действительной частью каждого элемента и мест NaN значения в конце вида.

issorted Функция: Запросите порядок сортировки с монотонным, строго монотонным, строго возрастанием и строго убывающими опциями

Можно определить, сортируется ли массив с помощью 'monotonic', 'strictmonotonic', 'strictascend', и 'strictdescend' опции с issorted функция. Например, issorted(A,'strictmonotonic') проверки, если векторный A является строго монотонным.

head и tail Функции: Возврат верхней части или нижних рядов таблицы или расписания

Чтобы возвратить верхнюю часть или нижние ряды таблицы или расписания, можно использовать head и tail функции.

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

Когда вы объединяющие таблицы, таблицы вида или сгруппированные переменные использования, можно задать метки строки и табличные переменные вместе как ключевые переменные, сортировав переменные или сгруппированные переменные. Можно задать их в innerjoin, join, outerjoin, rowfun, sortrows, stack, unstack, и varfun функции. В предыдущих релизах вы могли задать метки строки или табличные переменные, но не обоих вместе.

Метки строки являются именами строки таблицы или времена строки расписания.

innerjoinсоединение, и outerjoin функции имеют ограничения на ключевые переменные:

  • Вы не можете выполнить внутреннее объединение или внешнее соединение с помощью меток строки в качестве левого ключа и табличной переменной как правильный ключ. Чтобы выполнить внутреннее объединение или внешнее соединение, преобразуйте метки строки в табличную переменную и используйте новую переменную в качестве ключа.

  • Вы не можете выполнить внешнее соединение с помощью и меток строки и табличных переменных как ключевые переменные. Чтобы выполнить внешнее соединение, преобразуйте метки строки в табличную переменную или используйте метки строки в качестве единственной ключевой переменной.

  • Вы не можете задать таблицу как первый вход, когда вы выполняете внутреннее объединение или внешнее соединение на таблице и расписании. Расписание должно быть первым входом.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

compose
extractAfter
extractBefore
extractBetween
join
split
splitlines

Все еще работает

Не применяется

Начиная в R2017a, тип выходных данных зависит от типа данных первого входного параметра. В R2016b, эти функции всегда массивы возвращаемой строки. Для получения дополнительной информации смотрите Строковые функции: Возврат символьных массивов или массивов ячеек вместо массивов строк.

issorted использование 'rows' опция с матричным входом

Все еще работает

issortedrows

Чтобы определить, сортируются ли строки матрицы, используйте issortedrows функция. issortedrows предусматривает больше возможности для запросов вида строки, такой как, являются ли строки в порядке возрастания или убывания.

issorted с входом расписания

Все еще работает

issortedrows

Чтобы определить, сортируются ли времена строки или табличные переменные расписания, используйте issortedrows функция. issortedrows предусматривает больше возможности для запросов вида расписания, такой как, являются ли времена строки в порядке возрастания или убывания.

innerjoin
join
outerjoin
rowfun
sortrows
stack
unstack
varfun

Все еще работает

Не применяется

Начиная в R2017a, можно задать метки строки и табличные переменные вместе как ключевые переменные, сортировав переменные или сгруппированные переменные. В предыдущих релизах вы могли задать метки строки или табличные переменные, но не обоих вместе. Для получения дополнительной информации см. таблицу Data Containers: Использование меток строки при выполнении соединения, вида, и группировке операций.

notebook

Предупреждает

Live Editor

В будущих релизах, вызывая notebook возвращает ошибку.

dir

Все еще работает

Не применяется

При запуске в R2017a на платформах UNIX, если текущая рабочая папка недопустима и вы вызываете dir функция с именем файла или именем папки, MATLAB выдает ошибку. Ваша рабочая папка становится недопустимой, если вы удаляете ее, в то время как это - ваша текущая рабочая папка.

В предыдущих версиях MATLAB, если ваша текущая рабочая папка была недопустима и вы вызвали dir с входом, dir возвращенный пустой.

Графика

heatmap Функция: Визуализация таблицы или матричных данных как тепловая карта

Чтобы создать график тепловой карты, используйте heatmap функция.

legend Функция: Создайте легенды, которые обновляют, когда данные добавлены к или удалены из осей

Легенды теперь автоматически обновляются, когда вы добавляете или удаляете графические объекты из осей. Ранее легенды автоматически не добавили элементы для новых графических объектов или удалили элементы для удаленных графических объектов.

Например, этот код строит график и добавляет легенду. Затем код строит второй график. Легенда автоматически обновляется, чтобы включать вторую линию.

plot(1:10)
legend('Line 1')
hold on
plot(11:20,'DisplayName','Line 2')
hold off

Вопросы совместимости

Если вы добавляете или удаляете графический объект после создания легенды, количество элементов в легенде может отличаться от предыдущих релизов. Например, постройте график и создайте легенду. График отображает маркер в максимальной точке.

x = linspace(0,2*pi);
y = sin(x);
plot(x,y)
legend('sin(x)')
hold on
plot(pi/2,sin(pi/2),'o','MarkerSize',12)
hold off

Приведите к R2017aПриведите к предыдущим релизам

Легенда обновляется, чтобы включать маркер.

Легенда не обновляется, чтобы включать маркер.

Если вы не хотите, чтобы легенда обновилась автоматически, установите AutoUpdate свойство легенды к 'off'. Графические объекты, добавленные к осям после легенды, создаются, не появляются в легенде.

legend('sin(x)','AutoUpdate','off')

Чтобы изменить поведение для недавно созданных легенд, установите значение по умолчанию AutoUpdate свойство. Чтобы влиять на все новые легенды, установите значение на корневом уровне. В качестве альтернативы, чтобы влиять на все новые легенды на конкретном рисунке, установите значение на уровне фигуры. После того, как вы установите значение по умолчанию, любые новые легенды имеют AutoUpdate набор свойств к 'off'.

fig = figure;
set(fig,'defaultLegendAutoUpdate','off')

Дополнительные опции для исключения определенных графических объектов от легенды включают:

  • Определение графических объектов, чтобы включать в легенду как входной параметр к legend функция. Например, этот код создает легенду, которая включает только графические объекты, упомянутые p1 и p2. Однако графические объекты, добавленные к осям после легенды, создаются, действительно появляются в легенде. Рассмотрите создание легенды после создания всех графиков избежать дополнительных элементов.

    p1 = plot(1:10);
    hold on
    p2 = plot(11:20);
    p3 = plot(21:30);
    legend([p1 p2],'line 1','line 2')
    

  • Исключая графические объекты от легенды путем установки их HandleVisibility свойство к 'off'. HandleVisibility свойство также управляет видимостью графического объекта в Children свойство его родительского элемента.

    p4 = plot(31:40,'HandleVisibility','off');

  • Исключая графические объекты от легенды путем установки IconDisplayStyle свойство базового объекта аннотации к 'off'.

    p5 = plot(41:50);
    p5.Annotation.LegendInformation.IconDisplayStyle = 'off';
    

Категориальное Графическое изображение: Использование категориальных данных в общих функциях построения графика и настройка осей с категориальными линейками

Эти графические функции принимают входные данные типа categorical.

barbarh
plotplot3
semilogx (x значения должно быть числовым),semilogy (y значения должно быть числовым),
stemstairs
scatterscatter3
areamesh
surfsurface
fillfill3
linetext

Кроме того, можно использовать новую категориальную линейку, чтобы настроить оси. Доступ к CategoricalRuler объект через XAxis, YAxis, или ZAxis свойство объекта осей. Например:

c = categorical({'red','yellow','blue'});
y = [1 2 3];
plot(c,y)
ax = gca;
ax.XAxis
ans = 

  CategoricalRuler with properties:

    Categories: [blue    red    yellow]
        Limits: [blue    yellow]
    TickValues: [blue    red    yellow]

  Show all properties

Для полного списка свойств смотрите CategoricalRuler.

histogram Функция: Графическое изображение гистограмм данных длительности и datetime

histogram принимает входные данные типа datetime и duration. Кроме того, вы можете интервал данные с помощью модулей времени как границы интервала, такие как 'second'час, или 'week'.

histogram Функция: Сортировка категориальных интервалов по высоте панели и ограничение количества отображаемых интервалов

histogram может отсортировать категориальные интервалы по высоте панели (самый высокий и самый низкий), и дополнительно она может ограничить количество отображенных панелей. Эта функциональность является самой полезной с наборами данных, которые имеют большое количество категорий, поскольку она позволяет, например, постройте только 10 самых больших панелей или только 15 самых маленьких панелей.

scatter Функция: Создание графиков рассеивания данных длительности и datetime

scatter и scatter3 примите входные данные типа datetime и duration.

Графики поля точек: Создание графиков рассеивания с переменными размерами маркера быстрее

Когда вы создаете график рассеивания и задаете размеры маркера с помощью SizeData свойство, график рассеивания представляет с улучшенной производительностью.

parula Палитра: Создание графиков с расширенными цветами

Значение по умолчанию parula палитра улучшила цвета, которые более перцепционно универсальны.

Эта таблица показывает сравнение между R2017a и версиями R2016b parula палитры. Визуальное изменение является тонким; однако, вы можете заметить более красочные цвета и более сглаженные переходы между цветами.

R2017a

R2016b

Вопросы совместимости

Графики, которые используют parula палитру, обеспечивают свой полный общий вид. Однако массив цветов, возвращенных parula функция отличается. Если ваш код использует определенные значения триплета RGB, возвращенные parula, затем вы можете должны быть обновить свой код.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

legend функция

Все еще работает

Не применяется

Легенды теперь автоматически обновляются, чтобы включать новые графические объекты, добавленные к осям. Точно так же они обновляются, чтобы исключить графические объекты, удаленные из осей. Для получения дополнительной информации смотрите легенду Function: Создайте легенды, которые обновляют, когда данные добавлены к или удалены из осей.

parula функция

Все еще работает

Не применяется

Графики, которые используют parula палитру, обеспечивают свой полный общий вид. Однако массив, возвращенный parula функция содержит различные значения триплета RGB. Для получения дополнительной информации см. parula Палитру: Создание графиков с расширенными цветами.

Normalization опция histogram и histogram2

Все еще работает

Не применяется

Normalization опция histogram и histogram2 теперь вычисляет нормализацию с помощью общего количества элементов входных данных. Любые данные, которые не сгруппированы (например, NaN значения) или это выходит за пределы пределов интервала, все еще считается в целях нормализации.

Ранее нормализация использовала только сгруппированные данные в вычислении, которое может быть меньше общего количества элементов входных данных, если данные содержат NaNs или некоторые данные находится вне пределов интервала. Для примера того, как достигнуть старого поведения, смотрите Управление Категориальное Отображение Гистограммы.

area функция

Все еще работаетНе применяется

area функционируйте теперь сортирует введенные данные в порядке увеличения значений x перед графическим выводом. Ранее функция области отображала данные на графике в заданном порядке, который иногда приводил к перекрывающимся областям. Значения XData и YData свойства Area объект неизменен.

Например, area([3 1 2],[0 5 10]) теперь чертит линию от (1,5) к (2,10) к (3,0) и заполняет область ниже линии. Ранее это чертило линию от (3,0) к (1,5) к (2,10), получившийся в перекрывающихся областях. Если вы хотите чертить заполненные многоугольники, рассмотрите использование fill функцию вместо этого.

Импорт и экспорт данных

​datastore и tabularTextDatastore Функции: Автоматически обнаружьте и данные даты возвращения и времени в текстовых файлах ​

datastore и tabularTextDatastore функции обнаруживают и данные даты возвращения и времени как datetime ввод.

Вопросы совместимости

Ранее datastore и tabularTextDatastore функции возвратили данные о дате и времени как векторы символов. Сохранить то поведение в datastore функция, используйте:

ds = datastore(location,'DatetimeType','text')

Сохранить старое поведение в tabularTextDatastore функция, используйте:

ds = tabularTextDatastore(location,'DatetimeType','text')

datastore Функция: Работа с данными в "облачном" хранилище Amazon S3

Создайте ImageDatastorefileDatastore, или TabularTextDatastore работать с данными, хранимыми в облаке с помощью Amazon S3 (Простой Сервис Устройства хранения данных). Для получения дополнительной информации смотрите Считанные Удаленные данные.

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

Инструмент импорта теперь поддерживает текст импорта как string и categorical типы данных. Для получения дополнительной информации смотрите Import Tool.

Вопросы совместимости

Ранее данные об импортируемом тексте Import Tool как массив ячеек из символьных векторов. Чтобы сохранить то поведение, измените настройки в текстовом поле Options в разделе Imported Data вкладки Import. Кликните по полю Text Options и измените выбор типа текста от String Array до Cell Array of Character Vectors.

detectImportOptions Функция: Управление свойствами импорта текстовых файлов фиксированной ширины

Управляйте и настройте, как данные импортированы из текстовых файлов фиксированной ширины с помощью detectImportOptions функция и создание FixedWidthImportOptions объект.

В дополнение к SpreadsheetImportOptions и DelimitedTextImportOptions объекты, detectImportOptions функционируйте теперь возвращает FixedWidthImportOptions объект. Используйте FixedWidthImportOptions объект с readtable настроить настройки импорта, такие как:

  • Импортируйте плохо или недостающие данные.

  • Импортируйте только подмножество данных с помощью SelectedVariableNames свойство.

  • Управляйте импортом частичных полей.

Для получения дополнительной информации смотрите FixedWidthImportOptions.

Веб-сервисы RESTful: Поддержка PUT и DELETE методы HTTP в webread, webwrite, и websave​​​

Чтобы вызвать HTTP PUT, DELETE и методы ЗАКРАШЕННОЙ ФИГУРЫ, используют 'RequestMethod' аргумент в weboptions функция.

save Функция: Сохранение переменных рабочей области в MAT-файл с или без сжатия

Ранее save команда, при сохранении переменных рабочей области в MAT-файл, использовала сжатие в качестве значения по умолчанию (и единственное) опция. Теперь новая опция, '-nocompression', позволяет сохранять данных без сжатия. Эта опция только доступна, чтобы использовать с версией MAT-файлов 7.3.

По умолчанию, сохранение переменной myVariable к MAT-файлу в версии 7.3 сжимает данные:

save -v7.3 myFile.mat myVariable

Сохранить myVariable без сжатия используйте:

save -v7.3 -nocompression myFile.mat myVariable

writetable Функция: Выбор предпочтенной кодировки символов при записи в файл

Теперь можно задать кодировку символов по вашему выбору при помощи 'Encoding' параметр. Ранее writetable функция использовала кодировку по умолчанию системы при записи в файл, и это было единственным доступным параметром. Например, чтобы установить кодирование файла поддерживать японские символы, установите Encoding параметр к Shift_JIS.

writetable(T, 'filename.csv', 'Encoding', 'Shift_JIS');

Функции NetCDF: Создание имен переменных и атрибутов, содержащих символы неASCII

Функции NetCDF теперь поддерживают использование символов non-ASCII для имен переменных, названий атрибута и значений атрибута. Для получения дополнительной информации о создании файлов NetCDF смотрите, Файлы NetCDF и netcdf

Пакет поддержки веб-камеры: Обновление GStreamer на Linux

Пакет поддержки MATLAB для Веб-камер USB поддержка Linux теперь использует версию 1.0 библиотеки GStreamer. Это ранее использовало версию.10.

jsondecode преобразует null JSON значения в числовых массивах к NaN

jsondecode функция преобразует null JSON значения в числовых массивах к NaN. Для нечисловых массивов эта функция преобразует null JSON значение к пустому double массив). Это поведение влияет webread и webwrite функции при обработке содержимого JSON.

Вопросы совместимости

Ранее jsondecode декодируемый null JSON значение как пустой double массив, который исключен из выхода. Например:

json = '[1, 2, null, 4]'; 
res = jsondecode(json) % R2016b
res =

     1
     2
     4

Текущее поведение:

json = '[1, 2, null, 4]'; 
res = jsondecode(json) % R2017a and later
res =

     1
     2
   NaN
     4

Сохранить старое поведение в jsondecode функция, то есть, чтобы удалить NaN значения от получившегося числового массива, используйте rmmissing функция:

res = rmmissing(res)
res =

     1
     2
     4

load и fopen Функции: Используйте символ разделителя файлов ('\') предшествование имени файла, чтобы указать, что файл находится в корневой папке

Оба load и fopen функции берут filename как входной параметр. При определении этого filename, используйте символ разделителя файлов, предшествующий имени файла, чтобы указать, что файл находится в корневой папке. Символом разделителя файлов является '\' на Windows и '/' на UNIX. Например, если вы задаете filename как '\myFile.txt', затем MATLAB ищет корневую папку этот файл.

  • Если myFile.txt существует в корневой папке, затем доходы MATLAB с загрузкой или открытием файла.

  • Если myFile.txt не существует в корневой папке, затем load функция возвращает ошибку и fopen функция возвращает a-1 указание, что файл не мог быть открыт.

  • Если myFile.txt не существует в корневой папке, но файл с тем же именем существует в текущей папке, затем MATLAB ведет себя таким же образом как предыдущий шаг. Таким образом, load функция возвращает ошибку и fopen функция возвращает a-1 указание, что файл не мог быть открыт, потому что никакой такой файл не существует в корневой папке.

Вопросы совместимости

Ранее для load и fopen функции, если вы задали filename как '\myFile.txt', затем MATLAB искал бы тот файл в вашей корневой папке. Если бы никакой такой файл не был найден в корневой папке, то MATLAB попытался бы найти и возвратить файл в текущую папку. Однако теперь, если вы добавляете разделитель файлов, предшествующий имени файла, затем load и fopen функции будут только искать файл в корневой папке. Поэтому

  • Чтобы указать, что файл расположен в корневой папке, используют load('\myFile.mat') или fopen('\myFile.mat').

  • Чтобы указать, что файл расположен в текущей папке, используют load('myFile.mat') или fopen('myFile.mat').

Кроме того, на платформах UNIX, если вы используете '/' когда корневой символ при определении имени файла и файла находится на пользовательском пути, затем заданный фрагмент пути должен заключить соответствие в корпус. Таким образом, MATLAB больше не случаются - корректирует заданные пути, которые начинаются с корневого символа '/'. Например, если файл '/user/myFile.mat' существует под корневой папкой. Затем на платформах UNIX:

  • load('/user/myFile.mat') или fopen('/user/myFile.mat') работает правильно.

  • load('/User/myFile.mat') или fopen('/User/myFile.mat') не работает из-за несоответствия случая в заданном пути.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

Чтение видеофайлов, со старыми форматами файлов, на macOS платформах с помощью VideoReader

Ошибки

Не применяется

macOS платформа больше не поддерживает определенные более старые форматы видеофайла. Считать такие файлы с помощью VideoReader:

  • Откройте видеофайл с помощью проигрывателя QuickTime. Если файл поддерживается на macOS, проигрыватель автоматически преобразует файл в более новый формат.

  • Сохраните этот недавно конвертированный видеофайл.

  • Используйте VideoReader считать этот новый конвертированный видеофайл.

Анализ данных

tall Массивы: работайте с tall массивы с большим количеством функций, включая ismember, sort, conv, и движущиеся функции статистики

Различные функции добавляют поддержку tall массивы как входные параметры.

Для получения информации об ограничениях этой поддержки введите help tall/<function> в MATLAB, или смотрите Функции Та Поддержка Длинные массивы (A–Z).

tall Массивы: индексируйте tall массивы с помощью отсортированных индексов

Теперь, чтобы индексировать длинные массивы, можно использовать возрастающие или убывающие отсортированные индексы. Индексы могут указать элементы где угодно в массиве и допускать копии. Например:

  • T(0:2:100)

  • T([1 2 2 5 20])

  • T(100:-10:50)

Для получения дополнительной информации смотрите индекс и Просмотр элементов длинного массива.

tall Массивы: Работа с данными с меткой времени, из памяти в a timetable

Преобразуйте длинную таблицу, содержащую переменную времени в высокое timetable упростить вычисления на больших наборах данных с меткой времени. Для получения дополнительной информации смотрите Функции Та Поддержка Длинные массивы (A–Z).

isoutlier и filloutliers Функции: Обнаружение и замена выбросов в массиве или таблице

Чтобы найти выбросы в ваших данных, используйте isoutlier функция. Чтобы заменить выбросы на альтернативные значения, используйте filloutliers функция.

smoothdata Функция: Сглаживание шумных данных в массиве или таблице с фильтрацией или локальной регрессией

Сглаживание зашумленных данных теперь возможно с smoothdata функция. Например, smoothdata(A,'movmedian') сглаживает данные с медианой движущегося окна.

summary Функция: Вычисление итоговой статистики и переменной информации в таблицах и расписаниях

Чтобы возвратить структуру, которая содержит сводные данные таблицы или расписания, используйте summary функция.

histcounts Функция: Datetime Интервала и данные длительности

histcounts принимает входные данные типа datetime и duration. Кроме того, вы можете интервал данные с помощью модулей времени как границы интервала, такие как 'second'час, или 'week'.

movmad и movprod Функции: Вычислите скользящее медианное абсолютное отклонение и движущийся продукт массива

Используйте раздвижное окно, чтобы вычислить скользящее медианное абсолютное отклонение и движущийся продукт вдоль данных в массиве с movmad и movprod функции.

bounds Функция: Одновременно определите самые маленькие и самые большие элементы массива

Найдите самые маленькие и самые большие элементы массива с bounds функция.

fillmissing Функция: Замена недостающих данных в массиве или табличном среднем значении перемещения использования или движущейся средней опции

Заполнение недостающих данных с помощью скользящего среднего значения или движущейся средней опции теперь доступно с fillmissing функция.

Перемещение Функций Статистики: Предоставление точек выборки для и неоднородных данных с меткой времени в движущихся функциях статистики, таких как movmean

Обеспечение точек выборки, которые представляют местоположение данных в массиве, теперь возможно при вычислении движущейся статистики с функциями movmad, movmax, movmean, movmedian, movmin, movprod, movstd, movsum, и movvar. Например, можно вычислить среднее значение движущегося окна данных в массиве A относительно времен в векторном t использование movmean(A,'SamplePoints',t).

prod и cumprod Функции: проигнорируйте NaNs использование 'omitnan'

Теперь можно исключить NaNs при вычислении продукта и совокупного произведения массива с prod и cumprod функции.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

Normalization опция histcounts и histcounts2

Все еще работает

Не применяется

Normalization опция histcounts и histcounts2 теперь вычисляет нормализацию с помощью общего количества элементов входных данных. Любые данные, которые не сгруппированы (например, NaN значения) или это выходит за пределы пределов интервала, все еще считается в целях нормализации.

Ранее нормализация использовала только сгруппированные данные в вычислении, которое может быть меньше общего количества элементов входных данных, если данные содержат NaNs или некоторые данные находится вне пределов интервала. Для примера того, как достигнуть старого поведения, смотрите Управление Категориальное Отображение Гистограммы.

Поддержка под управлением MapReduce MATLAB на Hadoop 1.x кластеры будет удалена в будущем релизе.ПредупреждаетИспользуйте кластеры, которые имеют Hadoop 2.x или выше установленный, чтобы запустить MapReduce MATLAB.Переместите код MapReduce MATLAB, который работает на Hadoop 1.x к Hadoop 2.x.

Создание приложений

Дизайнер приложений: Изучение создавать приложения с помощью интерактивного примера

Узнать, как, чтобы создать простое приложение с помощью интерактивного примера, который проводит вас по каждому шагу в процессе. Можно получить доступ к этому примеру в меню App Designer Open.

Дизайнер приложений: Изменение масштаба и графики панорамирования

Позвольте масштабировать и панорамировать для графиков в ваших приложениях с помощью zoom и pan функции. Чтобы добавить эту функциональность, добавьте кнопки в свое приложение тот вызов zoom и pan в их коллбэках. Для получения дополнительной информации смотрите Графическую Поддержку в App Designer.

Дизайнер приложений: Конфигурирование столбцов таблицы, чтобы автоматически заполнить целую ширину таблицы

MATLAB автоматически вычисляет ширину столбцов так, чтобы они расширились, чтобы заполнить все свободное место в ширине таблицы. Это поведение включено по умолчанию, или каждый раз, когда ColumnWidth свойство Table Компонент пользовательского интерфейса установлен в 'auto' для одного или нескольких столбцов.

Дизайнер приложений: Управление общих настроек времени проектирования с помощью диалогового окна Preferences

Задайте, какие опции всегда включаются или отключаются каждый раз, когда вы работаете в App Designer. Для получения дополнительной информации смотрите Настройки App Designer.

Дизайнер приложений: включайте cometграфик, и digraph визуализация в приложениях

Использование comet отобразить графики кометы и использовать график plot функционируйте, чтобы отобразиться graph и digraph plots. Для получения дополнительной информации смотрите Графическую Поддержку в App Designer.

Дизайнер приложений: запишите ButtonDownFcn коллбэки для графических объектов, отображенных в осях пользовательского интерфейса

Создайте приложения, содержащие интерактивные графики путем записи ButtonDownFcn коллбэки для графических объектов, таких как Line или Bar объекты. Напишите коллбэк в отдельном программном файле, который находится на пути MATLAB. Например, вот ButtonDownFcn коллбэк, сохраненный как mybuttondown.m.

function mybuttondown(src,evt)
   src.Color = rand(1,3);
end
Чтобы создать сюжетную линию, которая изменяет цвет, когда пользователь кликает по линии, добавьте этот код в любой коллбэк в App Designer.
plot(app.UIAxes,1:10,'ButtonDownFcn',@mybuttondown);

Примечание

ButtonDownFcn поддерживает 2D графические объекты, которые являются дочерними элементами UIAxes (такие как Lineпанель, и Scatter). Однако UIAxes объекты и Figure объекты, созданные с uifigure функция не поддерживает ButtonDownFcn.

Дизайнер приложений: Редактирование заголовков столбца таблицы непосредственно в холсте

Теперь можно отредактировать заголовки столбца таблицы напрямую в холсте. Панель Uitable Properties автоматически отражает ваши изменения.

Дизайнер приложений: Отключите поведение при автоматическом изменении размера при записи SizeChangedFcn коллбэки

SizeChangedFcn коллбэки больше не выполняются, когда поведение при автоматическом изменении размера включено. Поведение при автоматическом изменении размера включено, когда флажок Resize components when app is resized в панели UI Figure Properties (Режим конструктора) проверяется.

Вопросы совместимости

В предыдущих релизах, присутствии SizeChangedFcn коллбэк отключил поведение при автоматическом изменении размера. SizeChangedFcn коллбэк, выполняемый каждый раз, когда измененный размер контейнера (независимо от состояния флажка Resize components when app is resized). Теперь поведение при автоматическом изменении размера должно быть отключено, чтобы позволить SizeChangedFcn выполниться. Приложения, созданные в предыдущих релизах, не выполнят SizeChangedFcn коллбэк, если поведение при автоматическом изменении размера включено.

Отключить поведение при автоматическом изменении размера:

  1. Откройте свое приложение в App Designer и выберите Design View.

  2. Кликните по пустой области холста, чтобы выбрать фигуру пользовательского интерфейса.

  3. В панели UI Figure Properties снимите флажок Resize components when app is resized.

  4. Сохраните и запустите свое приложение.

Производительность

Механизм выполнения: Улучшенная производительность для свойств объектов установки MATLAB

MATLAB улучшал производительность методов набора свойств. Для получения дополнительной информации об этих методах см. Методы Набора свойств.

save Функция: Сохранение файлов MAT v7.3 без сжатия для улучшенной производительности на некоторых устройствах хранения данных

Можно улучшать производительность на некоторых устройствах хранения данных путем сохранения переменных в версию MAT-файлов 7.3 без сжатия. Сохранить переменную (myVariable) без сжатия к MAT-файлу (myFile.matИспользование:

save -v7.3 -nocompression myFile.mat myVariable
Для получения дополнительной информации смотрите save.

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

Memoization является методом оптимизации, используемым, чтобы ускорить программы путем хранения результатов дорогих вызовов функции и возвращения кэшируемого результата, когда программа вызвана теми же входными параметрами. Для получения дополнительной информации смотрите memoize.

Скрипты: Улучшенная производительность скриптов с более низким скриптом наверху

MATLAB улучшал производительность вызова скриптов, особенно при вызове скрипта из другого скрипта.

try, catch Блок: Улучшенная производительность try блоки с более низким выполнением наверху

try, catch блоки, которые не генерируют ошибки или выдают исключения теперь, имеют более низкое выполнение наверху.

Дизайнер приложений: Загрузка приложений быстрее

Загрузка приложений в App Designer составляет 20% к на 35% быстрее. Экономия времени становится более примечательной как количество компонентов в ваших увеличениях приложения.

Функции математики: Различные повышения производительности

Следующая функциональность математики показывает улучшенную производительность:

  • Команда обратной косой черты A\B быстрее при работе с отрицательными определенными матрицами.

  • Транспонированная команда обратной косой черты A'\B для разреженного A обычно быстрее, особенно для треугольных матриц.

  • unique выполняется быстрее, когда входные данные сортируются.

  • kron показывает улучшенную производительность с разреженными матрицами.

  • Размерные функции сокращения (sum, prod, any, all, и так далее), показывают улучшенную производительность при работе со вторым измерением (dim = 2) из разреженных матриц.

Аппаратная поддержка

Arduino: Чтение из квадратурных энкодеров

Пакет поддержки MATLAB для Оборудования Arduino позволяет вам читать из квадратурных энкодеров, чтобы определить скорость, ускорение и положение вращающегося устройства.

Arduino: С помощью беспроводных технологий соединитесь с платой Arduino MKR1000 по WiFi

Пакет поддержки MATLAB для Оборудования Arduino позволяет вам с помощью беспроводных технологий соединиться и связаться с платой Arduino MKR1000 по Wi-Fi.

Продвинутые возможности разработки программ

Класс matlab.lang.OnOffSwitchState: Представление на и прочь как логические значения

matlab.lang.OnOffSwitchState класс перечисления обеспечивает лучшую логическую совместимость для аргументов свойств и аргументов функции, которые имеют естественное “на” или “от” представления. Этот класс включает свойства, которые представляют состояния включения - выключения, чтобы принять логические значения (trueложь, 1, 0), а также векторы символов 'on' и 'off' и перечисления on и off.

Свойства объектов: Проверка значений свойства объекта их типом, размером, формой или другими параметрами ​​

Определения классов для свойств позволяют вам задать размер, класс и другие критерии, которые использование MATLAB, чтобы подтвердить значения присвоило свойствам. Для получения дополнительной информации см. Проверку значений свойств.

Функции валидации: Подтвердите это, значения соответствуют определенным критериям путем вызывания соответствующей функции

Функции валидации определяют, соответствуют ли значения определенным критериям и возвращают описательные сообщения об ошибке, если значения не удовлетворяют этим критериям. Первичное использование для функций валидации для валидации свойства. Для получения дополнительной информации об использовании функций валидации см. Функции проверки свойств.

Имя

Значение

mustBePositiveA

A > 0

mustBeNonpositiveA

A <= 0

mustBeFiniteA

A не имеет никакого NaN и никакой Inf элементы.

mustBeNonNanA

A не имеет никакого NaN элементы.

mustBeNonnegativeA

A >= 0

mustBeNegativeA

A < 0

mustBeNonzeroA

A ~= 0

mustBeGreaterThanA, B

A > B

mustBeLessThanA, B

A < B

mustBeGreaterThanOrEqualA, B

A >= B

mustBeLessThanOrEqualA, B

A <= B

mustBeNonemptyA

A не пусто

mustBeNonsparseA

A не имеет никаких разреженных элементов.

mustBeNumericA

A isnumeric.

mustBeNumericOrLogicalA

A является числовым или логическим.

mustBeRealA

A не имеет никакой мнимой части.

mustBeIntegerA

A==floor(A)

mustBeMemberA, B

A точное совпадение для члена B.

Платформа для мокинга: Изоляция фрагмента системы, чтобы протестировать путем подражания поведению зависимых компонентов

Когда модульное тестирование, вы часто интересуетесь тестированием фрагмента полной системы, изолированной от зависимых компонентов. Чтобы подражать поведению зависимых компонентов, используйте платформу для мокинга. Для получения дополнительной информации смотрите Платформу для мокинга.

Среда Модульного тестирования: Сгенерируйте снимки экрана и фигуры во время тестирования с ScreenshotDiagnostic и FigureDiagnostic

Чтобы записать снимки экрана и сохранить фигуры, передайте ScreenshotDiagnostic и FigureDiagnostic экземпляры, чтобы протестировать проверки или log метод TestCase класс. Например, в тесте, testCase.verifyEqual(actual,expected,ScreenshotDiagnostic) получает снимок экрана когда actual не равно expected. По умолчанию MATLAB только записывает диагностику на отказах проверки. Однако можно записать передающую диагностику путем конфигурирования TestRunner с плагином, таким как TestReportPlugin или DiagnosticsRecordingPlugin. Чтобы произвести артефакты независимо из отказов проверки, используйте TestCase.log метод.

Можно задать, где MATLAB хранит эти артефакты с помощью ArtifactsRootFolder свойство исполнителя тестов. Для получения дополнительной информации смотрите matlab.unittest.TestRunner.

Вопросы совместимости

DiagnosticResult имя свойства превратилось в DiagnosticText в следующих классах в matlab.unittest.diagnostics пакет: Diagnostic, ConstraintDiagnostic, DisplayDiagnostic, и FunctionHandleDiagnostic.

TestDiagnosticResult и FrameworkDiagnosticResult свойства в matlab.qualifications.QualificationEventData класс был удален. Они заменяются соответственно TestDiagnosticResults и FrameworkDiagnosticResults свойства, которые содержат DiagnosticResult объекты. Свойства, которые они заменяют, были массивами ячеек из символьных векторов.

DiagnosticResult свойство в matlab.diagnostics.LoggedDiagnosticEventData класс был удален. Это заменяется DiagnosticResults свойство, которое содержит DiagnosticResult объекты. DiagnosticResult свойство было массивами ячеек из символьных векторов.

Среда Модульного тестирования: Получение снимков экрана и фигур, сгенерированных во время тестов с помощью TestReportPlugin 

Если ваши тесты генерируют снимки экрана и фигуры во время тестов, они включены в протокол испытаний, сгенерированный с TestReportPlugin класс. По умолчанию MATLAB хранит только артефакты, сопоставленные с не пройдено диагностикой. Однако можно указать, что протокол испытаний включает передающую диагностику, или явным образом регистрируйте артефакты в тесте с помощью TestCase.log метод. Для получения дополнительной информации смотрите matlab.unittest.plugins.TestReportPlugin.

Среда Модульного тестирования: управляйте runtests функция с отладкой, строгой, и опции многословия ​

runtests функция имеет дополнительные опции:

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

  • Чтобы сгенерировать отказ проверки, если MATLAB выдает предупреждение во время выполнения теста, используйте 'Strict' опция.

  • Чтобы запустить тесты на различных уровнях многословия, используйте 'Verbosity' опция.

Для получения дополнительной информации смотрите runtests.

Среда Модульного тестирования: Выбор тестов именем процедуры

Можно запустить тесты с заданным именем процедуры. Имя процедуры отличается от тестового имени элемента, потому что это не включает класса или имени пакета или информации о параметризации. В основанном на классах тесте имя процедуры является именем метода тестирования. В функциональном тесте это - имя локальной функции, которая содержит тест. В тесте на основе скриптов это - имя, сгенерированное из заголовка экспериментального участка. Например, если тестовым именем элемента для теста с параметризацией является MyTestClass/myTestMethod(param1=val1,parm2=valB) именем процедуры является myTestMethod.

  • Чтобы выбрать и запустить тестовые элементы с заданным именем процедуры, используйте 'ProcedureName' пара "имя-значение" с runtests, runperf, и testsuite функции или TestSuite методы создания набора.

  • Чтобы выбрать тестовые элементы из существующего тестового набора, используйте TestSuite.selectIf метод с HasProcedureName селектор.

Среда Модульного тестирования: Компаратор для таблиц MATLAB

Можно использовать TableComparator класс с IsEqualTo ограничение, чтобы сравнить табличные значения рекурсивно.

Вопросы совместимости

verifyEqualassertEqualassumeEqual, и fatalAssertEqual методы и IsEqualTo ограничение сравнивает таблицы MATLAB с помощью TableComparator класс. До R2017a они использовали ObjectComparator, который менее строг. Поэтому возможно, что, если у вас есть тесты, которые сравнивают классы, тест, который раньше передавал, может теперь перестать работать.

Среда для тестирования производительности: Просмотрите статистику от тестовых измерений с sampleSummary метод ​​

Создать table из итоговой статистики от результатов для выполнения эксперимента измерения на тестовом наборе используйте sampleSummary метод MeasurementResult класс. Для получения дополнительной информации смотрите matlab.unittest.measurement.MeasurementResult.sampleSummary.

Среда для тестирования производительности: Примените функцию через тестовые измерения с samplefun метод

Применять функцию через Samples из MeasurementResult массив, используйте samplefun метод. Для получения дополнительной информации смотрите matlab.unittest.measurement.MeasurementResult.samplefun.

Интеграция с системой контроля версий: Использование Получения по запросу Git, чтобы выбрать и объединить за один шаг

Можно теперь использовать Получение по запросу для интегрирования системы контроля версий Git. Вытяните выбирает последние изменения и объединяет их в вашу текущую ветвь. Ранее необходимо было выбрать и объединить отдельно, прежде чем вы видели изменения. Для получения дополнительной информации смотрите Получение по запросу, Нажатие и Файлы Выборки с Git.

MEX создает с 64-битным API по умолчанию

mex функционируйте использует обрабатывающий большой массив API (-largeArrayDims опция) по умолчанию. Лучшая практика должна обновить ваш исходный код MEX, чтобы пользоваться этой библиотекой и восстановить файл MEX. Для инструкций смотрите файлы MEX Обновления, чтобы Использовать 64-битный API.

Можно запустить существующие бинарные файлы MEX без восстановления. Для получения дополнительной информации смотрите Совместимость версий.

Если вы создаете файлы MEX, не используя mex опции команды -largeArrayDims или -compatibleArrayDims, затем рассмотрите таблицу в Вопросах совместимости, чтобы избежать в зависимости от поведения по умолчанию, которое изменяется в R2017a. Для получения информации о последствиях использования -compatibleArrayDims опция, чтобы создать файлы MEX, смотрите Что, Если я Не Обновляю?

Режим сборки по умолчанию для S-функций MEX C остается -compatibleArrayDims.

Вопросы совместимости

Эта таблица показывает изменения, которые необходимо внести в ваш mex команда, чтобы создать существующие файлы MEX или S-функции.

Исходный код

команда mex — R2016b и ранеекоманда mex — R2017a и позже

Файл MEX C/C++ или исходный код Фортрана использует 32-битный API

mex myMex.cmex myMex.c -compatibleArrayDims
mex myMex.c -compatibleArrayDims

Никакое изменение.

Файл MEX C/C++ или исходный код Фортрана использует 64-битный API

mex myMex.c -largeArrayDims

Использование: mex myMex.c

Или: mex myMex.c -largeArrayDims


S-функция исходный код C/C++ использует 32-битный API

mex sfun.c

Никакое изменение.

mex sfun.c -compatibleArrayDims

Никакое изменение.

S-функция исходный код C/C++ использует 64-битный API

mex sfun.c -largeArrayDims

Никакое изменение.

S-функция исходный код Фортрана использует 32-битный API

mex sfun.Fmex sfun.F -compatibleArrayDims

S-функция исходный код Фортрана использует 64-битный API

mex sfun.F -largeArrayDims

Никакое изменение.

Файлы MEX и совместно использованные библиотеки: Диагностическая информация, отображенная для отказа загрузить

Вместо того, чтобы отобразить Module Not Found или Invalid MEX-file ошибки, MATLAB отображает диагностическую информацию. Для получения дополнительной информации смотрите Недопустимые Ошибки файла MEX и Ошибки Библиотеки Загрузки.

Java: поддержки string тип данных

При вызывании функции Java MATLAB преобразует string скалярные аргументы к java.lang.String и string аргументы Array к java.lang.String[]. Для получения дополнительной информации смотрите Данные о Передаче к Методам Java.

MATLAB string функция преобразует java.lang.String скалярные аргументы к string скаляр и преобразует java.lang.String[]…[] аргумент к string массив с теми же размерностями и размерами. Для получения дополнительной информации смотрите, Обрабатывают Данные, Возвращенные в Методы Java.

Python: поддержки string тип данных

MATLAB обеспечивает следующую функциональность типа данных String при использовании функций Python. Для получения дополнительной информации о типах данных String, см. Символы и строки.

  • При вызывании функции Python MATLAB преобразует string скалярные аргументы к py.str. MATLAB преобразует <missing> значения в string аргументы к py.None. Для получения дополнительной информации смотрите Данные о Передаче к Python.

  • string функция преобразует py.str и py.unicode типы к string скаляр. Для получения дополнительной информации смотрите, Обрабатывают Данные, Возвращенные в Python. string функция не преобразует объекты, задающие __str__ методы; например, py.list или py.dict объекты.

  • Функции pyversion и pyargs примите string тип данных для входных параметров.

  • string скалярные аргументы могут использоваться, чтобы индексировать в Python, сопоставляющий типы. Например, для py.dict объект patient = py.dict(pyargs('name','John Doe','billing',127));, можно отобразить тарификационное значение с оператором patient{"billing"}.

Версия 3.3 Python: Поддержка прекращена

Поддержка версии 3.3 Python прекращена.

Вопросы совместимости

Чтобы гарантировать постоянную поддержку ваших приложений, обновите до поддерживаемой версии Python — версия 3.4 или 3.5.

MATLAB поставляется с версией 5.24 ActiveState Perl на платформах Windows

MATLAB поставляется с обновленной версией Perl, версии 5.24.

Вопросы совместимости

Если вы используете perl команда на платформах Windows, обратитесь к веб-сайту ActiveState, https://www.activestate.com, для получения информации об этой версии.

Поддержка компилятора изменяется для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла

ПоддержкаКомпиляторПлатформа

Добавленный

Studio XE 2017 параллели Intel

Windows

Добавленный

Studio XE 2017 параллели Intel для Фортрана

macOS

Добавленный

XCode 8.x, с R2016b

macOS

Чтобы гарантировать постоянную поддержку создания ваших файлов MEX, рассмотрите обновление до другого поддерживаемого компилятора. Для актуального списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

Отрицание matlab.unittest.constraints.ReturnsTrue ограничение (~ReturnsTrue)

Все еще работает

Не применяется

Измените логику для тестов, которые используют отрицание ReturnsTrue ограничение.

Генерация тестовых наборов от класса, который выводит из конкретного базового класса, который задает методы та ссылка TestParameter, MethodSetupParameter, или ClassSetupParameter не заданный в базовом классе

Предупреждает

Задайте любого:

  • Базовый класс как Краткий обзор с помощью атрибута Краткого обзора уровня класса. Например, classdef (Abstract) MyTest < matlab.unittest.Testcase.

  • Абстрактные свойства параметра для всех параметров используются методами класса. Например, properties (Abstract,TestParameter).

В будущих релизах, если ваш тестовый класс наследовался конкретному базовому классу, который использует параметр, который не задан в базовом классе, MATLAB выдаст ошибку.

Изменения в fieldnames вызывает синтаксис obj.fieldnames выдавать ошибку с некоторыми типами объектов.

Ошибки

Используйте этот синтаксис вместо этого:

fieldnames(obj)

Чтобы определить, какие свойства заданы для объектов MATLAB, используйте properties функция.

Используйте fieldnames функция с объектами типа COM и Java.

Определение свойства добирается, метод для постоянного свойства не поддерживается.

Предупреждает

Постоянные свойства не поддерживают использование получить метода, потому что значение не изменяется проектом.

В будущих релизах, задавая свойство добираются, метод для постоянного свойства приведет к ошибке.

Соединение с элементами привязки к HTML из пользовательской документации не поддерживаетсяВсе еще работаетНе применяетсяПользовательские страницы документации, содержащие ссылки на привязки все еще, отображаются правильно, но браузер не прокручивает к соединенному местоположению.

Встроенная поддержка Microsoft Source Code Control Interface, включая
cmopts
verctrl

Ошибки

'none'

MATLAB больше не включает встроенную поддержку Microsoft Source Code Control Interface (MSSCCI). Замените эту функциональность на одну из этих опций:

checkin
checkout
customverctrl
undocheckout

Ошибки

'none'

Замените эту функциональность на один из них:

R2016b

Новые возможности, исправления ошибок, Вопросы совместимости

Рабочий стол

Редактор ​Live: Панорамирование, изменение масштаба, и вращают оси в выходном ​ фигуры

Измените выходные фигуры, в интерактивном режиме использующие инструменты в правом верхнем углу каждого, исключает. Эти инструменты появляются, когда вы выбираете или наводите на оси. Для получения дополнительной информации смотрите, Изменяют Выходные фигуры.

Live Editor: Создание и редактирование уравнений в интерактивном режиме с помощью редактора формул ​

Можно создать уравнение в интерактивном режиме в live скриптах путем выбора из графического дисплея символов и структур. Чтобы вставить новое уравнение, перейдите к вкладке Live Editor и в разделе Insert, нажмите Equation. Для получения дополнительной информации смотрите, Вставляют уравнения в Live скрипты.

Live Editor: Создание новых разделов и текста формата быстро с помощью автоформатирующий ​

Для быстрого форматирования в live скриптах можно использовать комбинацию горячих клавиш и последовательностей символов. Для получения дополнительной информации, включая список поддерживаемых последовательностей, смотрите Автоформатирование.

Live Editor: Автоматически переименуйте все функции или переменные в live скрипте

Предотвратите типографские ошибки путем автоматического переименования нескольких ссылок на функцию или переменную в live скрипте. Когда вы переименовываете такую функцию или переменную, подсказка открывается, если существует больше чем одна ссылка на ту переменную или функцию в файле. Нажмите Shift + Enter, чтобы переименовать все экземпляры функции или переменной.

Live Editor: Перетаскивание мышью выбранного кода и текста в live скрипте и между другими приложениями

Выделенный путем перетаскивания код от live скрипта до и из другого приложения, обеспечивая подсветку синтаксиса и характеристики шрифта.

Live Editor: Просмотр выходных параметров раньше когда рабочие live скрипты

Live Editor теперь отображает вывод в live скриптах, когда он создается, вместо того, когда выполнение раздела завершено.

Командное окно: Просмотр обновленного отображения для массивов, включая заголовки, указывающие на класс, размер и форму

При отображении вывода Командное окно теперь добавляет заголовок, который включает класс, размер и форму переменной. Например:

A = rand(4, 6, 'single')
A =
  4×6 single matrix
    0.8147    0.6324    0.9575    0.9572    0.4218    0.6557
    0.9058    0.0975    0.9649    0.4854    0.9157    0.0357
    0.1270    0.2785    0.1576    0.8003    0.7922    0.8491
    0.9134    0.5469    0.9706    0.1419    0.9595    0.9340
Командное окно отображает новый заголовок для большинства классов кроме double и char, включая:

singleint8uint8function_handle
logicalint16uint16string
structint32uint32 
cellint64uint64 

Командное окно также отображает измерения массива с помощью стандартизированного формата и улучшенного размещения для целочисленных массивов.

Испытания продукта: Загрузка испытаний за Продукты Mathworks с помощью Add-On Explorer ​

Загрузите и установите испытания Продукта Mathworks непосредственно от MATLAB с помощью Add-On Explorer. Чтобы открыть Add-On Explorer, перейдите к вкладке Home и кликните по значку Add-Ons.

Упаковка тулбокса: Включайте примеры live скрипта, сгенерируйте info.xml и helptoc.xml шаблоны для пользовательской документации, и изменяют путь к классу Java на установке

Когда вы группируете тулбокс, MATLAB обнаруживает примеры live скрипта. Затем когда кто-то установил ваш тулбокс, примеры появляются в Браузере документации MATLAB.

Интеграция вашей документации тулбокса в Браузер документации MATLAB легче с автоматически сгенерированными файлами шаблона. Чтобы отобразить вашу документацию тулбокса под Supplemental Software в Браузере документации, отредактируйте info.xml и helptoc.xml обработайте файлы по шаблону.

MATLAB автоматически обнаруживает файлы JAR, чтобы включать на динамическом пути, и можно управлять этими файлами в диалоговом окне Package a Toolbox.

Для получения дополнительной информации смотрите, Создают и Тулбоксы Доли.

Настройки: Сохранение настроек в новое местоположение по умолчанию на Mac

MATLAB теперь сохраняет настройки в ваше пользовательское приложение папка Support в системах Mac OS X. Местоположением пользовательского приложения папка Support является ~/Library/Application Support.

Документация: Нахождение примеров быстрее через Продукты Mathworks

Просмотрите примеры через Продукты Mathworks или ищите примеры с помощью поля поиска и поисковых фильтров. К примерам доступа онлайн, перейдите к https://www.mathworks.com/help/examples.html. К примерам доступа в MATLAB перейдите к вкладке Home и нажмите Help> Examples.

Документация: Открытый и примеры выполнения в MATLAB

Нажмите кнопку Open Script или Open Live Script в примере, чтобы открыть его в MATLAB. MATLAB копирует файл в качестве примера и все зависимые файлы к папке userpath/Examples/examplefilename, где examplefilename имя файла в качестве примера. userpath путь, возвращенный userpath команда. MATLAB затем изменяет текущую папку в новую папку. Можно запустить пример, как, или отредактируйте его перед выполнением.

Язык и программирование

Функции в Скриптах: Определение локальных функций в скриптах для повторного использования улучшенного кода и удобочитаемости

Скрипты MATLAB, включая live скрипты, могут содержать код, чтобы задать локальные функции. Локальные функции в скриптах полезны для экспериментирования с кодом в одном файле, а также записи повторно используемого кода, который может легко быть добавлен, изменен и удален. Для получения дополнительной информации смотрите, Добавляют Функции к Скриптам.

Примечание

Если ваш скрипт содержит локальные функции, вы не можете запустить секции кода (также известный как ячейки кода) индивидуально. Кнопки Run Section и Run and Advance отключены. Чтобы запустить скрипт, введите сохраненное имя скрипта в Командном окне или нажмите Run. Можно запустить разделы индивидуально в live скриптах, содержащих локальные функции.

string Массив: Управление, сравнение и храните текстовые данные эффективно ​

string массивы обеспечивают устройство хранения данных текстовых данных и набор функций для управления текстом. Например, функции такой как contains найдите текст в строках. split и join разделение функций и присоединяется к строкам в строковых массивах. Можно сравнить строки с операторами отношения, такими как ==, и вид их с sort функция.

Для получения дополнительной информации см. Символы и строки.

timetable Контейнер данных: Управление табличных данных, к которым добавляют метку времени, с основанной на времени индексацией и синхронизацией ​​​

timetable контейнер данных является таблицей, которая сопоставляет время с каждой строкой. Как table контейнер, timetable переменные данных в столбцах магазинов товаров для хранения данных, которые имеют различные типы данных и размеры, пока переменные данных, имеют одинаковое число строк. Чтобы создать расписания из переменных рабочей области или из таблиц, используйте timetable или table2timetable функции. Можно передискретизировать или агрегированные данные в расписаниях с retime и synchronize функции. Также можно использовать любую табличную функцию с расписаниями.

Для получения дополнительной информации см. Расписания.

timerange Функция: Доступ ко всем данным в заданной дате и времени располагается в расписании

Можно создать переменную индексирования с timerange функция и использование, что переменная к индексу в timetable контейнер данных.

vartype Функция: Доступ ко всем переменным заданного типа данных в таблице

Можно получить доступ ко всем табличным переменным заданного типа данных с vartype функция. Например, если T таблица, затем S = vartype('numeric'); Tnum = T(:,S) возвращает Tnum как таблица, которая содержит только числовые переменные от T.

table Контейнер данных: Ссылка все переменные в таблице с совместимыми типами с помощью Variables свойство

Можно получить доступ ко всем переменным таблицы или расписания с совместимыми типами с помощью Variables свойство. Например, если T 5 2 таблица с двумя числовыми переменными, затем T.Variables возвращает 5 2 числовую матрицу. T.Variables эквивалентно T{:,:} синтаксис.

dir Функция: Поиск папок и подпапок рекурсивно

Переройте папки и подпапки на пути рекурсивно с помощью подстановочных знаков в пути. Для получения дополнительной информации смотрите dir.

Примечание

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

Путь поиска файлов: Добавление папок к пути поиска файлов MATLAB с помощью относительных путей

Когда вы добавляете папку в путь поиска файлов MATLAB с помощью относительного пути, MATLAB теперь добавляет абсолютный путь папки к пути поиска файлов. В предыдущих версиях MATLAB MATLAB добавил относительный путь папки, и путь был повторно разрешен после каждого изменения в текущей папке.

Вопросы совместимости

Если ваш путь поиска файлов MATLAB содержит относительные пути к папкам, и вы используете автоматическое перерешение путей при изменении папок, необходимо обновить путь поиска файлов. Используйте диалоговое окно Set Path или addpath или path функции, чтобы добавить абсолютный путь папок к пути поиска файлов. Для получения дополнительной информации смотрите Папки Изменения на Пути поиска файлов.

Путь поиска файлов: Добавьте папки в путь поиска файлов MATLAB с помощью MATLABPATH переменная окружения на Windows

MATLAB теперь добавляет папки, заданные MATLABPATH переменная окружения к пути поиска файлов MATLAB на платформах Windows. Это действие было ранее только сделано на платформах UNIX. Для получения дополнительной информации смотрите Набор Переменная окружения MATLABPATH.

userpath Функция: Обновите код, чтобы использовать упрощенный userpath на UNIX

С R2016b, userpath функционируйте теперь, только возвращает первую папку на пути поиска файлов. В предыдущих версиях MATLAB, userpath возвращенный первая папка на пути поиска файлов, добавленном с папками, перечисленными в MATLABPATH переменная окружения для платформ UNIX.

Вопросы совместимости

Если у вас есть скрипты или функции, которые используют userpath функционируйте, чтобы возвратить и первую папку на пути поиска файлов и пути, перечисленные в MATLABPATH переменная окружения, затем необходимо обновить код. Используйте userpath функция, чтобы получить только userpath папка или использование path функция, чтобы получить весь путь поиска файлов MATLAB.

regexp и regexpi Функции: Принуждение выходных аргументов в массив ячеек

Можно задать 'forceCellOutput' аргумент, чтобы обеспечить regexp и regexpi функции, чтобы возвратить выходные аргументы в массиве ячеек. Например, regexp(str,expression) возвращает индексы соответствий как числовой массив когда str вектор символов или строковый скаляр, но regexp(str,expression,'forceCellOutput') возвращает тот же числовой массив в ячейке.

regexptranslate Функция: Замена соответствия с шаблонами на завершенное регулярное выражение

Можно задать 'flexible' аргумент при вызове regexptranslate заменять соответствие с шаблонами в тексте с завершенным регулярным выражением, которое вы задаете. Синтаксис regexptranslate('flexible',str,expression) заменяет тот же текст в качестве regexprep(str,expression,regexptranslate('escape',expression)).

Приватные функции: Правила Видимости изменяются

С R2016b закрытые функции отображаются только к другим функциям или скриптам, которые сразу находятся в папке выше private подпапка (родительская папка). В предыдущих версиях MATLAB закрытые функции отобразились к скриптам вне родительской папки, если они были вызваны функциями в родительской папке.

Вопросы совместимости

Если у вас есть функция, которая вызывает скрипт вне родительской папки, и тот скрипт вызывает закрытую функцию, ваш код может привести к ошибке или изменению поведения. Если и функция, которая вызывает скрипт и скрипт, который вызывает закрытую функцию, в родительской папке, то нет никакого изменения в поведении.

Если функция, которая вызывает скрипт и скрипт, который вызывает закрытую функцию, находится в других папках:

  • Изменение в поведении может произойти, если скрипт находит различную функцию с тем же именем как закрытая функция.

  • Ошибка происходит, если скрипт не находит функции с именем, которое совпадает с именем закрытой функции.

Поместите скрипты, которые должны сразу получить доступ к закрытым функциям к папке выше private подпапка.

Идентификаторы сообщений: Обновление кода, чтобы использовать измененные идентификаторы сообщения об ошибке

Идентификатор сообщения об ошибке MATLAB:datatypes:valueOutsideValidRange изменился.

Вопросы совместимости

Если у вас есть скрипты или функции, которые используют MATLAB:datatypes:valueOutsideValidRange идентификатор сообщения об ошибке, необходимо обновить код, чтобы использовать один или несколько новых идентификаторов, перечисленных здесь. Как правило, вы можете использовать идентификаторы сообщения об ошибке в коде, который использует оператор попытки/выгоды и выполняет действие на основе определенного ошибочного идентификатора.

  • MATLAB:datatypes:OutsideRangeFiniteGreater0

  • MATLAB:datatypes:OutsideRangeIntegerGreater0

  • MATLAB:datatypes:OutsideRangeNaN0to1

  • MATLAB:datatypes:OutsideRangeValidNumber

  • MATLAB:datatypes:OutsideRange0to1

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

Вызов nargin, nargout, или inputname из скрипта

Ошибки

Переместите вызовы nargin, nargout, и inputname в соответствующий файл функции. Если вы нуждаетесь в результатах в скрипте, вызываете функции и храните результаты в переменной. Затем используйте переменную в скрипте.

Если вы вызываете nargin, nargout, или inputname из скрипта MATLAB выдает ошибку.

Видимость локальных функций

Ошибки

Сохраните указатель на функцию к локальной функции в переменной и использовании это вместо вызова локальной функции. Например, присвойте fcn = @myLocalFcn и обновите скрипт, чтобы использовать переменную fcn вместо того, чтобы вызвать myLocalFcn непосредственно.

Локальные функции отображаются только к другим функциям в том же файле. Ранее, если бы файл функции, который задает локальные функции, вызывал скрипт, тот скрипт мог вызвать те локальные функции.

Скрипты, которые вызывают закрытые функции, но сразу не находятся в папке выше private подпапка

Ошибки

Сохраните указатель на функцию к закрытой функции в переменной и использовании это вместо вызова закрытой функции. Например, присвойте fcn = @myPrivateFcn и обновите скрипт, чтобы использовать переменную fcn вместо того, чтобы вызвать myPrivateFcn непосредственно.

Закрытые функции отображаются только к другим функциям или скриптам в папке сразу выше private подпапка. Для получения дополнительной информации смотрите Закрытые функции: Правила Видимости изменяются.

Линейная индексация, чтобы расширить struct массивы и cell массивы с обозначением фигурной скобки

Ошибки

Использовать линейную индексацию, чтобы расширить многомерный struct массив или cell массив, который использует обозначение фигурной скобки, сначала изменяет размерность массива к массиву N-1 или 1 на n. В качестве альтернативы расширьте массив, использующий многомерную индексацию.

Ранее линейная индексация, чтобы расширить границы struct массивы или cell массивы с помощью фигурных скобок автоматически изменили бы размерность массива к массиву N-1.

Удаление строк таблицы или переменных путем индексирования в таблицу и присвоения пустых кавычек ('')

Ошибки

Удалить строки таблицы или переменные, индекс в строку таблицы или переменную, и присвоить скобки пустого квадрата ([]) вместо пустых кавычек (''). Например, чтобы удалить первую строку таблицы T, используйте T(1,:) = [] синтаксис.

Ранее присвоение с помощью пустых кавычек, когда индексирование в таблицу удалило бы строки таблицы или переменные.

Удаление duration или calendarDuration элементы путем индексирования в массив и присвоения пустых кавычек ('')

Ошибки

Удалить duration или calendarDuration элементы, индекс в массив и скобки пустого квадрата присвоения ([]) вместо пустых кавычек (''). Например, чтобы удалить второй элемент duration массив D, используйте D(2) = [] синтаксис.

Ранее присвоение с помощью пустых кавычек при индексировании в duration или calendarDuration массив удалил бы элементы таких массивов.

Удаление categorical элементы путем индексирования в массив и присвоения пустых кавычек ('')

Все еще работает

Удалить categorical элементы, индекс в массив и скобки пустого квадрата присвоения ([]) вместо пустых кавычек (''). Например, чтобы удалить второй элемент categorical массив C, используйте C(2) = [] синтаксис.

Присвоение с помощью пустых кавычек при индексировании в categorical массив теперь присваивает <undefined> элементы к массиву. Ранее присвоение удаляло элементы.

Удаление datetime элементы путем индексирования в массив и присвоения пустых кавычек ('')

Все еще работает

Удалить datetime элементы, индекс в массив и скобки пустого квадрата присвоения ([]) вместо пустых кавычек (''). Например, чтобы удалить второй элемент datetime массив D, используйте D(2) = [] синтаксис.

Присвоение с помощью пустых кавычек при индексировании в datetime массив теперь присваивает NaT значения к массиву. Ранее присвоение удаляло элементы.

Математика

Неявное расширение: Применение поэлементных операций и функций к массивам с автоматическим расширением размерностей длины 1

Неявное расширение является обобщением скалярного расширения. Со скалярным расширением скаляр расширяется, чтобы быть одного размера с другим массивом, чтобы упростить поэлементные операции. С неявным расширением поэлементные операторы и функции, перечисленные здесь, могут неявно расширить свои входные параметры, чтобы быть одного размера, пока массивы имеют совместимые размеры. Два массива имеют совместимые размеры, если для каждой размерности размеры размерности входных параметров являются или тем же самым или одним из них, 1. Смотрите Совместимые Размеры Массивов для Основных Операций и Массив по сравнению Матричных операций для получения дополнительной информации.

  • Поэлементные арифметические операторы+, -, .*, .^, ./, .\

  • Операторы отношения<, <=, >, >=, ==, ~=

  • Логические операторы, |, xor

  • Поразрядные функцииbitand, bitor, bitxor

  • Элементарные математические функцииmax, min, mod, rem, hypot, atan2, atan2d

Например, можно вычислить среднее значение каждого столбца в матричном A, и затем вычтите вектор из средних значений из каждого столбца с A - mean(A).

Ранее эта функциональность была доступна через bsxfun функция. Теперь рекомендуется, чтобы вы заменили большую часть использования bsxfun с прямыми вызовами функций и операторов то неявное расширение поддержки. По сравнению с использованием bsxfun, неявное расширение предлагает более быструю скорость выполнения, лучшее использование памяти и улучшенную удобочитаемость кода.

Вопросы совместимости

Если ваш код использует какой-либо из поэлементных операторов или упомянутых выше функций и использует ошибки, которые MATLAB возвращает в несовпадающие размеры, особенно в try/catch блокируйтесь, затем ваш код больше не может фиксировать те ошибки. Это изменение - то, потому что некоторые комбинации входных размеров, которые ранее вызвали ошибки, теперь допустимы.

Например, в более старых релизах MATLAB, вы не могли добавить строку и вектор-столбец, но те операнды теперь допустимы для сложения с неявным расширением. Другими словами, выражение как [1 2] + [1; 2] ранее возвращенный ошибка несоответствия размера, но теперь это выполняется.

Этот вопрос совместимости не применяется ни к какому использованию bsxfun.

graph и digraph Объекты: Вычислите изоморфизм графов, двусвязные компоненты, вершины сокращения и конденсацию узла

Объекты диаграмм создали использование также graph или digraph поддерживайте эти функции:

  • isomorphism — Вычислите отношение эквивалентности изоморфизма графов между двумя графиками.

  • isisomorphic — Определите, изоморфны ли два графика.

Объекты диаграмм создали использование graph поддерживайте эти функции:

  • biconncomp — Вычислите двусвязные компоненты неориентированного графа.

  • bctree — Вычислите сокращенное из блока дерево неориентированного графа.

Объекты диаграмм создали использование digraph поддерживайте эти функции:

  • condensation — Представляйте каждый строго связанный компонент в ориентированном графе с помощью одного узла.

graph и digraph Объекты: Визуализация графиков и сетей в 3-D

GraphPlot объект, возвращенный путем графического вывода a graph или digraph теперь содержит ZData свойство. Если ZData непусто, затем это указывает, что z - координирует для вершин графика.

Кроме того, новые методы макета доступны для 'force3' и 'subspace3', которые автоматически вычисляют значения для XData, YData, и ZData отобразить график в трех измерениях.

digraph Объект: Противоположные направления ребра в ориентированном графе с помощью flipedge функция

flipedge функционируйте инвертирует направление ориентированных ребер в графике.

conv2 Функция: Вычисление 2D сверток с улучшенной производительностью

conv2 функция выполняет быстрее при использовании синтаксиса conv2(u,v,A), где u и v векторы и A матрица.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости
circshift изменение поведения для векторов-строкВсе еще работаетЧтобы сохранить предыдущее поведение при работе с векторами-строками со скалярным коэффициентом сдвига, задайте 1 для аргумента размерности. Например, используйте circshift([1 2 3 4],2,1), где 2 коэффициент сдвига, и 1 размерность.circshift теперь элементы сдвигов вдоль векторов-строк, когда обеспечено скалярный коэффициент сдвига. Например, circshift([1 2 3 4],2) возвращает векторный [3 4 1 2]. Ранее circshift возвращенный исходный вектор-строка без перемены.

Графика

Графический вывод даты и времени: Используйте datetime или данные о длительности в общих функциях построения графика, и настройте графики с линейками длительности и datetime

Чтобы построить datetime или данные о длительности, можно использовать эти функции.

barbarh
plotplot3
semilogx (x значения должно быть числовым),semilogy (y значения должно быть числовым),
stemstairs
areamesh
surfsurface
fillfill3
linetext

Кроме того, можно использовать новый datetime и объекты линейки длительности, чтобы настроить оси. Доступ к datetime или объекту линейки длительности через объект осей. Например:

d = duration(1,30:33,0);
y = [3 5 2 3];
plot(d,y)
ax = gca;
ax.XAxis
ans = 

  DurationRuler with properties:

             Limits: [01:29:55    01:33:04]
         TickValues: [01:30:00    01:30:30    01:31:00    01:31:30    01:32:00    01:32:29    01:33:00]
    TickLabelFormat: 'hh:mm:ss'

  Show all properties

Для списка свойств объектов смотрите Datetime Ruler Properties и Duration Ruler Properties.

Вопросы совместимости

При графическом выводе datetime или данных о длительности, рассмотрите эти изменения:

  • xlimylimzlim, и axis функции больше не принимают, что двойные значения устанавливают пределы для оси со значениями длительности или datetime.

  • axis функционируйте больше не поддерживает установку пределов по осям для осей со смешанными типами данных (числовой, datetime или длительность). Используйте xlimylim, и zlim функции вместо этого.

  • XLimylimzlim, XTick, YTick, и ZTick свойства объекта осей теперь содержат datetime или значения длительности вместо двойных значений. Чтобы изменить пределы или значения деления, задайте datetime или значения длительности вместо двойных значений.

  • XData, YData, и ZData свойства теперь содержат datetime или значения длительности вместо двойных значений. Чтобы изменить значения данных, задайте datetime или значения длительности вместо двойных значений.

  • Построить графики, которые смешивают различные типы данных вдоль одной оси, приводит к ошибке. Построив графики, используйте только один тип данных на ось.

polarscatter и polarhistogram Функции: Создание рассеяния и графиков гистограммы в полярных координатах

Чтобы создать графики рассеивания в полярных координатах, используйте polarscatter функция. Точно так же можно создать гистограммы в полярных координатах с помощью polarhistogram функция. polarhistogram функция заменяет rose функция.

fimplicit и fimplicit3 Функции: Постройте неявные функции формы f (x, y) = 0 и f (x, y, z) = 0

Построить неявные функции формы f (x, y) = 0, использование fimplicit функция. Построить неявные функции формы f (x, y, z) = 0, использование fimplicit3 функция.

Отметка Функций форматирования: Настройка текста, положения, вращения и формата для меток метки деления на оси

Можно настроить внешний вид значений деления и меток вдоль каждой оси с помощью функций форматирования метки деления. Используйте x - ось, y - ось, и z - версии оси при графическом выводе в Декартовых координатах. Используйте r - ось и theta - версии оси при графическом выводе в полярных координатах.

Эта таблица приводит новые функции.

ФункцииОписание
xticks
yticks
zticks
rticks
thetaticks
Настройте местоположения отметок деления вдоль каждой оси.
xticklabels
yticklabels
zticklabels
rticklabels
thetaticklabels
Настройте метки в виде галочки вдоль каждой оси.
xtickformat
ytickformat
ztickformat
rtickformat
thetatickformat
Отформатируйте метки в виде галочки вдоль каждой оси, такие как управление количеством показанных десятичных значений или отображение значений как значения валюты.
xtickangle
ytickangle
ztickangle
rtickangle
Вращайте метки в виде галочки вдоль каждой оси.

errorbar Функция: Создание вертикального и горизонтального значения погрешности и управление шириной шляпы

Чтобы построить и вертикальное и горизонтальное значение погрешности, используйте errorbar функция. Кроме того, можно управлять шириной дна в каждом конце значения погрешности путем установки CapSize свойство объекта errorbar.

x = 1:10;
y = sin(x);
err = std(y)*ones(size(x));
e = errorbar(x,y,err,'horizontal')
e.CapSize = 10;

Эти новые errorbar свойства объектов управляют длинами значения погрешности в каждом направлении:

  • XNegativeDelta и XNegativeDeltaSource — Длина левой стороны горизонтального значения погрешности

  • XPositiveDelta и XPositiveDeltaSource — Длина правой стороны горизонтального значения погрешности

  • YNegativeDelta и YNegativeDeltaSource — Длина более низких фрагментов вертикального значения погрешности

  • YPositiveDelta и YPositiveDeltaSource — Длина верхних фрагментов вертикального значения погрешности

Вопросы совместимости

Эти errorbar свойства объектов, все еще запущенные, но, были заменены новыми свойствами.

Замененное свойство Используйте это свойство вместо этого
LDataYNegativeDelta
UDataYPositiveDelta
LDataSourceYNegativeDeltaSource
UDataSourceYPositiveDeltaSource

plot Функция: Размещение элемента управления и частота маркеров с MarkerIndices свойство

Чтобы управлять точками данных, в которых отображаются маркеры, используйте MarkerIndices свойство линий. Например, этот код отображает маркер каждые 10 точек данных.

x = linspace(0,10,500);
y = sin(x);
plot(x,y,'-o','MarkerIndices',1:10:length(y))

histogram и histogram2 Функции: Создание гистограммы из предварительно вычисленных количеств интервала

Постройте использование гистограмм histogram и histogram2 непосредственно передающим в количестве интервалов. Когда вы используете этот метод, histogram и histogram2 не делайте никакого раскладывания данных.

Контурные графики: Генерация матрицы контура с улучшенной производительностью

Команды, которые требуют вычисления матрицы контура теперь, выполняют быстрее, такие как:

  • Возврат матрицы контура как выходной аргумент от contour или contourf функции

  • Запрос значения ContourMatrix свойство объекта контура

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

legend функция

Все еще работает

Не применяется

Поведение legend изменился.

legend функционируйте теперь снова использует существующую легенду. Таким образом, вспоминание legend функция не сбрасывает свойства, такие как местоположение или ориентация. Ранее legend функция удалила любые существующие легенды и воссоздала новую.

legend('show')

Все еще работает

Не применяется

Если оси существуют и не содержат графических объектов, то legend('show') создает пустую легенду. Ранее это возвращало предупреждение.

rose функция

Все еще работает

polarhistogram функцияЗамените все экземпляры rose функция с polarhistogram функция.

xlimylimzlim, и axis функции — Задающие пределы как двойные значения для оси с datetime или значения длительности

Ошибки

Не применяетсяПри определении пределов для оси с datetime или значениями длительности, xlimylimzlim, и axis функции больше не принимают двойные значения. Задайте datetime или значения длительности вместо этого.
axis функция — Установление пределов с различными типами данных

Ошибки

xlimylim, и zlim функцииУстановление пределов различных типов данных с помощью axis функционируйте результаты по ошибке. Используйте xlimylim, и zlim функции вместо этого.

XTick, YTick, ZTickxlim ylim, и ZLim свойства объекта осей — Определение значений деления или пределов как двойные значения для оси с datetime или значения длительности

Ошибки

Не применяетсяПри определении значений деления или пределов для оси с datetime или значениями длительности, XTick, YTick, ZTickxlim ylim, и ZLim свойства объекта осей больше не принимают двойные значения. Задайте datetime или значения длительности вместо этого.
XData, YData, и ZData свойства графических объектов

Все еще работает

Не применяется

При графическом выводе datetime или данных о длительности, XData, YData, и ZData свойства графического объекта теперь содержат datetime или значения длительности вместо двойных значений. Чтобы изменить значения данных, задайте datetime или значения длительности вместо двойных значений.

Построив несколько графиков, которые смешивают различные типы данных (числовой, datetime или данные о длительности) вдоль одной оси

Ошибки

Один тип данных на осьПостроив графики, используйте только один тип данных на ось.

LData свойство errorbar

Все еще работает

YNegativeDelta свойство errorbar

Замените экземпляры LData с YNegativeDelta.

LDataSource свойство errorbar

Все еще работает

YNegativeDeltaSource свойство errorbar

Замените экземпляры LDataSource с YNegativeDeltaSource.

UData свойство errorbar

Все еще работает

YPositiveDelta свойство errorbar

Замените экземпляры UData с YPositiveDelta.

UDataSource свойство errorbar

Все еще работает

YPositiveDeltaSource свойство errorbar

Замените экземпляры UDataSource с YPositiveDeltaSource.

Значение по умолчанию Type свойство для объектов полярных осей

Все еще работает

Новое значение по умолчанию 'polaraxes'Type свойство для объектов полярных осей теперь имеет значение по умолчанию 'polaraxes'. В предыдущих релизах значением был 'axes'. Обновите код, чтобы использовать новое значение.

Значение по умолчанию AlignVertexCenters свойство для объектов errorbar

Все еще работает

Не применяетсяAlignVertexCenters свойство для объектов errorbar теперь имеет значение по умолчанию 'on'. В предыдущих релизах значением был 'off'. Обновите код, чтобы использовать новое значение.

Импорт и экспорт данных

readtable Функция: Autom​atically обнаруживают и данные даты возвращения и времени в файлах текста и электронной таблицы

readtable функция обнаруживает и возвращает данные о дате и времени как datetime ввод.

Вопросы совместимости

Ранее readtable функционируйте возвратил данные о дате и времени как векторы символов. Чтобы сохранить то поведение используют T = readtable(filename,'DatetimeType','text').

dete​ctImportOptions Функция: Обнаружение размещения текста и файлов Excel и настройка настроек импорта к readtable ​

Можно управлять и настроить, как данные импортированы из текста и файлов электронной таблицы с помощью detectImportOptions функция.

detectImportOptions функция возвращает SpreadsheetImportOptions объект для файлов электронной таблицы и DelimitedTextImportOptions объект для текстовых файлов. Используйте эти объекты с readtable настроить настройки импорта, такие как:

  • Импортируйте плохо или недостающие данные.

  • Импортируйте только подмножество данных с помощью SelectedVariableNames свойство.

  • Настройте десятичный разделитель и тысячи диафрагмы для числовых данных с помощью DecimalSeparator и ThousandsSeparator свойства.

  • Импортируйте данные как logical переменные из текстового файла.

Для получения дополнительной информации о свойствах объектов, созданных detectImportOptions функционируйте, смотрите SpreadsheetImportOptions и DelimitedTextImportOptions.

VideoReader Объект: Чтение кадров видео более быстро из MP4 и файлов MOV в системах Windows

VideoReader возразите теперь поддерживает полный уровень, читающий для Видео HD.

imageDa​tastore Функция: Считайте пакеты изображений для более быстрой обработки в приложениях компьютерного зрения и машинном обучении

Теперь считайте мини-пакеты из ImageDatastore объект с помощью ReadSize свойство. Смотрите imageDatastore функция.

TallDatastore Объект: Эффективно получите предварительно обработанный, и очистил данные сохраненное использование write функция tall MATLAB массивы

Чтобы ускорить работу с большими файлами данных используют TallDatastore объект воссоздать MATLAB tall массивы из файлов, записанных в диск write функция. Можно использовать TallDatastore возразите, чтобы эффективно загрузить и работать с данными, которые были ранее предварительно обработаны и очищены.

jsondecodejsonencode Функции: Кодирование и декодирование структурированных данных в JSON-форматированном-тексте

Используйте jsondecode функционируйте, чтобы проанализировать текст JSON и преобразовать его в типы данных MATLAB.

Используйте jsonencode функция, чтобы закодировать данные MATLAB в JSON-форматированный-текст.

writetable Функция: Поддержка записи недостающих полей таблицы к файлу электронной таблицы

Теперь можно записать пустые ячейки вместо <недостающих> значений с помощью writetable функция.

readtabletextscanTabularTextDatastore, и spreadsheetTextDatastore Функции: поддержите string тип данных с помощью 'TextType' параметр

Функции readtable, textscan, tabularTextDatastore, и spreadsheetDatastore поддержите импорт текста как string тип данных. Например, чтобы считать любую текстовую переменную в файле myfile.txt как string массив, используйте T = readtable('myfile.txt','TextType','string'). Для получения дополнительной информации о string массивы, см. Символы и строки.

weboptions Функция: Создание пользовательских HTTP-заголовков и определение сертификатов HTTPS

Чтобы создать пользовательские поля HTTP-заголовка, используйте 'HeaderFields' аргумент в weboptions функция.

Чтобы задать сертификаты HTTPS, используйте 'CertificateFilename' аргумент в weboptions функция.

Научные Библиотеки Формата файла: Библиотека CDF обновила до версии 3.6.1

Библиотека CDF была обновлена до версии 3.6.1.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

movie2avi

ОшибкиVideoWriterУдалите все экземпляры movie2avi. Запишите в файлы AVI с VideoWriter.

fopen — Определение filename аргумент как символьный вектор-столбец

ОшибкиЗадайте filename как символьный вектор-строка или строковый скаляр. При определении filename аргумент, fopen функция больше не принимает символьный вектор-столбец. Задайте filename как символьный вектор-строка или строковый скаляр.

Анализ данных

tall Массивы: Управляйте и анализируйте данные, который является слишком большим, чтобы уместиться в памяти

Длинные массивы обеспечивают способ работать естественно с данными, которые не помещаются в память. Много операций MATLAB и функций работают одинаково с длинными массивами, как они делают с массивами в оперативной памяти. Однако длинные массивы не хранятся непосредственно в памяти и оценены использованием запроса gather. MATLAB автоматически оптимизирует вычисления в очереди путем минимизации количества проходов через данные. Для получения дополнительной информации см. Раздел "Высокие массивы".

Можно создать высокие числовые массивы, массивы ячеек, categoricals, строки, datetimes, длительность или календарную длительность, и можно использовать любой из этих высоких типов как переменные в длинной таблице. Для получения дополнительной информации смотрите Функции Та Поддержка Длинные массивы (A–Z).

Пропавшие без вести Функций Данных: Найдите, заполните и удалите недостающие данные из массивов или таблиц с ismissingstandardizeMissingfillmissing, и rmmissing

Можно убрать недостающие данные из массива или таблицы с помощью следующих функций:

  • ismissing — Найдите элементы с отсутствующими значениями.

  • standardizeMissing — Вставляет индикаторы отсутствующего значения.

  • fillmissing — Отсутствующие значения замен с заданным методом, такие как линейная интерполяция или постоянное значение.

  • rmmissing — Удаляет недостающие записи.

Кумулятивные функции: Игнорирование NaNs с помощью 'omitnan' в cumsumcummin, и cummax

Теперь можно исключить NaNs при вычислении совокупной статистики с cumsum, cummin, и cummax функции.

discretize Функция: дискретизируйте datetime и duration массивы, чтобы разделить данные, к которым добавляют метку времени, на интервалы постоянного времени

discretize функция принимает datetime и duration массивы как входные параметры.

Ограниченное Панорамирование и Изменение масштаба: Панорамирование или увеличение единственной размерности для 2D и 3-D графиков

Можно панорамировать или увеличить масштаб одна размерность с помощью новых ограниченных опций.

  • К панорамированию в одной размерности сначала позвольте панорамировать режим; например, выберите значок панорамирования на панели инструментов фигуры. Затем перетащите отметки деления или метки в виде галочки x - ось, y - ось, или z - ось к панорамированию в том направлении. Визуальное указывает, что вы выполняете ограниченную операцию панорамирования. В качестве альтернативы щелкните правой кнопкой по осям и установите ограничение панорамирования с помощью контекстного меню. Смотрите pan для получения информации о программируемой альтернативе.

  • Чтобы увеличить масштаб одна размерность, сначала позвольте масштабировать режим; например, выберите один из значков изменения масштаба на панели инструментов фигуры. Для 2D графиков перетащите мышь приблизительно в горизонтальном или вертикальном направлении. Визуальное указывает, что вы выполняете ограниченную операцию изменения масштаба. В качестве альтернативы щелкните правой кнопкой по осям и установите ограничение изменения масштаба с помощью контекстного меню. Для 3-D графиков используйте контекстное меню. Смотрите zoom для получения информации о программируемой альтернативе.

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости
getAxesZoomMotion и setAxesZoomMotion возразите функциям для объектов изменения масштаба

Все еще работает

getAxesZoomConstraint и setAxesZoomConstraint возразите функциям для объектов изменения масштабаЗамены все экземпляры getAxesZoomMotion с getAxesZoomConstraint. Замените все экземпляры setAxesZoomMotion с setAxesZoomConstraint.
getAxesPanMotion и setAxesPanMotion возразите функциям для объектов панорамирования

Все еще работает

getAxesPanConstraint и setAxesPanConstraint возразите функциям для объектов панорамированияЗамены все экземпляры getAxesPanMotion с getAxesPanConstraint. Замените все экземпляры setAxesPanMotion с setAxesPanConstraint.

Создание приложений

Дизайнер приложений: Включайте общие 2D графики в приложениях, таких как areaпанельконтурГистограммаyyaxis, и графики функций

Теперь можно отобразить большинство 2D графиков в приложении. Для получения дополнительной информации смотрите Графическую Поддержку в App Designer.

Дизайнер приложений: Создание легенд для 2D графиков в приложениях

Добавьте легенды и цветные полосы к вашим графикам в App Designer. Для получения дополнительной информации смотрите Графическую Поддержку в App Designer.

Дизайнер приложений: Встройте табличные отображения с помощью uitable в приложениях

Используйте App Designer, чтобы отобразить табличные данные в вашем приложении. Перетащите компонент Table на холст и отредактируйте Data свойство в представлении кода, чтобы отобразить ваши данные.

Если ваш Table компонент отображает большое количество строк и столбцов, вы можете заметить краткую задержку и индикатор хода выполнения, когда вы просматриваете таблицу путем прокрутки в своем запущенном приложении. Задержка происходит, когда MATLAB обновляет ваши данные.

Дизайнер приложений: Создайте функции обратного вызова, которые могут быть совместно использованы через несколько компонентов

Запишите функцию обратного вызова и совместно используйте ее среди нескольких компонентов в вашем приложении. Щелкните правой кнопкой по компоненту в холсте или Component Browser и выберите Callbacks из контекстного меню. Диалоговое окно Add Callback Function позволяет вам задавать новое имя коллбэка или выбор из списка существующих коллбэков.

Дизайнер приложений: Добавление, расположение, и изменение размеров маркированных компонентов и создание компонентов с именами, выведенными от меток

  • Поведение изменения размеров помеченных компонентов улучшено.

  • Имена помеченных компонентов теперь основаны на тексте метки, облегчая идентифицировать компоненты в Component Browser и представлении кода.

  • Разгруппированные метки доступны в Component Browser App Designer по умолчанию.

Дизайнер приложений: Редактирование счетчиков и числовых значений поля редактирования непосредственно в холсте и дублирование компонентов в различные родительские элементы

  • Теперь можно отредактировать значение по умолчанию для числового поля редактирования или счетчика непосредственно на холсте.

  • Скопируйте любой компонент в различный родительский контейнер путем нажатия Ctrl, выбора компонента и перетаскивания дублированного компонента в целевой контейнер.

Дизайнер приложений: Изучение рабочего процесса App Designer путем показа советов в представлении кода

Нажмите кнопку Show Tips в представлении кода App Designer, чтобы видеть краткий обзор рабочего процесса кодирования. Советы указывают на определенные области App Designer и проводят вас по основным шагам создавания приложения.

Компоненты App Designer: Position свойство использует источник на основе 1

Position свойство компонентов App Designer использует источник на основе 1 в пиксельных модулях. В R2016a компоненты App Designer использовали источник на основе 0.

Вопросы совместимости

Когда вы используете R2016b, чтобы запустить приложение App Designer, созданное в R2016a, компоненты пользовательского интерфейса смещены вниз и налево на один пиксель. Можно использовать App Designer, чтобы откорректировать проблему путем открытия и сохранения приложения в R2016b прежде, чем запустить его.

Точно так же, когда вы используете R2016a, чтобы запустить приложение App Designer, созданное в R2016b, компоненты пользовательского интерфейса смещены и направо на один пиксель.

Компонент Поля редактирования: используйте ValueChangingFcn свойство выполнить коллбэк, когда пользователи редактируют значение в пользовательском интерфейсе

ValueChangingFcn новое свойство для EditField компонент. Когда вы задаете коллбэк для ValueChangingFcn свойство, коллбэк выполняется, когда пользователь редактирует значение во время выполнения.

Расположение Контейнеров Программно: Доступ к внешним границам и области векторной и растровой графики контейнеров, таким как панели и группы кнопок

Эти контейнеры включают OuterPosition свойство для доступа к местоположению и размеру их внешних границ. Они также включают InnerPosition свойство для доступа к местоположению и размеру их области векторной и растровой графики.

uisetcolor Функция: Использование перепроектированной палитры цветов, чтобы получить доступ к недавним цветам и задать значения RGB

Палитра цветов, что uisetcolor функциональные отображения были перепроектированы, чтобы включать следующие опции:

  • Палитра стандартных цветов наверху

  • Палитра недавно выбранных цветов в центре

  • Поля ввода RGB, которые обновляют просмотр цветов, когда вы редактируете значения

Упаковка приложения: Автоматически включайте зависимые файлы когда упаковочные приложения

Вы больше не должны включать использующие стандартные функции формата файла файлов, к которым получают доступ, или низкоуровневые функции ввода-вывода. Диалоговое окно Package App автоматически включает:

  • Файлы, к которым получают доступ с помощью стандартных функций формата файла. Эти зависимые файлы включают текст, электронные таблицы, изображения, аудио и видеофайлы. Форматы научных данных являются единственными стандартными форматами файлов, которые не поддерживаются.

  • Файлы, к которым получают доступ с помощью низкоуровневых функций ввода-вывода.

Для списка поддерживаемых функций смотрите Стандартные Форматы файлов. Для списка поддерживаемых функций ввода-вывода смотрите Низкоуровневый Файловый ввод-вывод.

Производительность

Графический дисплей: Рендеринг графиков с большими количествами маркеров быстрее с помощью меньшей памяти

Графика, которая содержит большие количества маркеров, имеет улучшенную производительность и использует меньше памяти.

Механизм выполнения: Выполнение жестких циклов со скалярной математикой быстрее ​​

Производительность улучшается для кода MATLAB, который является во власти жестких циклов, прямой индексации и простой математики.

Механизм выполнения: Построение объектов быстрее ​​​

Производительность улучшается для создания простых объектов в MATLAB. Улучшения применяются к MATLAB и объектам MathWorks Toolbox (например, datetimeinputParser) и созданные пользователями объекты. Для получения дополнительной информации см. Конструкторов Object: Построение объектов быстрее с определенными ограничениями.

Аппаратная поддержка

​iPhone и Датчики Android: Данные логов от мобильных датчиков на MathWorks Cloud over сеть Wi-Fi или сотовая сеть ​

Пакет поддержки MATLAB для Датчиков Android и Пакет поддержки MATLAB для Датчиков iOS Apple теперь работают над MathWorks Cloud.

Для получения информации о том, как соединить ваше устройство на базе Android с Облаком, смотрите “Использование MATLAB на MathWorks Cloud” подраздел в “Настроенном и Подключение к устройству на базе Android” в Пакете поддержки MATLAB для документации Датчиков Android.

Для получения информации о том, как соединить ваше устройство на iOS Apple с Облаком, смотрите “Использование MATLAB на MathWorks Cloud” подраздел в “Настроенном и Подключение к устройству на iOS Apple” в Пакете поддержки MATLAB для документации Датчиков iOS Apple.

Arduino: Запись в сдвиговые регистры

Запишите в сдвиговые регистры с помощью Пакета поддержки MATLAB для Оборудования Arduino.

Raspberry Pi: Сгенерируйте сигналы PWM и управляйте сервоприводами от контактов GPIO на Raspberry Pi

Можно использовать команды MATLAB, чтобы создать сигналы модулируемого шириной импульса (PWM) и сервоприводы управления от контактов GPIO на оборудовании Raspberry Pi. Для получения дополнительной информации смотрите Пакет поддержки MATLAB для Оборудования Raspberry Pi.

Raspberry Pi: поддержка модели B Raspberry Pi 3

Можно использовать Пакет поддержки MATLAB для Оборудования Raspberry Pi с аппаратной платой Модели B Raspberry Pi 3.

Raspberry Pi: Считайте ​ из датчиков и запишите в матрицу LED на Смысле Raspberry Pi HAT ​

Можно использовать Пакет поддержки MATLAB для Оборудования Raspberry Pi со Смыслом Raspberry Pi плата HAT, чтобы читать из датчиков и джойстика, и записать в матрицу LED.

Компоненты, с которыми можно связаться от пакета поддержки:

  • Датчик влажности - Чтение относительная влажность и температура окружающей среды.

  • Датчик давления - Чтение барометрическое давление воздуха и температура окружающей среды.

  • Датчик IMU

    • Акселерометр - Чтение линейное ускорение вдоль x, y, и оси z.

    • Гироскоп - Чтение скорость вращения вдоль x, y, и оси z

    • Магнитометр - Чтение магнитное поле вдоль x, y, и оси z.

  • Джойстик - Чтение состояние джойстика.

  • Матрица LED - Запись к пикселю, отобразите изображение или отобразите сообщение на 8x8 RGB матрица LED.

Raspberry Pi: Запустите Linux и команды управления файлами быстрее

Запустите Linux и команды управления файлами быстрее с повышениями производительности к system, getFile, putFile, и deleteFile функции в Пакете поддержки MATLAB для Оборудования Raspberry Pi.

Продвинутые возможности разработки программ

matlab.net.http Объект: Доступ к сервисам HTTP с низкоуровневым управлением протоколом

Для получения дополнительной информации смотрите Интерфейс HTTP.

API MATLAB Engine для Java: Выполнение кода MATLAB из программ Java

Вызовите функции MATLAB и оцените выражения MATLAB из программ Java синхронно или асинхронно. Программы Java могут передать данные и получить данные из базового рабочего пространства MATLAB. Для получения дополнительной информации смотрите API MATLAB Engine для Java.

matlab.mixin.SetGet: Разрешение неточным именам свойства по умолчанию в вызовах устанавливать и добираться

Классы выведены из matlab.mixin.SetGet поддержите неточное имя свойства, соответствующее по умолчанию в вызовах set и get. Чтобы потребовать точного соответствия имени свойства, выведите свой класс из matlab.mixin.SetGetExactNames класс.

matlab.mixin.SetGetExactNames: Потребуйте, чтобы точные имена свойства в вызовах установили и добрались

Классы выведены из matlab.mixin.SetGetExactNames потребуйте чувствительных к регистру, точных соответствий имени свойства в вызовах set и get методы.

Среда Модульного тестирования: Генерация Microsoft Word или отчетов Adobe PDF тестового прогона

Создайте легко читаемые, пригодные для навигации, и archivable отчеты своих результатов испытаний с помощью TestReportPlugin. Можно сгенерировать отчеты в .docx и .pdf ' format ' . Для получения дополнительной информации смотрите matlab.unittest.plugins.TestReportPlugin класс.

Среда Модульного тестирования: Улучшение непрерывных рабочих процессов интегрирования с помощью протокола Версии 13 TAP и диагностики YAML с TAPPlugin

Используйте TAPPlugin произвести поток Test Anything Protocol (TAP) вашего теста выход. Можно интегрировать этот поток в непрерывные системы интегрирования как Jenkins™ или TeamCity®. Новый producingVersion13 метод форматирует поток с помощью версии 13 формата TAP. С этим форматом можно включать диагностический тест в блоки YAML. Для получения дополнительной информации смотрите producingVersion13 метод TapPlugin класс.

Модуль и Среды для тестирования производительности: Улучшение повторного использования кода и удобочитаемости при помощи локальных функций в тестах на основе скриптов

С R2016b скрипты MATLAB могут содержать локальные функции. Можно использовать локальные функции в модульных тестах на основе скриптов, чтобы продвинуть повторное использование кода и удобочитаемость путем определения функций помощника для тестов. Для примера локальных, функций помощника в тесте на основе скриптов, смотрите Запись Тест На основе скриптов Используя Локальные функции.

Модуль и Среды для тестирования производительности: Тесты, которые квалифицируют это пустой символьный вектор, являются подстрокой, теперь передают

Если вы используете verifyThatassertThatassumeThat, или fatalAssertThat проверки с IsSubstringOf ограничение, чтобы протестировать это, пустой символьный вектор является подстрокой любого непустого вектора символов, проверка теперь, передает. В предыдущих версиях MATLAB перестала работать эта проверка. Например, следующий тест теперь передает в MATLAB R2016b.

import matlab.unittest.constraints.IsSubstringOf

tc = matlab.unittest.TestCase.forInteractiveUse;
tc.verifyThat('',IsSubstringOf('any character vector'))
Вопросы совместимости

До релиза R2016b MATLAB, тесты, такие как testCase.verifyThat('',IsSubstringOf('any character vector')) не пройдено. Обновите любые тесты, которые используют предыдущее поведение.

Конструкторы Object: Построение объектов быстрее с определенными ограничениями

Значительные издержки были удалены из объектной конструкции. Эта оптимизация приводит к некоторым изменениям в поведении конструкторов Object, которые описаны в следующих пяти элементах.

Вопросы совместимости

Деструктор класса называется в дополнительных условиях

В предыдущих релизах, когда ошибка произошла в конструкторе, MATLAB вызвал деструктор класса, только если свойство объекта было присвоено значение в конструкторе. С релизом R2016b MATLAB также вызывает деструктор класса, когда ошибка происходит при этих условиях:

  • Ссылка на объект присутствует в коде до ошибки.

  • Ранний return оператор присутствует в коде перед ошибкой.

Эти изменения означают, что MATLAB вызывает деструкторы класса в большем количестве случаев, чем в предыдущих релизах. Деструктор должен смочь работать с частично созданными объектами. Для получения дополнительной информации смотрите Разрушение Поддержки Частично Созданных Объектов.

Возврат прежде, чем вызвать суперкласс, не позволенный

В предыдущих релизах конструкторы могли возвратиться условно прежде, чем вызвать конструктора суперкласса. С релизом R2016b конструкторы не могут использовать, рано возвращается к вызовам conditionalize конструктора суперкласса.

Пересмотрите любых конструкторов, которых использование возвращает в вызовы conditionalize конструкторов суперкласса. Для получения дополнительной информации см. Конструкторов подкласса.

Изменение пути в конструкторе сразу применяется

В предыдущих релизах изменения пути, которые удаляют класс выполняющегося конструктора от пути, не влияли на видимость класса. С релизом R2016b изменения в пути, сделанном конструктором, сразу применяются. Это новое поведение совпадает с поведением изменений пути, внесенных в обычных методах.

Если конструктор удаляет папку класса из пути, MATLAB не может получить доступ к определению класса. Конструктор может использовать mlock функционируйте, чтобы сохранить определение класса в памяти, если изменение пути в конструкторе необходимо.

Изменения в ошибочных идентификаторах

Ошибочные идентификаторы изменились для определенных связанных с конструктором ошибок. Эти изменения включают идентификаторы для ошибок, выданных для этих условий:

  • Слишком много входных параметров

  • Слишком много выходных параметров

  • Слишком мало входных параметров

  • Слишком мало выходных параметров

  • Недопустимый вызов конструктора суперкласса

Обновите любые обработчики ошибок, которые используют определенные ошибочные идентификаторы.

Событие InstanceCreated, не инициированное, когда конструктор не возвращает объект

Если конструктор Object не возвращает созданный объект, MATLAB не инициировал InstanceCreated событие. Для получения дополнительной информации смотрите Выходной Объект, Не Присвоенный.

Вы не можете прислушаться к InstanceCreated событие, если конструктор Object не возвращает созданный объект в вызывающую сторону.

Java: Передача массивов с 0 длинами

Передающие пустые массивы поддержек MATLAB Java (с 0 длинами) к методам Java, которые берут массив типа кроме Object.

Вопросы совместимости

Перед релизом R2016b MATLAB MATLAB преобразует массивы нулевой длины Java в пустой указатель, когда метод берет массив типа кроме Object.

Версия 3.5 Python: Поддержка MATLAB

MATLAB поддерживает следующие версии CPython:

  • Версия 2.7

  • Версия 3.3

  • Версия 3.4

  • Версия 3.5

Для получения дополнительной информации смотрите Установку Поддерживаемая Реализация Python.

Версия 3.3 Python: Поддержка, чтобы быть постепенно сокращенными

Поддержка версии 3.3 Python будет прекращена в будущем релизе.

Вопросы совместимости

Чтобы гарантировать постоянную поддержку ваших приложений, рассмотрите обновление до другой поддерживаемой версии Python — версия 3.4 или 3.5.

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

Используйте инструмент MATLAB Comparison, чтобы рассмотреть изменения в файлах, таких как live скрипты и MAT-файлы от вашего внешнего клиента системы контроля версий. Для получения дополнительной информации см. Настройку внешней системы контроля версий, чтобы Использовать MATLAB для Diff и Слияния.

Интеграция с системой контроля версий: Включение подмодулей Git

К коду повторного использования от другого репозитория можно задать подмодули Git. Для получения дополнительной информации смотрите, Добавляют Подмодули Git.

Интеграция с системой контроля версий: Решение проблем с рабочими блокировками копии с помощью опции Очистки SVN.

Удалите устаревшие рабочие блокировки копии с помощью опции SVN Cleanup. Для получения дополнительной информации смотрите, Получают Блокировки Файла SVN.

Поддержка компилятора изменяется для создания файлов MEX и автономного движка MATLAB и приложений MAT-файла

ПоддержкаКомпиляторПлатформа

Добавленный

GNU gcc и gfortran версия 4.9

Поддержка GNU gcc и gfortran версии 4.7 прекращена.

Linux

Добавленный

Studio XE 2016 параллели Intel для Фортрана

Studio XE 2015 параллели Intel для Фортрана

Mac OS X

Прекращенный

Профессионал Microsoft Visual Studio 2010

Windows

Быть постепенно сокращенным

Visual C++ 2 012 профессионалов


Apple Xcode 6.2

Windows


Mac OS X

Чтобы гарантировать постоянную поддержку создания ваших файлов MEX, рассмотрите обновление до другого поддерживаемого компилятора. Актуальный перечень поддерживаемых компиляторов см. на сайте «Поддерживаемые и совместимые компиляторы».

Функциональность, удаляемая или измененная

ФункциональностьРезультатИспользуйте это вместо этогоВопросы совместимости

matlab.mixin.SetGet совпадает с неточными именами свойства с помощью set и get методы.

Все еще работает

Чтобы осуществить точное соответствие имени свойства, выведите из matlab.mixin.SetGetExactNames.

Подклассы matlab.mixin.SetGet позвольте неточное соответствие имени свойства по умолчанию.

Генерация тестовых наборов от класса, который выводит из конкретного базового класса, который задает методы, которые ссылаются на TestParameter, MethodSetupParameter, или ClassSetupParameter не заданный в базовом классе

Все еще работает

Задайте любого:

  • Базовый класс как Краткий обзор с помощью атрибута Краткого обзора уровня класса. Например, classdef (Abstract) MyTest < matlab.unittest.Testcase.

  • Абстрактные свойства параметра для всех параметров используются методами класса. Например, properties (Abstract,TestParameter).

В будущих релизах, если ваш тестовый класс наследовался конкретному базовому классу, который использует параметр, который не задан в базовом классе, MATLAB выдаст ошибку.

Вызов import из скрипта

Ошибки

Реплицируйте import операторы в каждой функции или скрипте, где вы хотите влиять на список импорта.

import функционируйте только влияет на список импорта функции или скрипт, в рамках которого это используется. Поведение вызова import в командной строке неизменно — она использует список импорта для командной среды.

Вызов скриптов от методов класса

Ошибки

Локальные функции, заданные в файле класса, имеют доступ к членам класса и могут обеспечить альтернативный подход.

Методы класса, которые вызывают скрипты, что доступ члены частного или защищенного класса из скрипта вызывает ошибки несанкционированного доступа.

'IgnoringCase' опция их matlab.unittest.constraints классы: CellComparator, PublicPropertyComparator, и StructComparatorОшибки'IgnoringCase' опция IsEqualTo ограничениеЗамените все экземпляры 'IgnoringCase' в CellComparator, PublicPropertyComparator, или StructComparator ограничение с 'IgnoringCase'в IsEqualTo ограничение.
'IgnoringWhitespace' опция их matlab.unittest.constraints классы: CellComparator, PublicPropertyComparator, и StructComparatorОшибки'IgnoringWhitespace' опция IsEqualTo ограничениеЗамените все экземпляры 'IgnoringWhitespace' в CellComparator, PublicPropertyComparator, или StructComparator ограничение с 'IgnoringWhitespace' в IsEqualTo ограничение.
'Within' опция их matlab.unittest.constraints классы: CellComparator, PublicPropertyComparator, и StructComparatorОшибки'Within' опция IsEqualTo ограничениеЗамените все экземпляры 'Within' в CellComparator, PublicPropertyComparator, или StructComparator ограничение с 'Within' в IsEqualTo ограничение.