- •Раздел 1 Основные понятия среды matlab
- •1. Начало работы в среде matlab
- •1.1. Характеристика среды matlab
- •1.2. Общие положения и правила работы в среде matlab
- •1.3. Работа в командном окне
- •1.4. Правила и особенности ввода математических выражений
- •1.5. Сохранение содержимого рабочего окна
- •2 Системные переменные и типы данных
- •2.1 Системные переменные
- •2.2. Типы данных. Описание основных типов
- •2.3. Комплексные числа
- •2.4. Символьные переменные
- •2.5. Массивы
- •2.5.1 Задание массивов
- •2.5.2 Доступ к элементам массивов
- •2.5.3 Функции обработки массивов
- •2.6 Тип данных структура (struct)
- •2.6.1 Задание структур
- •2.6.2 Функции обработки структур
- •2.7 Тип данных ячейка (сell)
- •2.8 Функции определения типов
- •2.9 Функции для работы со значениями даты и времени
- •2.10 Функции преобразования типов
- •3. Основные операции и математические функции matlab
- •3.1 Основные арифметические операции
- •3.2 Основные элементарные функции
- •Help имя_функции,
- •3.3 Операции отношения и логические операции
- •4 Операторы среды matlab
- •4.1 Условный оператор if
- •4.2 Условный оператор switch
- •4.3 Реализация циклических процессов
- •4.3.1 Оператор цикла while
- •4.3.2 Оператор цикла for
- •Pause – останавливает выполнение программы до момента нажатия любой клавиши на клавиатуре; pause(n) – останавливает выполнение программы на n секунд;
- •Примеры.
- •Как и в случае сценариев, к подпрограмме функции можно обратиться по имени, более того функции могут быть компонентами математических выражений и операндов, а также параметрами других функций.
- •5.4 Создание подпрограмм с переменным списком входных и выходных параметров
- •5.5 Локальные и глобальные переменные
- •5.6 Созданий функций пользователя и указателей на функции. Функции как аргументы функций.
- •5.8 Сообщения об ошибках
- •6 Ввод данных и работа с файлами
- •6.1 Использование рабочей области Workspace
- •6.2 Чтение и запись неформатированных файлов
- •6. 3 Работа с текстовыми и бинарными файлами
- •6.3.1 Команды открытия и закрытия файлов
- •6.3.2 Команды чтения и записи fread и fwrite
- •6.4 Операции над форматированными файлами
2.7 Тип данных ячейка (сell)
Ячейки также как и структуры могут содержать разные типы данных, объединенные одной переменной, но в отличие от вектора структур, вектор ячеек может менять тип данных в каждом элементе. Тип ячейка позволяет обрабатывать структуру подобно массиву, т. е. доступ к элементу ячейки осуществляется по его номеру. Таким образом, вектор ячеек является универсальным хранилищем – его элементы могут содержать любые типы и структуры данных, с которыми работает MATLAB – векторы чисел любой размерности, строки, векторы структур и другие (вложенные) векторы ячеек. Этот тип данных значительно упрощает работу с базами данных и удобен в тех случаях, когда заранее тип какого-либа элемента неизвестен.
Методы создания ячеек похожи на методы создания структур. Как и в случае структур, ячейка может быть создана либо путём последовательного присваивания значений отдельным элементам массива, либо созданы целиком при помощи специальной функции cell(). Однако в любом случае важно различать ячейку и её содержимое. Ячейка – это содержимое плюс некоторая оболочка (служебная структура данных) вокруг этого содержимого, позволяющая хранить в ячейке произвольные типы данных любого размера.
Синтаксис
c = cell(m[, n, p,... ]) или c = cell([m [n p ...]]) – создание ячейки размерности m[, n, p,... ] соответственно (m, n, p – целые числа);
c = cell(size(A)) – создание ячейки размерности, что и массив А;
c = num2cell(A) – преобразует числовой массив A в ячейку C;
c = num2cell(A, [dim1, dim2, ...]) – преобразует числовой массив A в массив ячеек размерности [dim1, dim2, ...].
Индексы ячейки берутся в круглые скобки, как и для массива. Содержимое ячейки в правой части оператора присваивания заключается в фигурные скобки { }.
Пример.
Создания вектора ячеек хранения разных типов данных.
>> Building = struct('street','','building_number','','project', '','floors',5);
>> MyCell(1)={'Building'};
>> MyCell(2)={'Питерская'};
>> MyCell(3)= {'3А'};
>> MyCell(4)={'1.400-15'};
>> MyCell(5)={5};
Можно задать значения ячейкам и другим способом, например, чтобы записать в ячейку с номером 1 значение Building, использовать следующий код:
>> MyCell{1}='Building';
>> MyCell{2} % обращение к ячейке с номером 2
ans =
street: 'Питерская'
building_number: '3А'
project: '1.400-15'
floors: 5
>> MyCell(1) % если используются круглые скобки, то будет возвращена структура данных [1x1 struct].
Создание массива ячеек размерности 2х2 со сложными полями
>> A = {[1 4 3; 0 5 8; 7 2 9], 'Площадь помещения'; 3-6.5i, -pi:pi/4:pi};
Структура полученного массива ячеек представлена на рис. 1.8.
Рис. 1.8 Структура ячейки А (пример 4)
>> MyCellArray = cell(2, 2); % создание пустой ячейки
% размерности 2х2
MyCellArray = [] []
[] []
Для просмотра содержимого ячейки используется специальная функция celldisp().
Синтаксис
celldisp(C) – вывод на экран содержимого ячейки С
celldisp(C, name) – вывод на экран содержимого ячейки С с использованием имени name.
Пример.
>> celldisp(MyCell)
MyCell{1} =Building
MyCell{2} =Питерская
MyCell{3} =3А
MyCell{4} =1.400-15
MyCell{5} = 5
>> celldisp(MyCell, 'МyHouse')
МyHouse.MyCell{1} =Building
МyHouse.MyCell{2} =Питерская
МyHouse.MyCell{3} =3А
МyHouse.MyCell{4} =1.400-15
МyHouse.MyCell{5} = 5
Чтобы определить структуру ячейки, используют специальную функцию cellplot(). Функция
Синтаксис
cellplot(c) – выводит в окно figure графическое представление структуры ячейки;
handles = cellplot(c) – выводит в окно figure графическое представление структуры ячейки и возвращает вектор внешних указателей.
Пример.
>> A = {[1 4 3; 0 5 8; 7 2 9], 'Площадь помещения'; 3-6.5i, -pi:pi/4:pi};
>> cellplot(A) % вывод в окно figure графическое представление структуры ячейки (рис. 1.8)
Рис. 1.8 Результат выполнения функции cellplot()
При инициализации значений ячейки можно использовать команду множественного присвоения deal.
Синтаксис.
[X{:}]=deal(A. FIELD) – копирует поля FIELD структуры А в массив ячеек X. Если X не существует, то используется конструкция:
[X{1:M}]=deal (A.FIELD);
[A,B,C,...]=deal(X{:}) – копирует содержимое массива ячеек X в отдельные переменные А, В, С,....
