Теория и обработка сигналов MATLAB в ТОС, страница 3

        x =
  0  0.20 0.40      0.60      0.80        1.00

>>k = 0:10;             % Создается 1x11 вектор с элементами 0, 1, 2, ..., 10.

>> x1 = linspace(0, 4, 5)   % 1x5   вектор-строка – используется           команда    "linspace"

x1 =

     0     1     2     3     4

>> x = logspace (0, 1, 6)        %  6 значений от  100 до 101  в логарифмической шкале

x =

     1.0000         1.5849             2.5119             3.9811 
      6.3096        10.0000

Ввод элементов матрицы выполняется в Matlab в квадратных скобках по строкам. Элементы строки матрицы разделяются пробелом или запятой, строки отделяются друг от друга символом  ‘;’ (точка с запятой).

Пример

» A= [1 2 3;  4 5 6;  7 8 9]     

A =

     1     2     3

     4     5     6

     7     8     9        

>> txt = 'string'                            %генерирование символьной матрицы/вектора

txt =

string

>> txt = ['s' 't' 'r'; 'i', 'n', 'g']          % ввод матрицы по отдельным символам

Специальные матрицы:

M = [];                                % пустая матрица

M = zeros(n,m); % n x m матрица с нулевыми элементами

M = ones(n,m);               % n x m матрица из единичных элементов

M = eye(n);                      % единичная квадратная матрица n x n

M =   rand(m,n);                      % матрица размером m x n из случайных чисел,

                                                %  равномерно распределенных в интервале [0,1].

M =   randn(m,n);                    % матрица размером m x n из случайных чисел,

                                                %  распределенных по нормальному закону с нулевым

                                                %  средним значением и единичной дисперсией.

            Матрица может быть создана с помощью её блоков, например, если А – матрица размером 3 х 3, то команда

>> M = [A, zeros(3,2), ones(2,3), eye(2)];

создаст матрицу М размером  5 х 5.

Получение  элементов матриц

>>  x = A (1, 3)                        % формат доступа    A(<ряд>,<столбец>)

x  =

            3

>> y =A(2, :) 

y  =

4          5          6

» v1 = A(:, 2)

v1 =

     2

     5

     8
>> z = A(1:2, 1:3)

z  =

            1          2          3

            4          5          6

>>  v = A(:)                            %  преобразование матрицы в вектор

v =

            1

            2

            3

            4

            5

            6

Команда  length(x) возвращает размер (длину) вектора x,  команда size(x) –  размеры матрицы.

Пример

» length(v)

ans =

     6

Операции с матрицами

MATLAB  имеет следующие операции с матрицами

+

сложение

-

вычитание

*

умножение

^

возведение в степень

'

транспонирование

/

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

\

левое деление

Если размеры матриц несовместимы с матричной операцией, то выводится сообщение об ошибке.

Примеры

>> M1 = [1 7; -4 8];

>> M2 = [-1 0; 3 2];

>> H1 = [-2 5 -7; 3 1 2];

>> b2 = [9; 3];

>> A1 = M1 + M2                  %Сложение матриц

A1 =

     0     7

    -1    10

>> S2 = M2 - M1                    %Вычитание матриц

S2 =

    -2    -7

     7    -6

>> C1 = M1*H1                     %Умножение матриц

C1 =

    19    12     7

    32   -12    44

>> v1 = M1*b2                       %Умножение матрицы на вектор

v1 =

    30

   -12

            >> a = [1   2   3];        b = [4   5   6];

            >> v = a + b                            % сложение векторов

            v =   5              7              9

            >> d = a – b

            d =       -3         -3         -3

>> c = [9 3]                             %1x2 вектор-строка

c =

     9     3

>> c1 = c'                                % транспонирование вектора-строки

c1 =

     9

     3

Операции деления матриц требуют пояснения.

Если А – неособенная (обратимая) матрица, а b  - совместимый по размеру вектор,  то

>> y = A\b      %  Это  левое деление A на b , эквивалентно  решению системы  A * y = b

>> y1 = b/A    %   В этом случае - правое деление,  эквивалентно решению   y * A = b

Пример.

Пусть нужно решить систему уравнений

Решение системы в Matlab

» A=[1 2  1; 2  1  1; 1  3  1]

A =

     1     2     1

     2     1     1

     1     3     1

» b = [0;  1;  2]

b =

     0

     1

     2

» x = A \ b

x =

  3.0000e+000

  2.0000e+000

 -7.0000e+000

Поэлементные  операции  с массивами

В  Matlab имеются операции поэлементного преобразования массивов – векторов и матриц.

Такие операции называют операциями с точкой:

.*   -   поэлементное умножениемассивов,

 .^  -   поэлементноевозведение  в степень,

./   -    поэлементное деление,

 .\  -    поэлементное деление в обратном направлении.

Операции применяются к массивам одинакового типа и размера.

Примеры поэлементных операций с векторами 

» x=[1, 2, 3];     y=[4, 5, 6];

» z1 = x.*y

z1 =

     4    10    18

» z2 = y.^x

z2 =

     4    25   216

» z3 = y./x

z3 =

  4.0000e+000     2.5000e+000     2.0000e+000

» z4 = y.\x

z4 =

  2.5000e-001     4.0000e-001      5.0000e-001

Примеры поэлементных операций с матрицами 

>> A = [1  2; 3  4]

 A =

            1          2

            3          4

>> B =  A*A               %  Обычное умножение матриц

 B =

            7          10

            15        22

>>  C = A.*A              %  Поэлементное  умножение

 C =

            1          4

            9          16

» D = A./A                  %  Поэлементное деление

D =

     1     1

     1     1

Все элементарные функции Matlab являются функциями, аргументами которых могут быть  массивы.