<< ПредыдущаяОглавлениеСледующая >>


1.5. Векторы и матрицы в MatLab

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

Ниже показан пример задания вектора с именем a, и содержащий значения 1, 2, 3, 4:

a = [1 2 3 4];      % вектор-строка

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

disp( a(1) );  % отображение значения 1-го элемента вектора
disp( a(2) );  % отображение значения 2-го элемента вектора
disp( a(3) );  % отображение значения 3-го элемента вектора
disp( a(4) );  % отображение значения 4-го элемента вектора

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

a(2) = 10; % изменение значения 2-го элемента на 10

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

N = length(a); % (N=4) число элементов массива а

Если требуется задать вектор-столбец, то это можно сделать так

a = [1; 2; 3; 4];   % вектор-столбец

или так

b = [1 2 3 4]’;         % вектор-столбец

при этом доступ к элементам векторов осуществляется также как и для векторов-строк.

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

a = [1 2 3 4];      % начальный вектор a = [1 2 3 4]
b = [a 5 6];        % второй вектор b = [1 2 3 4 5 6]

Здесь вектор b состоит из шести элементов и создан на основе вектора а. Используя этот прием, можно осуществлять увеличение размера векторов в процессе работы программы:

a = [a 5];          % увеличение вектора а на один элемент

Недостатком описанного способа задания (инициализации) векторов является сложность определения векторов больших размеров, состоящих, например, из 100 или 1000 элементов. Чтобы решить данную задачу, в MatLab существуют функции инициализации векторов нулями, единицами или случайными значениями:

a1 = zeros(1, 100);     % вектор-строка, 100 элементов с
% нулевыми значениями
a2 = zeros(100, 1);     % вектор-столбец, 100 элементов с
% нулевыми значениями
a3 = ones(1, 1000);     % вектор-строка, 1000 элементов с
% единичными значениями
a4 = ones(1000, 1);     % вектор-столбец, 1000 элементов с
% единичными значениями
a5 = rand(1000, 1);     % вектор-столбец, 1000 элементов со
% случайными значениями

Матрицы в MatLab задаются аналогично векторам с той лишь разницей, что указываются обе размерности. Приведем пример инициализации единичной матрицы размером 3х3:

E = [1 0 0; 0 1 0; 0 01];         % единичная матрица 3х3

или

E = [1 0 0
    0 1 0
     0 0 1];                 % единичная матрица 3х3

Аналогичным образом можно задавать любые другие матрицы, а также использовать приведенные выше функции zeros(), ones() и rand(), например:

A1 = zeros(10,10);      % нулевая матрица 10х10 элементов

или

A2 = zeros(10);              % нулевая матрица 10х10 элементов
A3 = ones(5);           % матрица 5х5, состоящая из единиц
A4 = rand(100);              % матрица 100х100, из случайных чисел

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

A = [1 2 3;4 5 6;7 8 9]; % матрица 3х3
disp( A(2,1) );         % вывод на экран элемента, стоящего во
                    % второй строке первого столбца, т.е. 4
disp( A(1,2) );         % вывод на экран элемента, стоящего в
                    % первой строке второго столбца, т.е. 2

Также возможны операции выделения указанной части матрицы, например:

B1 = A(:,1);   % B1 = [1; 4; 7] – выделение первого столбца
B2 = A(2,:);   % B2 = [1 2 3] – выделение первой строки
B3 = A(1:2,2:3);    % B3 = [2 3; 5 6] – выделение первых двух
% строк и 2-го и 3-го столбцов матрицы А.

Размерность любой матрицы или вектора в MatLab можно определить с помощью функции size(), которая возвращает число строк и столбцов переменной, указанной в качестве аргумента:

a = 5;              % переменная а
A = [1 2 3];        % вектор-строка
B = [1 2 3; 4 5 6]; % матрица 2х3
size(a)             % 1х1
size(A)             % 1х3
size(B)             % 2х3



<< ПредыдущаяОглавлениеСледующая >>