Учебно-методический комплекс дисциплины Редакция 1



бет62/62
Дата02.04.2023
өлшемі1,47 Mb.
#78428
түріРабочая учебная программа
1   ...   54   55   56   57   58   59   60   61   62
1.8. Ячейки в MatLab
Ячейки также как и структуры могут содержать разные типы данных, объединенные одной переменной, но в отличии от вектора структур, вектор ячеек может менять тип данных в каждом элементе. Таким образом, вектор ячеек является универсальным контейнером – его элементы могут содержать любые типы и структуры данных, с которыми работает MatLab – векторы чисел любой размерности, строки, векторы структур и другие (вложенные) векторы ячеек.
Методы создания вектора ячеек похожи на методы создания вектора структур. Как и в случае структур, векторы ячеек могут быть созданы либо путём последовательного присваивания значений отдельным элементам массива, либо созданы целиком при помощи специальной функции cell(). Однако в любом случае важно различать ячейку (элемент вектора ячеек) и её содержимое. Ячейка – это содержимое плюс некоторая оболочка (служебная структура данных) вокруг этого содержимого, позволяющая хранить в ячейке произвольные типы данных любого размера.
Приведем пример создания вектора ячеек хранения разных типов данных.
book = struct('title','Онегин','author','Пушкин','year',2000);
MyCell(1)={book};
MyCell(2)={'Пушкин'};
MyCell(3)={2000};
Здесь задан вектор ячеек MyCell с тремя элементами. Первый элемент соответствует структуре, второй – строке, а третий – числу. В этом и заключается особенность организации данных с помощью ячеек: у каждого элемента свой тип данных.
Для обращения к содержимому той или иной ячейки используются фигурные скобки, внутри которых ставится индекс элемента с которым предполагается работа:
MyCell{1}
выведет на экран
title: 'Евгений Онегин'
author: 'Пушкин'
year: 2000
Если же используются круглые скобки, то будет возвращена структура данных вместо отдельных значений, например
MyCell(1)
выведет
[1x1 struct]
Для того чтобы задать вектор или матрицу ячеек с пустыми (неопределенными) значениями, используется функция cell() как показано ниже.
MyCellArray = cell(2, 2);
задается матрица размером 2х2. Данную инициализацию целесообразно выполнять когда нужно определить большой вектор или матрицу ячеек и в цикле задавать их значения. В этом случае MatLab сразу создает массивы нужных размеров, в результате чего повышается скорость выполнения программ.
В заключении рассмотрим возможность программирования функции с произвольным числом аргументов благодаря использованию ячеек. Для этого в качестве аргумента функции указывается ключевое слово varargin, которое интерпретируется внутри функции как вектор ячеек с переданными аргументами:
function len = SumSquare( varargin )
n= length( varargin );
len = 0;
for k = 1 : n
len = len + varargin{ k }(1)^2 +varargin{ k }(2)^2;
end
Данная функция вычисляет сумму квадратов чисел, которые передаются ей следующим образом:
SumSquare( [ 1 2], [3 4] ) % ответ 30
SumSquare( [ 1 2], [3 4], [ 5 6] ) % ответ 91
Таким образом, благодаря использованию ячеек функции SumSquare() можно передавать произвольное число двумерных векторов.

Достарыңызбен бөлісу:
1   ...   54   55   56   57   58   59   60   61   62




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет