Графики Пламени профилировщика: Исследуйте и улучшайте производительность своего кода визуально
Перепроектированный Профилировщик теперь включает график пламени, который позволяет вам визуально исследовать результаты эффективности выполнения своего кода. Можно использовать график пламени, чтобы идентифицировать функции, которые используют существенное количество времени.
Например, этот график пламени показывает результаты эффективности для вызванной функции 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 Команды: Переключитесь между рабочими областями с одним шагом
bin2dec и hex2dec Функции: Преобразуйте текст, который включает бинарные или шестнадцатеричные префиксы и суффиксы
bin2dec и hex2dec функции преобразуют вводы текста, которые включают те же префиксы и суффиксы, используемые для записи бинарных и шестнадцатеричных литералов.
Например, эти вызовы bin2dec возвратите то же значение:
bin2dec('111') bin2dec('0b111') bin2dec('0b111s32')
Точно так же эти вызовы hex2dec возвратите то же значение:
hex2dec('FF') hex2dec('0xFF') hex2dec('0xFFs32')
Для получения дополнительной информации о синтаксисе для использования этих префиксов и суффиксов, смотрите Шестнадцатеричные и Двоичные значения.
dec2bin и dec2hex Функции: Преобразуйте отрицательные числа
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™ |
|
|
| Fixed-Point Designer™ |
|
|
| Simulink® Real-Time™ |
|
|
| Simscape™ Electrical™ |
|
|
Авторская разработка системного объекта: 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.
| Синтаксис системного объекта удален | Миграция |
|---|---|
| Удалите любые заявления о праве наследования к этим классам с начала вашего класса Системного объекта. |
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 предлагает четыре задачи для управления данными в таблицах и расписаниях:
Повторно синхронизируйтесь Расписание — Передискретизируют или совокупные данные о расписании.
Сложите Табличные переменные — значения Объединения от нескольких табличных переменных в одну табличную переменную.
Синхронизация Timetables Повторно синхронизируйте и объедините расписания к новому временному вектору.
Распакуйте Табличные переменные — Распределяют значения от одной табличной переменной до нескольких табличных переменных.
Чтобы открыть задачи в Live Editor, используйте меню Task на вкладке Live Editor. Для получения дополнительной информации смотрите, Добавляют Интерактивные Задачи к Live Script.
Basic Fitting Tool: Подходящие линии к отображенным на графике данным с помощью модернизированного интерфейса
Подходящие линии к отображенным на графике данным с помощью модернизированного интерфейса инструмента Basic Fitting. Откройте инструмент путем выбора Tools > Basic Fitting из панели инструментов фигуры.
Например, постройте выборочные данные.
load census scatter(cdate,pop,'r')

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' аргумент пары "имя-значение".
Значение | Правило |
|---|---|
| Измените имена переменных, чтобы быть допустимыми идентификаторами MATLAB |
| Сохраните настоящие имена, которые могут иметь любые символы Unicode, включая символы non-ASCII и пробелы. Примечание: В некоторых случаях функция должна изменить настоящие имена даже когда
|
Ранее эти функции изменяли имена переменных таблицы и расписания, когда необходимый так, чтобы такие имена всегда были допустимыми идентификаторами MATLAB.
containsrange, overlapsrange, и withinrange Функции: Определите, пересекают ли времена строки расписания область значений требуемого времени
Чтобы определить, пересекают ли времена строки расписания область значений требуемого времени, используйте одну из этих функций.
Функция | Цель |
|---|---|
Определите, содержат ли времена строки расписания область значений требуемого времени | |
Определите, перекрывают ли времена строки расписания область значений требуемого времени | |
Определите, ли времена строки расписания в области значений требуемого времени |
tall Массивы: Работайте с длинными массивами с большим количеством функций, включая groupfilter и matches
Функции, перечисленные здесь теперь, поддерживают длинные массивы как входные параметры. Для полного списка поддерживаемых функций введите methods tall. Для получения дополнительной информации об использовании и ограничениях, смотрите раздел Extended Capabilities в нижней части каждой страницы с описанием.
Кроме того, некоторые функции обновили или удалили ограничения с длинными массивами.
Функция | Изменения |
|---|---|
Ранее только один вход мог быть длинным массивом. | |
vartype | Много высоких функций анализа данных могут теперь использовать
Ранее эти функции не могли использовать |
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 по умолчанию | Поведение по умолчанию в предыдущих релизах |
|---|---|---|
Первая строка не имеет текста, чтобы присвоить как имена выходных табличных переменных | Присваивает имена | Преобразует значения в первой строке значений данных к именам выходных табличных переменных |
Несколько строк текста как линии заголовка |
|
|
Пустые поля | Обработайте как отсутствующие значения для обнаруженного типа данных | Обработайте как пустые символьные вектора или строки |
Значения в кавычках | Обработка как обнаруженный тип данных | Обработайте как текст |
Текст, который не может быть преобразован | Обработайте как отсутствующие значения для обнаруженного типа данных | Обработайте как текст |
Нечисловой символ запаздывает цифровой символ без разделителя между ними | Обработайте символы как нечисловые | Обработайте цифровые и нечисловые символы, как будто разделитель разделил их |
Входной текстовый файл имеет линии с различным количеством разделителей | Возвращает выходную таблицу с дополнительными переменными | Сообщение об ошибке повышений |
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
Библиотека 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 функцию вместо этого.
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 Функция: Задайте числовой формат для меток процента
Задайте числовой формат для меток процента на круговой диаграмме. Например, можно задать количество десятичных разрядов или значительных цифр, чтобы отобразиться.

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 осях, курсор указывает, что можно перетащить, чтобы панорамировать линейку оси путем изменения на
. Когда вы наводите на графики, которые поддерживают всплывающие подсказки, курсор указывает, что можно щелкнуть, чтобы создать всплывающую подсказку путем изменения на
. Можно всегда перетаскивать к панорамированию в 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';

Выполнение Цикла 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 строк кода |
|---|---|---|
| R2019b | 0,63 с | 1,10 с |
| R2020a | 0,42 с | 0,70 с |
Введение текста в редакторе Code View о 2.8x быстрее в приложениях приблизительно с 2 500 строками кода, и о 3.9x быстрее в приложениях приблизительно с 4 500 строками кода.
Аппроксимированные времена выполнения:
| Релиз | ~2500 строк кода | ~4500 строк кода |
|---|---|---|
| R2019b | 3,97 с | 6,67 с |
| R2020a | 1,44 с | 1,72 с |
Создание новой строки кода путем нажатия Enter в редакторе Code View о 5.8x быстрее в приложениях приблизительно с 2 500 строками кода, и о 9.4x быстрее в приложениях приблизительно с 4 500 строками кода.
Аппроксимированные времена выполнения:
| Релиз | ~2500 строк кода | ~4500 строк кода |
|---|---|---|
| R2019b | 1,33 с | 3,38 с |
| R2020a | 0,23 с | 0,36 с |
Добавление и удаление функции в приложениях приблизительно с 2 500 строками кода о 1.7x и 2.9x быстрее, соответственно.
Аппроксимированные времена выполнения:
| Релиз | Добавление | Удаление |
|---|---|---|
| R2019b | 0,12 с | 0,086 с |
| R2020a | 0,07 с | 0,030 с |
Точно так же в приложениях приблизительно с 4 500 строками кода, добавляя и удаляя функцию о 1.8x быстрее и 2.8x быстрее, соответственно.
Аппроксимированные времена выполнения:
| Релиз | Добавление | Удаление |
|---|---|---|
| R2019b | 0,18 с | 0,13 с |
| R2020a | 0,10 с | 0,046 с |
Эти действия были синхронизированы на Windows 10, Intel Xeon® CPU E5-1650 v3 система тестирования на 3.5 ГГц с NVIDIA® Видеокарта Quadro 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));

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.388 | 0.068 |
| Fft | 0.312 | 0.112 |
| ОДУ | 0.480 | 0.015 |
| Разреженный | 0.488 | 0.103 |
| 2D | 0.301 | 0.307 |
| 3-D | 0.296 | 0.303 |
Зависимость Анализатор: Улучшенная навигация, фильтрация и выделение для зависимостей от проекта
В R2020a используйте новую Зависимость Анализатор, чтобы анализировать зависимости от проекта с улучшенной навигацией, фильтрацией и выделением.
На вкладке Project, в разделе Tools, нажимают Dependency Analyzer.

Запустите анализ зависимостей к:
Визуализируйте структуру проекта и зависимости, когда вы установите или исследуете проект впервые. Для получения дополнительной информации смотрите, Исследуют Диаграмму зависимостей, Представления и Фильтры.
Найдите продукты и тулбоксы требуемыми вашим проектом. Для получения дополнительной информации смотрите, Находят Необходимые продукты и Тулбоксы.
Исследуйте и разрешите проблемы перед совместным использованием, упаковкой или представлением вашего проекта к системе контроля версий. Для получения дополнительной информации смотрите, Занимаются расследованиями и проблемы Твердости.
Оцените удар изменений, которые вы внесли на остальной части проекта. Для получения дополнительной информации смотрите, Находят Зависимости от Файла.
Для примера, показывающего, как выполнить анализ удара, чтобы найти и запустить тесты, затронутые модифицированными файлами, смотрите, Выполняют Анализ Удара с Проектом (Simulink).
| Рабочий процесс | R2019b | R2020a |
|---|---|---|
Исследуйте зависимости от проекта и проблемные файлы с помощью списка файлов. | При правом верхнем из представления 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;
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. . Кроме того, MATLAB автоматически задает больше параметров. В общем случае все еще необходимо обеспечить libnameClassName 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, выполните эти шаги.
Загрузите поддерживаемые версии Java® JDK™ и программы Apache™ CXF. Для получения дополнительной информации смотрите Настроенные Инструменты WSDL.
Установите пути к этим программам:
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:
Создайте объект настройки для оборудования Raspberry Pi и установите язык сгенерированного кода на C++ с помощью TargetLang.
t = targetHardware('Raspberry Pi'); t.CoderConfig.TargetLang = 'C++';
Создайте arm-compute объект настройки глубокого обучения и присвоение это к DeepLearningConfig свойство объекта настройки Raspberry Pi.
dlcfg = coder.DeepLearningConfig('arm-compute') dlcfg.ArmArchitecture = 'armv7'; t.CoderConfig.DeepLearningConfig = dlcfg;
Разверните приложение на оборудовании 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.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.