Расширение файла MATLAB. Расширение файла MATLAB

MATLAB - это высокопроизводительный язык для технических расчетов. Он включает в себя вычисления, визуализацию и программирование в удобной сре­де, где задачи и решения выражаются в форме, близкой к математической. Ти­пичное использование MATLAB - это:

    математические вычисления

    создание алгоритмов

    моделирование

    анализ данных, исследования и визуализация

    научная и инженерная графика

    разработка приложений, включая создание графического интерфейса

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

В MATLAB важная роль отводится специализированным группам программ, называемых toolboxes. Они очень важны для большинства пользователей MATLAB, так как позволяют изучать и применять специализированные методы. Toolboxes - это всесторонняя коллекция функций MATLAB (М-файлов), кото­рые позволяют решать частные классы задач. Toolboxes применяются для обра­ботки сигналов, систем контроля, нейронных сетей, моделирования и т.д.

Система MATLAB

Система MATLAB состоит из пяти основных частей:

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

    Среда MATLAB . Это набор инструментов и приспособлений, с которыми работает пользователь или программист MATLAB. Она включает в себя средства для управления переменными в рабочем пространстве MATLAB, вводом и выводом данных, а также создания, контроля и отладки М-файлов и приложении MATLAB.

    Управляемая графика. Это графическая система MATLAB, которая включает в себя команды высокого уровня для визуализации двух- и трехмерных данных, обработки изображений, анимации и иллюстрированной графики. Она также включает в себя команды низкого уровня, позволяющие полностью редактиро­вать внешний вид графики, также как при создании Графического Пользова­тельского Интерфейса (GUI) для MATLAB приложений.

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

    Программный интерфейс. Это библиотека, которая позволяет писать программы на Си и Фортране, которые взаимодействуют с MATLAB. Она включает средства для вызова программ из MATLAB (динамическая связь), вызывая MATLAB как вычислительный инструмент и для чтения-записи МАТ-файлов.

Пакеты расширения Matlab.

Вывод списка пакетов расширения

Полный состав системы MATLAB содержит ряд компонентов, название, номер версии и дату создания которых можно вывести на просмотр командой ver:

    Simulink for Windows

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

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

    Real Time Windows Target и Workshop

Подключающаяся к Simulink мощная подсистема имитационного моделирования в реальном масштабе времени (при наличии дополнительных аппаратных средств в виде плат расширения компьютера), представленная пакетами расширения Real Time Windows Target и Workshop, - мощное средство управления реальными объектами и системами.

    Report Generator для MATLAB и Simulink

Генераторы отчетов дает информацию о работе системы MATLAB и пакета расширения Simulink. Это средство очень полезно при отладке сложных вычислительных алгоритмов или при моделировании сложных систем. Генераторы отчетов запускаются командой Report. Отчеты могут быть представлены в виде программ и редактироваться.

    Neural Networks Toolbox

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

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

    Fuzzy Logic Toolbox

Пакет прикладных программ Fuzzy Logic относится к теории нечетких (размытых) множеств. Обеспечивается поддержка современных методов нечеткой кластеризации и адаптивных нечетких нейронных сетей. Графические средства пакета позволяют интерактивно отслеживать особенности поведения системы.

    Symbolic Math Toolbox

Пакет прикладных программ, дающих системе MATLAB принципиально новые возможности - возможности решения задач в символьном (аналитическом) виде, включая реализацию точной арифметики произвольной разрядности. Пакет базируется на применении ядра символьной математики одной из самых мощных систем компьютерной алгебры - Maple V R4. Обеспечивает выполнение символьного дифференцирования и интегрирования, вычисление сумм и произведений, разложение в ряды Тейлора и Маклорена, операции со степенными многочленами (полиномами), вычисление корней полиномов, решение в аналитическом виде нелинейных уравнений, всевозможные символьные преобразования, подстановки и многое другое.

Пакеты математических вычислений

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

    NAG Foundation Toolbox

Одна из самых мощных библиотек математических функций. Пакет содержит сотни новых функций.

    Spline Toolbox

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

    Statistics Toolbox

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

    Optimization Toolbox

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

    Partial Differential Equations Toolbox

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

Пакеты анализа и синтеза систем управления

    Control System Toolbox

Пакет Control System предназначен для моделирования, анализа и проектирования систем автоматического управления - как непрерывных, так и дискретных.

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

    полный набор средств для анализа MIMO-систем (множество входов -

    множество выходов) систем;

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

    произвольное воздействие;

    частотные характеристики: диаграммы Боде, Николса, Найквиста и др.;

    разработка обратных связей;

    проектирование LQR/LQE-регуляторов;

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

    поддержка систем с запаздыванием.

Пакет Control System содержит средства для выбора параметров обратной связи.

Среди традиционных методов: анализ особых точек, определение коэффициента усиления и затухания.

Среди современных методов: линейно-квадратичное регулирование и др. Пакет Control System включает большое количество алгоритмов для проектирования и анализа систем управления. Кроме того, он обладает настраиваемым окружением и позволяет создавать свои собственные m-файлы.

    Nonlinear Control Design Toolbox

Nonlinear Control Design (NCD) Blockset реализует метод динамической оптимизации для проектирования систем управления. Этот инструмент, разработанный для использования с Simulink, автоматически настраивает системные параметры, основываясь на определенных пользователем ограничениях на временные характеристики.

Пакет использует перенос объектов мышью для изменения временных ограничений прямо на графиках, что позволяет легко настраивать переменные и указывать неопределенные параметры, обеспечивает интерактивную оптимизацию, реализует моделирование методом Монте-Карло, поддерживает проектирование SISO- (один вход - один выход) и MIMO-систем управления, позволяет моделировать подавление помех, слежение и другие типы откликов, поддерживает проблемы повторяющегося параметра и задачи управления системами с запаздыванием, позволяет осуществлять выбор между удовлетворенными и недостижимыми ограничениями.

    Robust Control Toolbox

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

    Model Predictive Control Toolbox

Пакет Model Predictive Control содержит полный набор средств для реализации стратегии предиктивного (упреждающего) управления. Эта стратегия была разработана для решения практических задач управления сложными многоканальными процессами при наличии ограничений на переменные состояния и управление. Методы предикативного управления используются в химической промышленности и для управления другими непрерывными процессами.

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

    (Мю)-Analysis and Synthesis

Пакет p-Analysis and Synthesis содержит функции для проектирования устойчивых систем управления. Пакет использует оптимизацию в равномерной норме и сингулярный параметр и. В этот пакет включен графический интерфейс для упрощения операций с блоками при проектировании оптимальных регуляторов.

    Stateflow

Stateflow - пакет моделирования событийно-управляемых систем, основанный на теории конечных автоматов. Этот пакет предназначен для использования вместе с пакетом моделирования динамических систем Simulink. В любую Simulink-модель можно вставить Stateflow-диаграмму (или SF-диаграмму), которая будет отражать поведение компонентов объекта (или системы) моделирования.

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

    Quantitative Feedback Theory Toolbox

Пакет содержит функции для создания робастных (устойчивых) систем с обратной связью. QFT (количественная теория обратных связей) - инженерный метод, использующий частотное представление моделей для удовлетворения различных требований к качеству при наличии неопределенных характеристик объекта. В основе метода лежит наблюдение, что обратная связь необходима в тех случаях, когда некоторые характеристики объекта неопределенны и/или на его вход подаются неизвестные возмущения.

    LMI Control Toolbox

Пакет LMI (Linear Matrix Inequality) Control обеспечивает интегрированную среду для постановки и решения задач линейного программирования. Предназначенный первоначально для проектирования систем управления пакет позволяет решать любые задачи линейного программирования практически в любой сфере деятельности, где такие задачи возникают. Основные возможности пакета:

исследование задач линейного программирования;

графический редактор задач линейного программирования;

задание ограничений в символьном виде;

многокритериальное проектирование регуляторов;

проверка устойчивости: квадратичная устойчивость линейных систем, устойчивость по Ляпунову, проверка критерия Попова для нелинейных систем.

Пакет LMI Control включает два вида графического интерфейса пользователя: редактор задачи линейного программирования (LMI Editor) и интерфейс Magshape. LMI Editor позволяет задавать ограничения в символьном виде, a Magshape обеспечивает пользователя удобными средствами работы с пакетом.

Пакеты идентификации систем

    System Identification Toolbox

Пакет System Identification содержит средства для создания математических моделей динамических систем на основе наблюдаемых входных и выходных данных.

    Domain System Identification Toolbox

Пакет Frequency Domain System Identification предоставляет специализированные средства для идентификации линейных динамических систем по их временному или частотному отклику. Частотные методы направлены на идентификацию непрерывных систем, что является мощным дополнением к более традиционной дискретной методике. Методы пакета могут быть применены к таким задачам, как моделирование электрических, механических и акустических систем.

Дополнительные пакеты расширения Matlab

    Communications Toolbox

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

    Digital Signal Processing (DSP ) Blockset

Пакет прикладных программ для проектирования устройств, использующих процессоры цифровой обработки сигналов. Это прежде всего высокоэффективные цифровые фильтры с заданной или адаптируемой к параметрам сигналов частотной характеристикой (АЧХ). Результаты моделирования и проектирования цифровых устройств с помощью этого пакета могут использоваться для построения высокоэффективных цифровых фильтров на современных микропроцессорах цифровой обработки сигналов.

    Fixed-Point Blockset

Этот специальный пакет ориентирован на моделирование цифровых систем управления и цифровых фильтров в составе пакета Simulink.

Пакеты для обработки сигналов и изображений

    Signal Processing Toolbox

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

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

    Higher-Order Spectral Analysis Toolbox

Пакет Higher-Order Spectral Analysis содержит специальные алгоритмы для анализа сигналов с использованием моментов высшего порядка. Пакет предоставляет широкие возможности для анализа негауссовых сигналов, так как содержит алгоритмы, пожалуй, самых передовых методов для анализа и обработки сигналов.

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

Поисковая система

Введите расширение файла

Помощь

Подсказка

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

Что сделать, если приложение со списка уже было установлено?

Часто установленное приложение должно автоматически связаться с файлом MATLAB. Если это не произошло, то файл MATLAB успешно можно связать вручную с ново установленным приложением. Достаточно нажать правой кнопкой мышки на файл MATLAB, а затем среди доступных выбрать опцию "Выбрать программу по умолчанию". Затем необходимо выбрать опцию "Просмотреть" и отыскать избранное приложение. Введенные изменения необходимо утвердить с помощью опции "OK".

Программы, открывающие файл MATLAB

Windows

Почему я не могу открыть файл MATLAB?

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

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

Устранение этих проблем должно привести к свободному открытию и работе с файлами MATLAB. В случае, если компьютер по-прежнему имеет проблемы с файлами, необходимо воспользоваться помощью эксперта, который установит точную причину.

Мой компьютер не показывает расширений файлов, что сделать?

В стандартных установках системы Windows пользователь компьютера не видит расширения файлов MATLAB. Это успешно можно изменить в настройках. Достаточно войти в "Панель управления" и выбрать "Вид и персонализация". Затем необходимо войти в "Опции папок", и открыть "Вид". В закладке "Вид" находится опция "Укрыть расширения известных типов файлов" - необходимо выбрать эту опцию и подтвердить операцию нажатием кнопки "OK". В этот момент расширения всех файлов, в том числе MATLAB должны появится сортированные по названию файла.

Справочник свойств графических объектов

Стандартные диалоговые окна.

Функции для создания диалоговых окон

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

Диалоговые окна сообщений:

errordlg - создание диалогового окна с сообщением об ошибке;

helpdlg - создание диалогового окна для вывода информации;

warndlg - создание диалогового окна предупреждения;

msgbox - создание диалогового окна для вывода сообщения.

Диалоговое окно подтверждения (функция questdlg)

Диалоговое окно для ввода информации (функция inputdlg)

Диалоговое окно для выбора из списка (функция listdlg)

Диалоговые окна для заданий опций печати

pagesetupdlg - вывод многостраничного диалогового окна для установки параметров листа и способа печати содержимого графического окна;

printdlg - отображение диалогового окна для выбора опций печати и настройки принтера.

Диалоговые окна открытия и сохранения файла

uigetfile - отображение диалогового окна открытия файла

uiputfile - отображение диалогового окна сохранения файла

Диалоговое окно выбора каталога (функция uigetdir)

Диалоговое окно выбора шрифта (функция uisetfont)

Диалоговое окно выбора цвета (функция uisetcolor)

Окно с полосой прогресса (функция waitbar)

Кроме перечисленных функций имеется функция dialog, предназначенная для создания пустого графического окна. Свойства этого графического окна могут быть установлены при помощи входных аргументов функции dialog.

Рассмотрим использование стандартных диалоговых окон на примере окна открытия файла.

Пример приложения myview с диалоговым окном открытия файла

Создадим приложение myview с графическим интерфейсом пользователя, которое позволяет просматривать графические файлы. Окно работающего приложения приведено на рис. 1. Нажатие на кнопку Open Image приводит к появлению стандартного диалогового окна открытия файла Select File to Open. Выбранный в нем графический файл отображается в окне приложения. Нажатие на кнопку Close Image очищает окно приложения myview.

Рис. 1. Окно приложения myview.

В среде GUIDE на заготовке окна приложения разместите оси и две кнопки так, как показано на рис.2. В инспекторе свойств задайте левой кнопке тег btnOpen и установите ее свойство String в Open Image. Аналогично для правой кнопки: тег - btnClose и String - Close Image.

Оси понадобятся для вывода изображения при помощи функции image. Мы будем использовать низкоуровневое обращение к функции image, которое предполагает обратное направление оси y для того, чтобы рисунок не был перевернут. Поэтому в инспекторе свойств измените направление оси y , установив свойство осей YDir в reverse. Для того, чтобы скрыть координатную разметку и линии осей, сделайте оси невидимыми, установив их свойство Visible в off.

Рис. 2. Заготовка окна приложения в среде GUIDE.

Сохраните приложение с именем myview и запрограммируйте события Callback кнопок Open Image и Close Image.

При нажатии пользователем на Open Image должен появляться диалог открытия файла и после выбора файла рисунок должен отображаться на осях. Воспользуемся стандартным диалоговым окном открытия файла, которое создает функция uigetfile. Самое простое обращение к ней выглядит следующим образом:

Uigetfile

Если пользователь выбрал файл и закрыл окно, нажав в нем кнопку Open, то в первом выходном аргументе FileName возвращается имя файла (с расширением), а во втором PathName - путь к файлу. Если же пользователь не выбрал файл (нажал Cancel, или закрыл окно кнопкой с крестиком на заголовке окна, или нажал ), то переменная FileName будет равна нулю. Поэтому дальнейшие действия зависят от значения FileName.

Если файл был выбран, то следует

1) сформировать полное имя файла;

3) вывести изображение на оси, воспользовавшись функцией image.

Если файл не был выбран, то и делать ничего не надо.

Событие Callback кнопки Close Image может состоять всего из одного оператора - обращения к функции cla для очистки осей.

Запрограммируйте подфункции обработки события Callback кнопок Open Image и Close Image следующим образом.

Function btnOpen_Callback(hObject, eventdata, handles) % Обработка события Callback кнопки Open Image % Получение имени и пути к файлу = uigetfile; % Проверка, был ли выбран файл if FileName~=0 % Формирование полного пути к файлу FullName = ; % Считывание изображения из графического файла Pict = imread(FullName); % Вывод изображения на оси image("CData", Pict) end function btnClose_Callback(hObject, eventdata, handles) % Обработка события Callback кнопки Close Image % Очистка осей cla

Запустите приложение myview. При нажатии на кнопку Open Image появляется диалоговое окно открытия файла Select File to Open. Однако, в поле, в котором отображается содержимое текущей папки не видно графических файлов. Так происходит потому, что по умолчанию фильтр файлов (раскрывающийся список Files of type) содержит строку "All MATLAB Files" и видны файлы только с теми расширениями, которые приняты в MATLAB. Разумеется, можно каждый раз при открытии графического файла выбирать в раскрывающемся списке Files of type строку "All Files (*.*)" для отображения всех файлов текущей папки. Но гораздо лучше сразу создавать диалоговое окно открытия файла, настроенное на определенные расширения. Например, для отображения файлов с расширениями bmp и jpg следует обратиться к функции uigetfile со входным аргументом - строкой, в которой через точку с запятой записаны шаблоны с нужным расширением *.bmp и *.jpg:

Uigetfile("*.bmp;*.jpg");

Измените в подфункции btnOpen_Callback обращение к uigetfile на вышеприведенное и убедитесь, раскрывающийся список Files of type диалогового окна открытия файлов содержит всего две строки: "*.bmp;*.jpg" (по умолчанию) и "All Files (*.*)".

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

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

В этом разделе мы рассмотрим два вопроса:

1) как организовать выбор нескольких файлов в стандартном окне открытия файла и считать их содержимое в подходящий массив;

Ответ на первый вопрос простой. Надо вызвать функцию uigetfile с дополнительной парой входных аргументов "MultiSelect" и "on":

Uigetfile(..., "MultiSelect", "on")

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

  • Если в диалоговом окне открытия файла пользователь выбрал несколько файлов (выделением мышью или щелчком мыши с удержанием или ), то FileName станет массивом ячеек, каждая ячейка которого содержит строку с именем файла (и расширением), а PathName будет строкой, в которой записан путь к этим файлам (путь ко всем файлам один и тот же, поэтому PathName не должен быть массивом ячеек).
  • Если в диалоговом окне открытия файла пользователь выбрал один файл, то FileName будет строкой с именем файла (с расширением), а PathName - строкой с путем к файлу (см. предыдущий раздел).
  • Если выбор не был сделан, то FileName равно нулю.

Второй вопрос (обмен данными между подфункциями обработки событий) часто возникает при программировании приложений с графическим интерфейсом. Он решается следующим образом. Данные, которые требуется сохранить при выполнении некоторой подфункции, записываются в поля структуры handles. Затем в этой же подфункции структура handles сохраняется при помощи функции guidata:

guidata(gcbo, handles)

Для получения данных в другой подфункции следует обратиться к соответствующему полю структуры handles. Например, в приложении есть две подфункции btnA_Callback и btnB_Callback. При выполнении подфункции btnA_Callback был создан числовой массив, который понадобится в подфункции btnB_Callback. Тогда эти подфункции должны иметь следующий вид.

Function btnA_Callback(hObject, eventdata, handles) . . . handles.data = ; guidata(gcbo, handles) . . . function btnB_Callback(hObject, eventdata, handles) . . . bar(handles.data) . . .

Обратимся к приложению myview, созданному в предыдущем разделе, и расширим его возможности. Модернизированное приложение должно позволять открытие сразу нескольких графических файлов и их поочередный просмотр. После выбора нескольких графических файлов в окне приложения отображается только один, а нажатие на кнопку (назовем ее Next) приводит к появлению следующего изображения.

В среде GUIDE на заготовку окна приложения myview (см. рис.2 предыдущего раздела) добавьте кнопку c тегом btnNext и надписью Next (см. рис. 1). В инспекторе свойств сделайте ее недоступной, установив свойство Enable в off. Она будет доступной в ходе работы приложения, если пользователь выбрал для просмотра несколько графических файлов.

Рис. 1. Окно приложения myview с кнопкой Next

Теперь надо изменить подфункцию btnOpen_Callback обработки события Callback кнопки Open Image и запрограммировать событие Callback кнопки Next. При обработке выбора файлов (или файла) пользователем в диалоговом окне открытия файла следует учесть все возможности: выбрано несколько файлов, выбран только один файл, файлы не выбраны.

Если выбрано несколько графических файлов (т.е. массив FileName является массивом ячеек), то считаем изображения в массив ячеек и сохраним его в поле Pict структуры handles. Число открытых графических файлов (т.е. длину массива FileName) сохраним в поле ImageNum структуры handles. Кроме того, нам понадобится номер текущего изображения, для запоминания которого создадим поле CurImage структуры handles.

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

При обработке события Callback кнопки Next очистим оси и отобразим на них следующее изображение. Если текущее изображение является последним, то отобразим первое.

Ниже приведен текст подфункций btnOpen_Callback и btnNext_Callback. Подфункция btnClose_Callback остается без изменений.

Function btnOpen_Callback(hObject, eventdata, handles) % Обработка события Callback кнопки Open Image % Получение имен файлов и пути к ним (или имени одного файла и пути к нему) = uigetfile("*.bmp;*.jpg", "MultiSelect", "on"); % Узнаем, сколько выбрано файлов if iscell(FileName) % FileName - массив ячеек, значит выбрано несколько файлов % записываем в поле ImageNum структуры handles число выбранных файлов handles.ImageNum = length(FileName); % Для каждого файла в цикле формируем полное имя % и считываем его содержимое в k-ую ячейку массива ячеек, % который хранится в поле Pict структуры handles handles.Pict = ; % сначала делаем массив пустым for k=1:handles.ImageNum FullName = ; handles.Pict{k} = imread(FullName); end % Первая картинка является текущей handles.CurImage = 1; % Отображаем ее на осях image("CData", handles.Pict{handles.CurImage}) % Сохраняем структуру handles для доступа к ней в подфункции btnNext_Callback guidata(gcbo, handles) % Делаем доступной кнопку Next set(handles.btnNext, "Enable", "on") else % Был выбран только один файл или ни одного if FileName~=0 % Выбран один файл, формируем полный путь к нему FullName = ; % Считываем изображение в переменную Pict (структура handles не нужна) Pict = imread(FullName); % Выводим картинку на оси image("CData", Pict) % Делаем кнопку Next недоступной set(handles.btnNext, "Enable", "off") end end function btnNext_Callback(hObject, eventdata, handles) % Обработка события Callback кнопки Open Image % Проверяем, какая картинка является текущей if handles.CurImage

Примечание

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

Справка по функциям для создания диалоговых окон.

Создание диалогового окна с сообщением об ошибке - errordlg

Для создания стандартного диалогового окна с сообщением об ошибке служит функция errordlg. Самый распространенный вариант вызова

h = errordlg("Текст сообщения", "Заголовок окна").

В h записывается указатель на созданное графическое окно с сообщением об ошибке. Например

h = errordlg("Division by zero", "Calculator");

Приводит к такому окну с указателем h:

Окно остается на экране до тех пор, пока его не закроют кнопкой OK, клавишей, кнопкой с крестиком на заголовке или при помощи контекстного меню заголовка.

Окно с сообщением об ошибке не является модальным (оно позволяет переходить к другим окнам приложений MATLAB). Для того, чтобы сделать его модальным, следует после создания окна функцией errordlg установить свойство WindowStyle графического окна в "modal": set(h, "WindowStyle", "modal")

Другой способ создания модального окна с сообщением об ошибке состоит в использовании функции msgbox, которая описана ниже.

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

h = errordlg({"Wrong data format";"or"; "unmatched data"}, "dlgname")

Последовательное создание окон с сообщениями об ошибке с одним и тем же заголовком:

h = errordlg("Division by zero", "Calculator"); ... h = errordlg("Incorrect operation", "Calculator");

приводит к созданию разных окон с сообщениями об ошибке. Для активизации окна (расположения поверх остальных окон) и вывода в него нового сообщения, вместо создания нового окна, предусмотрен вызов errordlg с третьим аргументом "on":

h = errordlg("Division by zero", "Calculator"); ... h = errordlg(" Incorrect operation ", "Calculator", "on"); % активизация старого окна

Разумеется, если старое окно было закрыто, то h = errordlg(..., "on") просто создает новое.

После вывода диалогового окна с сообщением об ошибке выполнение приложения продолжается. Часто возникает вопрос: как приостановить выполнение до тех пор, пока диалоговое окно не будет закрыто. Это делается при помощи функции waitfor, которая приостанавливает выполнение приложения, пока не будет удален определенный графический объект. Указатель на этот объект (в нашем случае - окно с сообщением об ошибке) указывается в качестве входного аргумента функции waitfor:

h = errordlg("Division by zero", "Calculator"); set(h, "WindowStyle", "modal") waitfor(h) a=1; ....

Создание диалогового окна с предупреждением - warndlg

Функция warndlg работает практически так же, как и errordlg (см. выше), но не предусмотрен вариант вызова с третьим входным аргументом "on". Например,

приводит к такому окну с указателем h

Окно с предупреждение отличается от окна с сообщением об ошибке только пиктограммой:

Повторный вызов warndlg с теми же самыми входными аргументами приводит к созданию нового окна, даже если старое еще не было закрыто.

Создание диалогового окна со справочной информацией - helpdlg

Функция helpdlg работает в основном так же, как и warndlg (см. выше). Например,

h = warndlg("File is out of date", "Preprocessor")

приводит к такому окну с указателем h:

которое отличается от окна с предупреждением только пиктограммой:

Повторный вызов helpdlg с тем же самым заголовком окна приводит к активизации старого окна, если оно не было закрыто. Если оно было закрыто, то создается новое.

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

Создание окна с сообщением - универсальная функция msgbox

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

h = msgbox("Very serious error!", "Program", "error") - создает окно с сообщением об ошибке и стандартной пиктограммой (аналогично errordlg).

c = {"Very serious error!"; "Don""t tell anyone"}; h = msgbox(c, "Program", "error") - аналогично предыдущему, но сообщение состоит из двух строк.

h = msgbox("The last warning!", "Program", "warn") - создает окно с предупреждением и стандартной пиктограммой (аналогично warndlg).

h = msgbox("Help yourself...", "Program", "help") - создает окно со справочной информацией и стандартной пиктограммой (аналогично helpdlg).

h = msgbox("Here is no picture", "Program", "none") - создает окно с текстовой информацией без пиктограммы.

h = msgbox("Текст сообщения", "Заголовок окна", "custom", рисунок, карта цветов) - создает окно с пиктограммой пользователя, например:

= imread("phone.gif"); % считывание рисунка и карты цветов из файла h = msgbox("Someone is calling you", "Phone", "custom", pic, map)

приводит к такому окну

Последний входной аргумент ("modal", "non-modal" или "replace") управляет видом окна и способом вывода нового окна с тем же заголовком. Если способ вывода нового окна не указан, то всегда создается новое окно.

Примеры:

h = msgbox("Very serious error!", "Program", "modal") - выводит модальное стандартное окно с сообщением об ошибке

h = msgbox("Someone is calling you", "Phone", "custom", pic, map, "modal") - выводит модальное окно с заданным рисунком для пиктограммы и картой цветов.

h = msgbox("Very serious error!", "Program", "error", "replace") - заменяет предыдущее окно с заголовком Program, если такого нет, то создает новое. При выполнении команд

h = msgbox("Very serious error!", "Program", "error") h = msgbox("Something is strange", "Program", "warn", "replace")

второе окно заменит первое.

Диалоговое окно подтверждения - функция questdlg

Функция questdlg создает модальное диалоговое окно подтверждения с несколькими кнопками. При создании окна любая из кнопок может находиться в фокусе. В выходном аргументе функция questdlg возвращает выбор пользователя (строку с названием нажатой кнопки) или пустую строку, если окно было закрыто без нажатия на какую-либо кнопку. Для получения многострочного текста следует использовать массив ячеек из строк. Если задана длинная строка, то она переносится автоматически.

Примеры:

button = questdlg("Are you sure?") - создание стандартного окна подтверждения с кнопками Yes, No, Cancel. Кнопка Yes в фокусе (по умолчанию).

button = questdlg("Are you sure?", "Program") - создание стандартного окна подтверждения с заголовком и с кнопками Yes, No, Cancel.

button = questdlg("Are you sure?", "Program", "No") - создание стандартного окна подтверждения с заголовком и с кнопками Yes, No, Cancel. В фокусе кнопка No.

button = questdlg("Are you sure?", "Program", "Yes", "Maybe", "Maybe") - создание стандартного окна подтверждения с заголовком и с двумя кнопками Yes и Maybe. В фокусе кнопка Maybe.

button = questdlg("Are you sure?", "Program", "Yes", "No", "I don""t know", "No") - создание стандартного окна подтверждения с заголовком и с тремя кнопками Yes, No и I don"t know. В фокусе кнопка No.

Диалоговое окно для ввода информации (функция inputdlg)

Функция inputdlg создает диалоговое окно с заданным числом строк ввода. Число строк ввода и заголовки к ним определяются при помощи входных аргументов. Окно содержит кнопки OK и Cancel. Если пользователь нажал OK, то выходной аргумент функции inputdlg является массивом ячеек с информацией, введенной пользователем в строки ввода. Если окно было закрыто нажатием на кнопку Cancel или любым другим способом (кроме кнопки OK), то выходной аргумент - пустой массив ячеек.

Примеры:

M = inputdlg({"TIME" "VALUES"}) - создает диалоговое окно

Если, к примеру, в строке TIME пользователь ввел 0.1 0.3 0.55 4.5, а в строке VALUES - 2.3 9.55 2.1 0.7 и нажал OK, то массив ячеек M будет иметь следующие значения.

M = "0.1 0.3 0.55 4.5" "-2.3 9.55 2.1 0.7"

Для преобразования их в числовые векторы можно воспользоваться str2num:

time = str2num(M{1}) val = str2num(M{2})

M=inputdlg({"TIME" "VALUES"}, "Input Data") - создает диалоговое окно с заголовком Input Data.

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

M = inputdlg({"matrix A" "Matrix B"}, "Input Data", 3) - если третий аргумент является числом большим единицы, то все области ввода имеют одинаковую высоту и снабжены полосами прокрутки.

Если ввод завершен нажатием на кнопку OK, то каждая ячейка массива M содержит массив символов. В массиве символов столько строк, сколько было введено в соответствующую область ввода.

M = inputdlg({"vector A" "Matrix B"}, "Input Data", ) - для задания высоты областей ввода по отдельности следует указывать число строк каждой области ввода в вектор-столбце в качестве третьего входного аргумента:

M = inputdlg({"vector A" "Matrix B"}, "Input Data",) - для задания длины областей ввода в символах (в данном случае, 100 символов) третьим входным аргументом должна быть матрица:

M = inputdlg({"Name" "Year"}, "Info", , {char("John","Smith") "1990"}) - для получения окна с заполненными полями (для подсказки формата ввода пользователю) указывается четвертый входной аргумент. Он должен быть массивом ячеек того же размера, что и первый входной аргумент:

M = inputdlg({"Name" "Year"}, "Info", , {char("John","Smith") "1990"}, "on") - последний пятый входной аргумент "on" означает, что пользователь может изменять размеры диалогового окна.

Диалоговое окно для выбора из списка - функция listdlg

Функция listdlg создает диалоговое окно со списком из заданных строк и кнопками для выбора и отмены. Строки списка задаются массивом ячеек. Поддерживается выбор нескольких элементов списка. В выходных аргументах возвращаются: Selection - номер или вектор с номерами выбранных строк и ok - информация о том, был ли выбор завершен нажатием кнопки OK (ok = 1), или окно было закрыто другим способом (ok = 0). Если ok = 0, то Selection - пустой массив. По умолчанию допускается выбор нескольких элементов списка (щелчком мыши с удержанием Ctrl) и присутствует кнопка Select All для выбора всех элементов.

= listdlg("ListString", {"Linear"; "Quadratic"; "Cubic"}) - создает диалоговое окно выбора со списком из трех строк: Linear, Quadratic, Cubic. Если пользователь выбрал, к примеру Quadratic и нажал кнопку OK, то Selection = 2 и ok = 1. Если пользователь выбрал Linear и Cubic и нажал кнопку OK, то Selection = и ok = 1 и т. д.

Функция listdlg допускает обращение к ней в общей форме:

= listdlg("ListString", массив ячеек строк, парам1, знач1, парам2, знач2, ...)

Параметры и их возможные значения такие:

  • "SelectionMode" - режим выбора строк в списке, значения: "single" (для выбора только одной строки) или "multiple" (по умолчанию, для выбора нескольких строк);
  • "ListSize" - размер области списка в пикселях, значение задается вектором [ширина высота] (по умолчанию );
  • "InitialValue" - начальное выделение строк, значением является вектор с номерами строк, которые будут выделены при отображении окна со списком (по умолчанию 1);
  • "Name" - заголовок окна, значение задается строкой (по умолчанию пустая строка);
  • "PromptString" - текст над списком, значения: строка или массив строк или ячеек из строк (для многострочного текста). По умолчанию пустой массив ячеек.
  • "OKString" - надпись на кнопке для выбора и закрытия окна, значением является строка (по умолчанию "OK");
  • "CancelString" - надпись на кнопке для закрытия окна без выбора, значением является строка (по умолчанию "Cancel");
  • "uh" - высота кнопок окна, значение задается в пикселях (18 по умолчанию);
  • "fus" - расстояние между кнопками и списком, значение задается в пикселях (18 по умолчанию);
  • "ffs" - расстояние от границы окна до списка, значение задается в пикселях (8 по умолчанию).
Например, команда

= listdlg("ListString", {"Linear"; "Quadratic"; "Cubic"},... "Name", "Approximation", "ListSize", , "PromptString", "Select method", "fus", 5)

приводит к созданию следующего диалогового окна со списком:

Диалоговое окно для установки параметров листа и способа печати содержимого графического окна - функция pagesetupdlg

pagesetupdlg - вызов диалогового окна Page Setup для текущего графического окна (если нет ни одного окна, то создается новое).

pagesetupdlg(hF) - вызов диалогового окна Page Setup для графического окна с указателем hF.

Настройки, сделанные в диалоговом окне Page Setup, влияют на соответствующие свойства графического окна: PaperSize, PaperType, PaperPozition и т. д.

Функция pagesetupdlg позволяет настроить параметры только одного графического окна, т.е. hF не может быть вектором указателей. Для одновременной настройки основных параметров нескольких графических окон следует использовать функцию pagedlg, входным аргументом которой может быть вектор указателей на графические окна.

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

Диалоговое окно для выбора опций печати и настройки принтера - функция printdlg

printdlg - вызов стандартного диалогового окна Windows для печати текущего графического окна (если нет ни одного окна, то создается новое).

printdlg(hF) - вызов стандартного диалогового окна Windows для печати графического окна с указателем hF.

printdlg("-crossplatform", hF) - вызов диалогового окна Print MATLAB для печати графического окна с указателем hF.

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

Диалоговое окно открытия файла - функция uigetfile

= uigetfile - выводит диалоговое окно открытия файла с содержимым текущего каталога. Фильтр файлов установлен в ALL MATLAB files, что приводит к отображению только тех файлов, расширения которых поддерживаются MATLAB. В раскрывающемся списке Files of type можно выбрать только M-файлы, или только графические окна и т. д., или все файлы.

Если пользователь выбрал файл (щелчком мыши по значку с файлом и нажал кнопку Open, либо двойным щелчком мыши по значку с файлом, либо набрал имя файла в строке File Name и нажал кнопку Open), то FName содержит строку с именем файла и расширением, а PName - путь к файлу. Если пользователь не выбрал файл и закрыл окно, то FName = 0 и PName = 0. После обращения к функции uigetfile следует проверить, был ли выбран файл. Если да, то для получения полного имени файла следует сцепить эти строки:

= uigetfile; if ~ isequal(FName, 0) FullName = strcat(PName, FName); % дальше считываем данные из файла end

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

= uigetfile("*.txt");

создает диалоговое окно открытия файлов, список Files of Type которого содержит две строки: "*.txt" и "All Files (*.*)". Можно указывать больше одного расширения, но тогда надо использовать массив ячеек из строк:

= uigetfile({"*.txt"; "*.dat"});

Для размещения описания типов файлов в списке Files of Type следует указывать массив ячеек из двух столбцов. В каждой его строке задается расширение файла и его описание (при этом строка "All Files (*.*)" не добавляется в список Files of Type диалогового окна открытия файла):

Filter={"*.txt", "Text files (*.txt)"; "*.dat", "Data files (*.dat)"; "*.res", "Results (*.res)"}; = uigetfile(Filter);

В качестве фильтра может быть и строка с именем файла, тогда оно находится в строке File name при появлении диалогового окна открытия файла, а его расширение принимается за расширение по умолчанию и появляется в списке Files of Type вместе с "All Files (*.*)".

Если необходимо узнать, какой по счету тип файлов пользователь выбрал в списке Files of Type, то следует обратиться к uigetfile с тремя выходными аргументами:

= uigetfile(Filter);

В FilterIndex записывается номер типа файлов.

Для задания собственного заголовка окна открытия файла (вместо Select File to Open) функция uigetfile вызывается со вторым входным аргументом:

= uigetfile(Filter, "Open File");

А для помещения заданного имени файла в строку File Name при создании окна открытия файлов, необходимо указать его в третьем входном аргументе (имя файла может быть полным):

= uigetfile(Filter, "Open File", "input.txt")

Так можно отобразить содержимое любой папки, например корневого каталога диска D:

= uigetfile(Filter, "Open File", "d:\")

Примечание
Если мы хотим открывать файлы MATLAB так, как предлагает uigetfile по умолчанию, но задать собственный заголовок окна (и папку или файл, предлагаемые по умолчанию в диалоговом окне открытия файлов), то первый входной аргумент - фильтр - пропускать нельзя. Он должен быть пустой строкой:

= uigetfile("", "Open File", "d:\");

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

= uigetfile("MultiSelect", "on"); или = uigetfile("*.dat", "MultiSelect", "on") ; или = uigetfile("*.dat", "Open File", "d:\", "MultiSelect", "on")

Если пользователь выбрал несколько файлов в диалоговом окне, то выходной аргумент FName является массивом ячеек из имен выбранных файлов (PName, разумеется, остается строкой, так как файлы выбирались в одной папке). Для получения массива ячеек с полными именами файлов подойдет следующий код (функция strcat умеет сцеплять строку с массивом ячеек из строк):

= uigetfile("MultiSelect", "on"); if ~isequal(FName, 0) FullName = strcat(PName, FName); end

Функции MATLAB для открытия файлов разных форматов

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

load - чтение данных из двоичного или текстового файла.

open - открытие файла. Способ открытия зависит от расширения:

  • расширение m - файл открывается в редакторе M-файлов;
  • расширение mdl - модель открывается в Simulink;
  • расширение mat - запись двоичных данных из файла в поля структуры, имена полей структуры совпадают с именами переменных, записанных в файле;
  • расширение fig - открывается графическое окно;
  • расширение p - если существует m-файл с тем же самым именем, то он открывается в редакторе M-файлов;
  • расширения htm, html - файл открывается в окне браузера справочной системы MATLAB;
  • расширение pdf - файл открывается в Adobe Acrobat (требуется установка открытия по ассоциации в Windows);
Для открытия файла с нестандартным расширением можно написать свою функцию, которая будет вызываться по умолчанию. Ее имя образуется из слова open и расширения, например для открытия файлов с расширением dtm следует написать функцию opendtm. Пример. Пусть надо открывать двоичные файлы с расширением dtm, содержащие значения двух переменных, имена которых могут быть разными. Значения этих переменных должны быть записаны в переменные time и data рабочей среды. Тогда пишем файл-функцию opendtm:

function opendtm(fname) % считываем данные в структуру S = load("-mat", fname); % узнаем названия полей структуры (имена переменных) F = fieldnames(S); % Присваиваем значения переменным time и data рабочей среды assignin("base", "time", S.(F{1})) assignin("base", "data", S.(F{2}))

Вот как можно использовать функцию opendtm:

A = 1:10; B = sqrt(A); save("my.dtm", "A", "B") % запись A и B в файл в двоичном виде open("my.dtm") % open вызывает opendtm и в рабочей среде создаются time и data

Примечание. Функция uiopen сочетает возможности uigetfile и open - она создает диалоговое окно открытия файла, а затем вызывает open для его открытия.

winopen - открытие файла в Windows тем приложением, которое ассоциировано с данным расширением, например: winopen("art.doc") - открытие art.doc в MS Word; winopen("my.txt") - открытие my.txt в блокноте; winopen("all.htm") - открытие all.htm в браузере интернет-страниц.

notebook - открытие или создание M-книги в MS Word.

publish - выполнение M-файла, разбитого на ячейки, и сохранение результата в указанном формате: html, doc, ppt, xml, rpt, latex.

dos и system - выполнение команд (см. также!), запуск исполняемых файлов, например:

system("calc") - запуск калькулятора.

uiimport - открывает окно Import Wizard для импортирования данных из различных форматов.

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

csvread - чтение числовых данных из текстового файла с разделителем-запятой.

dlmread - чтение числовых данных из текстового файла с заданным разделителем.

textread, textscan - чтение данных из текстового файла, имеющего определенный формат.

xlsread - чтение данных из фалов MS Excel.

wavread - чтение звукового wav-файла.

aviread - чтение avi-файла.

imread - чтение графических файлов.

Кроме перечисленных функций имеются низкоуровневые функции для работы с файлами. Их имена начинаются с буквы f:

fclose - закрытие файла.

feof - проверка на достижение конца файла.

ferror - получение информации о последней ошибке при вводе-выводе.

fgetl - чтение строки из текстового файла без символа конца строки.

fgets - чтение строки из текстового файла с символом конца строки.

fopen - открытие файла.

fprintf - форматная запись в файл.

fread - чтение из двоичного файла.

frewind - переход к началу файла.

fscanf - форматное чтение из файла.

fseek - переход к заданной позиции в файле.

ftell - получение текущей позиции в файле.

fwrite - запись в двоичный файл.

Все функции для чтения данных приведены в разделе справочной системы: MATLAB: Functions -- Categorical List: File I/O.

Диалоговое окно сохранения файла - функция uiputfile

Использование uiputfile схоже с uigetfile, рассмотренной выше. Точно так же задаются фильтр расширений, заголовок окна, файл или путь по умолчанию. Отличие состоит в том, что в uiputfile нет опции "MultiSelect" (она и не нужна при сохранении). Кроме того, если в диалоговом окне сохранения файла пользователь выберет имя существующего файла, то появится окно подтверждения. Выбор Yes приводит к завершению диалога сохранения файла, а No - к возврату в окно сохранения файла. Проверка действий пользователя и получение полного имени файла выполняется точно так же, как и в случае uigetfile.

Функции MATLAB для сохранения данных в файлах

Перечислим основные функции MATLAB, предназначенные для сохранения данных различных типов.

save - сохранение данных в текстовом и двоичном файлах

Примечание.
Функция uisave сочетает возможности uigetfile и save - она создает диалоговое окно сохранения файла, в котором будут сохранены все переменные рабочей среды..

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

dlmwrite - запись числовых данных в текстовый файл через заданный разделитель.

xlswrite - запись данных в формате MS Excel.

wavwrite - запись wav-файла.

avifile - создает avi-файл и возвращает идентификатор на него, который используется в других функциях: addframe, close.

movie2avi - создание avi-файла из матрицы, в каждом столбце которой хранится информация об одном фрейме (см. функции: movie, getframe, im2frame).

imwrite - запись графического файла.

Кроме перечисленных функций имеются низкоуровневые функции для работы с файлами, имена которых начинаются с буквы f (см. выше раздел "Функции MATLAB для открытия файлов разных форматов").

Диалоговое окно выбора каталога - функция uigetdir

Функция uigetdir открывает диалоговое окно выбора каталога Browse for folder и возвращает путь к выбранному каталогу, либо ноль, если пользователь не сделал выбор. Проверка, был ли выбран каталог, делается точно так же, как и в функции uigetfile для диалога открытия файла. Способы вызова uigetdir:

dname = uigetdir - открывает диалоговое окно выбора каталога, в котором выделен текущий каталог MATLAB.

dname = uigetdir("startpath") - открывает диалоговое окно выбора каталога, в котором выделен заданный каталог, например: dname = uigetdir("c:\").

dname = uigetdir("startpath", "text") - открывает диалоговое окно выбора каталога, в котором выделен заданный каталог и помещает заданный текст над окном с иерархической структурой каталогов. Если нужно открыть диалоговое окно выбора каталога, в котором выделен текущий каталог MATLAB, то вместо первого входного аргумента следует указать пустую строку: dname = uigetdir("", "text").

Функции MATLAB для работы с каталогами

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

cd - смена текущего каталога MATLAB

dir - отображение содержимого каталога в командном окне или запись информации о содержимом в массив структур.

path, rmpath - управление путями поиска MATLAB.

Примечания.
Функция pathtool отображает специальное диалоговое окно Set Path для управления путями поиска MATLAB.
Функция filebrowser отображает специальное диалоговое окно Current Directory с содержимым текущего каталога, возможностью выбора нового текущего каталога и открытия файлов в MATLAB.

Все функции для работы с каталогами в MATLAB приведены в справочной системе в разделе MATLAB: Functions -- Categorical List: Desktop Tools and Development Environment: Workspace, Search Path, and File Operations.

Диалоговое окно выбора шрифта - функция uisetfont

Функция uisetfont может использоваться в двух целях:
1) создание диалогового окна выбора шрифта и запись информации о выбранном шрифте (название, размер, начертание) в структуру;
2) создание диалогового окна выбора шрифта и изменение текстовых объектов, подписей осей или элементов управления в соответствии со сделанными в этом окне установками.

S = uisetfont - приводит к появлению диалогового окна выбора шрифта и, если выбор в нем был сделан, то возвращается структура S, поля которой имеют следующий смысл:

S.FontName - строка с названием шрифта; S.FontUnits - единицы измерения ("points"); S.FontSize - размер; S.FontWeight - жирность ("normal" или "bold"); S.FontAngle - начертание ("normal" или "italic").

Если пользователь не выбрал шрифт и закрыл окно, то S равно нулю.

S = uisetfont(S0) - приводит к появлению диалогового окна выбора шрифта, в котором по умолчанию выбран шрифт в соответствии со значениями полей структуры S0, например:

S0.FontName = "Arial"; S0.FontUnits = "points"; S0.FontSize = 20; S0.FontWeight = "bold"; S0.FontAngle = "normal"; S = uisetfont(S0)

S = uisetfont("Заголовок окна") или S = uisetfont(S0, "Заголовок окна") - то же самое, что и предыдущие варианты, только окно выбора шрифта имеет заданный заголовок.

uisetfont(h) - вызов диалогового окна выбора шрифта для текстового объекта, осей или элемента управления с указателем h.

uisetfont(h, "Заголовок окна") - то же самое, что и uisetfont(h), только окно выбора шрифта имеет заданный заголовок.

S = uisetfont(h), S = uisetfont(h, "Заголовок окна") - то же самое, что и два предыдущих варианта, только информация о выборе пользователя дополнительно возвращается в структуре S.

Пример изменения шрифта графических объектов

hA = axes; % создание осей plot(rand(10)) % построение графика hT = title("Random Graph") % добавление заголовка % открытие диалогового окна для выбора шрифта разметки осей uisetfont(hA, "Set font for axes"); % открытие диалогового окна для выбора шрифта заголовка uisetfont(hT, "Set font for title"); Диалоговое окно выбора цвета - функция uisetcolor

Функция uisetcolor так же, как и uisetfont может использоваться в двух целях:
1) создание диалогового окна выбора цвета и запись выбранного цвета в вектор в формате RGB;
2) создание диалогового окна выбора цвета и изменение графических объектов, у которых есть свойство Color, в соответствии со сделанными в этом окне установками.

С = uisetcolor - создание диалогового окна выбора цвета (в нем по умолчанию текущим является белый цвет) и запись выбранного цвета в вектор С в формате RGB. Если пользователь не сделал выбор, то C равно нулю.

С = uisetcolor(С0) - то же самое, что и предыдущий вариант, только в диалоговом окне выбора цвета текущим является цвет, заданный вектором C0 в RGB. Если пользователь не сделал выбор, то C совпадает с C0.

С = uisetcolor("Заголовок окна"), С = uisetcolor(С0, "Заголовок окна") - то же самое, что и предыдущий вариант, только диалоговое окно выбора цвета имеет заданный заголовок.

uisetcolor(h) - открытие диалогового окна выбора цвета для задания цвета графического объекта с указателем h (графический объект должен иметь свойство Color).

uisetcolor(h, "Заголовок окна") - аналогично предыдущему, но диалоговое окно имеет заданный заголовок.

C = uisetcolor(h) или C = uisetcolor(h, "Заголовок окна") - то же самое, что и два последних способа. Кроме изменения цвета объекта, выбранный цвет записывается в вектор C в формате RGB.

Пример изменения цвета графических объектов.

hA = axes; % создание осей % построение графика x = 0:0.1:10; y = sin(x); hL = plot(x,y) hT = title("Random Graph") % добавление заголовка % открытие диалогового окна для выбора цвета линии uisetcolor(hL, "Select line color") % открытие диалогового окна для выбора цвета заголовка uisetcolor(hT, "Select title color") % открытие диалогового окна для выбора цвета осей uisetcolor(hA, "Select axes color")

Окно с полосой прогресса - функция waitbar

Функция waitbar создает окно с полосой прогресса и позволяет обновлять ее.

h = waitbar(x, "текст") - отображает окно с полосой прогресса и заданным текстом над полосой. Длина полосы прогресса пропорциональна значению x, которое должно быть от 0 до 1. Выходной аргумент h - указатель на графическое окно с полосой прогресса.

waitbar(x, h) - увеличивает длину полосы прогресса с указателем h в соответствии со значением x.

% создание окна с пустой полосой прогресса h = waitbar(0, "Solving eigenvalue problems..."); for i=1:100 A = rand(30); L = eig(A); waitbar(i/100) % обновление полосы прогресса end % удаление графического окна с полосой прогресса close(h)

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

% создание окна с пустой полосой прогресса h = waitbar(0, "Solving eigenvalue problems..."); % поиск указателя на полигональный объект hP = findobj(h, "Type", "patch"); % задание цвета внутренности и границы полигонального объекта set(hP, "FaceColor", "g", "EdgeColor", "g") for i=1:1000 waitbar(i/1000, h) end close(h)

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

h = waitbar(0, "Simply white", "Color", "w", "Name", "program");

Создание диалогового окна с кнопками - функция menu

Функция menu создает окно с текстом и расположенными в столбик кнопками с заданными надписями. После нажатия пользователем на кнопку, ее номер возвращается в выходном аргументе функции menu.

button = menu("Select method", "Newton", "Gauss", "Zeidel")

Если пользователь не сделал выбор, то button = 0.

Мы надеемся, что помогли Вам решить проблему с файлом MATLAB. Если Вы не знаете, где можно скачать приложение из нашего списка, нажмите на ссылку (это название программы) - Вы найдете более подробную информацию относительно места, откуда загрузить безопасную установочную версию необходимого приложения.

Посещение этой страницы должно помочь Вам ответить конкретно на эти, или похожие вопросы:

  • Как открыть файл с расширением MATLAB?
  • Как провести конвертирование файла MATLAB в другой формат?
  • Что такое расширение формата файлов MATLAB?
  • Какие программы обслуживают файл MATLAB?

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

Что еще может вызвать проблемы?

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

Вы хотите помочь?

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

Файлы - это довольно распространенные объекты системы MATLAB. О некоторых типах файлов уже говорилось в предшествующих главах. В этом уроке рассматриваются свойства файлов, которые не зависят от их типа и относятся к любым файлам.

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

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

  • Команда open имя , где имя должно содержать массив символов или символьную переменную, открывает файлы в зависимости от анализа параметра имя и расширения в имени имя:
    • переменная - открывает массив, названный по имени, в редакторе массивов (Array Editor);
    • .mat - открывает файл, сохраняет переменные в структуре в рабочей области;
    • .fig - открывает его в редакторе дескрипторонй графики Property Editor;
    • .m - открывает m-файл в редакторе-отладчике;
    • .mdl - открывает модель в Simulink;
    • - открывает, если он есть, m-файл с тем же именем;
    • .html - открывает HTML документ в браузере помощи.

Если файлы с расширением существуют в пути MATLAB, то открывается тот файл, который возвращается командой which имя, если нет - то файл из файловой системы. Если файл не имеет расширение имени, то он открывается той программой, формат файлов которой был бы обнаружен функцией which ("имя файла") По умолчанию для всех файлов с окончаниями, отличными от вышеперечисленных, вызывается openother. Open вызывает функции орепххх, где ххх - расширение файла. Исключение - переменные рабочей области, для которых вызывается openvar, и рисунки, для работы с которыми вызывается openim. Создавая т-файлы с именем орепххх, пользователи могут изменять обработку файлов и добавлять новые расширения в список. Закрывать файлы, открытые при помощи open, нужно из редакторов, вызываемых ореnххх.

  • = uigetfile(FILTERSPEC. Title) . Открывает диалог с именем Title и фильтром FILTERSPEC (например, массивом ячеек, содержащим расширения файлов) и возвращает файл, выбранный пользователем, и путь к нему. Возвращает FILENAME=0, если файл не существует или если пользователь нажал на Cancel. = uigetfile (FILTERSPEC, Title. X. Y) размещает окно диалога в точке X, Y (координаты в пикселях).

Uigetfile("*.m;*.fig;*.mat:*.mdl" , "All MATLAB Files (*.m, *.fig, *.mat. *.mdl)")...

  • = uiputfile(FILTERSPEC. TITLE) сохраняет файл в диалоге, управляемом пользователем. Параметры аналогичны таковым в функции uigetfile.
  • Команда ui open открывает диалог, и если пользователь выбрал файл с известным расширением, вызывает его, используя open, или если имя файла имеет неизвестное расширение, то вызывается uigetfile. Входными аргументами uiopen могут быть mat lab, load, figure, simulink, editor. Без входных аргументов или с входным аргументом matlab в окне диалога предлагается выбрать *.m, *.fig, *.mat, *.mdl (если Simulink установлен), * .cdr (если state flow установлен), *.rtw, *.tmf, *.tlc, *.c, *.h, *.ads, *.adb (если установлен Real-Time Workshop). С аргументом load - *.mat. С аргументом figure предлагаются *.fig; simul ink - *.mdl, editor - *.m, *.mdt *.cdr, *.rtw, *.tmf, *.tlc, *.c, *.h, *.ads, *.adb.

Uiopen figure

  • Команда uiload открывает файл в диалоге, управляемом пользователем, с использованием команды load .

Функция ui import запускает Мастер импорта (Import Wizard), импортирующий из файла в текущей папке или буфера обмена Windows. Она соответствует выбору Import Data из меню File или выбору Paste Special из меню Edit MATLAB.

  • ui import (FILENAME) - запускает Мастер Импорта, открывая файл FILENAME. Мастер импорта показывает данные для предварительного просмотра. В окне предварительного просмотра появляются данные и их представление в виде переменных MATLAB. Собственно данные, текст и заголовки представляются разными переменными MATLAB. Для данных ASCII вы должны удостовериться, что Мастер импорта распознал разделители столбцов. Самостоятельно он может распознать только символ табуляции, пробел, запятую или точку с запятой. Нужно щелкнуть мышью на кнопке Next и в следующем окне либо подтвердить выбор разделителя, сделанный Мастером, либо выбрать Other и ввести любой разделитель.
  • ui import (" -file") - вначале выводит диалог выбора файла.
  • ui import ("-pastespecial") - вначале выводит для предварительного просмотра содержимое буфера обмена Windows.
  • S = ui import (…) хранит результирующие переменные как поля структуры S.
  • Команда uisave - управляемое пользователем сохранение (команда save описана в уроке 2) с Windows диалогом.
  • Функция saveas - сохраняет рисунок или модель Simulink в желаемом формате на носителе информации или на устройстве, разрешенном print.
  • Функция saveas (H, "FILENAME") - сохраняет данные в соответствии с командой дескрипторной графики Н в файле FILENAME. Формат файла определяется расширением имени FILENAME.
  • Функция saveas (H. "FILENAME". "FORMAT") - выполняет то же, но с параметром FORMAT (формат задается тем же способом, что и расширение имени файла и может от него отличаться). FORMAT имеет приоритет перед расширением имени файла. Параметры функции:
    • "fig" - сохранить рисунок (график) в двоичном fig-файле;
    • "m" или "mfig" - сохранить рисунок в двоичном fig-файле и создать m-файл для его загрузки;
    • "mmat" - сохранить рисунок в m-файле как последовательность команд создания рисунка. Может не поддерживать новейшие графические функции.

Saveas(gcf. "output" , "fig") saveas(gcf, "output" , "bmp")

Команда или функция delete удаляет файл или объект графики.

Понравилось? Лайкни нас на Facebook