Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_1 оту.doc
Скачиваний:
3
Добавлен:
12.11.2019
Размер:
3.98 Mб
Скачать
    1. Функции определения матриц и операций над ними:

■ eye (n[,m]) - возвращает единичную матрицу соответствую­щей размерности;

Листинг 28.

>>еуе(З)%квадратная единичная матрица

ans =

1 0 0

0 0 1

» eye(3,2)%прямоугольная единичная матрица

ans =

1 0

0 1

О 0

>> eye(3,4,5)%многомерная единичная матрица в MATLAB не определена,

>> %выдается сообщение об ошибке

??? Error using ==> eye

Third input must foe a valid numeric class name.

■ оnеs (n [, m, р,...])- формирует матрицу, состоящую из единиц;

Листинг 29

>> оnеs(2)%квадратная матрица

аns =

1 1

1 1

>> оnes(3,1)%матрица-столбец

аns =

1

1

1

>> оnеs(1,4)%матрица-строка

ans =

1 1 1 1

>> оnеs(2,3)%прямоугольная матрица

аns =

111

111

>> А=оnеs(3,2,3)%многомерный массив

А(:,:,1) =

1 1

1 1

1 1

А(:,:,2) =

1 1

1 1

1 1

А{:,:,3) =

1 1

1 1

1 1

■ zеrоs(n [, m, р, ...])- возвращает нулевую матрицу соответствующей размерности;

Листинг 30

>>zеrоs (3)%квадратная нулевая матрица

аns =

0 0 0

0 0 0

0 0 0

>>zеrоs (1,5)%матрица-строка

аns =

0 0 0 0 0

>> Z=zеrоs(3,4,2)%многомерный массив

Z(:,:,1) =

0 0 0 0

0 0 0 0

0 0 0 0

Z(:,:,2) =

0 0 0 0

0 0 0 0

0 0 0 0

■ diag (V [, к] ) - возвращает квадратную матрицу с элементами V на глав­ной или к-й диагонали; функция diag (А [, к] ), где А - ранее определен­ная матрица, в качестве результата выдаст вектор-столбец, содержащий элементы главной или к-ой диагонали матрицы А;

Листинг 31

>> V=[1,2,3]

V =

1 2 3

>> diag(V)%Диагональная матрица, V на главной диагонали

ans =

1 0 0

0 2 0

0 0 3

>> diag(V,0)%Дает тот же результат, что и diag(V)

ans =

1 0 0

0 2 0

0 0 3

>> diag(V,1)%Диагональная матрица, V на первой диагонали (выше

главной)

ans=

0 1 0 0

0 0 2 0

0 0 0 3

0 0 0 0

>> diag(V,-l) %Диагональная матрица, V на первой'диагонали (ниже главной)

ans =

0 0 0 0

1 0 0 0

0 2 0 0

О 0 3 0

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

А =

-1 2 0

2 1 -1

2 1 3

>> diag(A)% Вектор элементов матрицы А, расположенных на главной диагонали

ans=

-1

1

3

■ rand ([n, m, р, ...])- возвращает матрицу с элементами, распределенными по равномерному закону, rand без аргументов возвращает одно он чайное число;

Листинг 32

>>rand(3)%Квадратная матрица случайных чисел

ans =

0.9501 0.4860 0.4565

0.2311 0.8913 0.0185

0.6068 0.7621 0.8214

>> rand(3,2)%Прямоугольная матрица случайных чисел

ans =

0.4447 0.9218

0.6154 0.7382

0.7919 0.1763

>> R=rаnd(2,2,2)%Многомерный массив случайных чисел

R(:,:,1) =

0.9355 0.4103

0.9169 0.8936

R(:,:,2} =

0.0579 0.8132

0.3529 0.0099

>> rand %0дно случайное число

ans =

0.4057

>> rand %При каждом последующем вызове случайное число меняется ans =

0.1389

■ randn( [n, m, p...]) - возвращает матрицу, элементы которой распределены по нормальному закону, rand без аргументов возвращает одно случайное число;

Листинг 33.

>> randn{3)%Квадратная матрица случайных чисел

ans =

-0.4326 0.2877 1.1892

-1.6656 -1.1465 -0.0376

0.1253 1.1909 0.3273

>> randn(3,1)%Матрица-столбец случайных чисел

ans =

0.1746

-0.1867

0.7258

>> randn %Случайное число

ans =

-0.5883

■ linspace(a, b [, n] ) - возвращает массив из 100 или из n точек, равно­мерно распределенных между значениями а и b;

Листинг 34.

>>linspace(l,10,10)

ans =

1 2 3 4 5 6 7 8 9 10

>> linspace(l,10,20)

ans =

Columns 1 through 10

1.0000 1.4737 1.9474 2.4211 2.8947 3.3684 3.8421 4.3158 4.7895 5.2632

Columns 11 through 20

5.7368 6.2105 6.6842 7.1579 7.6316 8.1053 8.5789 9.0526 9.5263 10.0000

■ logspace{a, b [, n] ) - формирует массив из 50 или из n точек, равно­мерно распределенных в логарифмическом масштабе между значениями 10а и 10b; функция linspace (a, pi) дает равномерное распределение 50 точек в интервале от 10а до pi;

Листинг 35.

>> logspace(l,2,10)

ans =

10.00 12.9155 16.6810 21.5443 27.8256 35.9381 46.4159 59.9484 77.4264 100.00

>> logspace(l,pi)

ans =

Columns 1 through 10

10.0000 9.7665 9.5384 9.3157 9.0981 8.8856 8.6781 8.4755 8.2776 8.0843

Columns 11 through 20

7.8955 7.7111 7.5310 7.3551 7.1834 7.0156 6.8518 6.6918 6.5355 6.3829

Columns 21 through 30

6.2338 6.0883 5.9461 5.8072 5.6716 5.5392 5.4098 5.2835 5.1601 5.0396

Columns 31 through 40

4.9219 4.8070 4.6947 4.5851 4.4780 4.3734 4.2713 4.1715 4.0741 3.9791

Columns 41 through 50

3.8861 3.7953 3.7067 3.6201 3.5356 3.4530 3.3724 3.2936 3.2167 3.14151

■ repmat (A, n [, m] ) - формирует матрицу, состоящую из n на n или из n на m копий матрицы А; если А - скаляр, то формируется матрица, элементы которой равны значению А;

Листинг 36.

>>А=1 2;3 4]

А =

1 2

3 4

>> repmat (А,2)%Матрица из 4-х копий матрицы А

ans =

1 2 1 2

3 4 3 4

1 2 1-2

3 4 3 4

>> repmat(A,2,1)%Матрица из 2-х копий матрицы А

ans =

1 2

3 4

1 2

3 4

>> repmat(А,1,1)%Матрица из 1-й копии матрицы А

>> %Команда repmat (А,1) даст аналогичный результат

ans =

1 2

3 4

>> С=5

С =

5

>> repmat(С,3)%Матрица из 9-и копий матрицы С, причем С - скаляр ans =

5 5 5

5 5 5

5 5 5

>> B=repmat(С,[2,1,2])%Многомерный массив

В(:,:,1) =

5

5

В(:,:,2) =

5

5

■ reschape(A, m, n) - возвращает матрицу размерностью m*n, сформиро­ванную из А путем последовательной выборки по столбцам; если А не имеет m на n элементов, то выдается сообщение об ошибке;

Листинг 37.

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

А = %Матрица А размерностью 4x3=12

1 3 5

2 4 6

7 8 9

5 2 1

>> reshape(A,3,2) %Попытка создать из матрицы А матрицу размерностью 3x2=6

%дает сообщение об ошибке

??? Error using -=> reshape

То RESHAPE the number of elements must not change.

%Примеры формирования различных матриц из матрицы А

>>reshape(A,3,4) %13x4=12

ans =

1 5 8 6

2 3 2 9

7 4 5 1

>> reshape(A,2,6)%2х6=12

ans =

1 7 3 8 5 9

2 5 4 2 6 1

>>reshape{A, l,12)%lxl2=12

ans =

1 2 7 5 3 4 8 2 5 6 9 1

>> reshape(A,6,2)%6x2=12

ans =

1 8

2 2

7 5

5 6

3 9

4 1

>> B=reshape(A,3,2,2) %3x2x2=12

B(:,:,l) =

1 5

2 3

7 4

B(:,:,2) =

8 6

2 9

5 1

■ cat(n, А, В, [С,...]) - объединяет матрицы А и В или все входящая матрицы А,В,С,...;

Листинг 38.

>> А=[1 2;3 4];

>> В=[5 6;7 8];

>> cat(2,А,В)%0бъединение матриц

ans =

1 2 5 6

3 4 7 8

>> [А,В] %Объединение матриц аналогично cat{2,A,B)

ans =

1 2 5 6

3 4 7 8

>> cat(l,A,B) %Объединение матриц

ans =

1 2

3 4

5 6

7 8

>> [А;В] %Объединение матриц, аналогично cat(l,A,B)

ans =

1 2

3 4

5 6

7 8

■ rot90(A [, к]) - осуществляет поворот матрицы А на 90° или величие 90-к, где к - целое число;

Листинг 39.

>> А=[1 2 3;4 5 6]

А =

1 2 3

4 5 6

>> В=rоt90(А)%Матрица В получена в результате поворота А на 90 градусов

B=

3 6

2 5

1 4

>> C=rot90(B)%Матрица С получена в результате поворота В на 90 градусов

С =

6 5 4

3 2 1

>> D=rot90(A,2) %Матрица В получена в результате поворота А на 180 градусов

D =

6 5 4

3 2 1

■ tril (А [, к]) - формирует из матрицы А нижнюю треугольную матри­цу, начиная с главной или с к-й диагонали;

Листинг 40.

>> А=[1 2 3;4 5 6;7 8 9]

А =

1 2 3

4 5 6

7 8 9

>>tril(А)%Нижняя треугольная матрица,начиная с главной диагонали

ans =

1 0 0

4 5 0

7 8 9

>> tril(A,0)%To же, что и tril{A)

ans =

1 0 0

4 5 0

7 8 9

>> tril(А,1)%Нижняя треугольная матрица, » %начиная с первой диагонали (выше главной)

ans =

1 2 0

4 5 6

7 8 9

>> tril(A,-2) %Нижняя треугольная матрица, » %начиная со второй диагонали (ниже главной)

ans =

0 0 0

0 0 0

7 0 0

■triu (А [, к])- формирует из матрицы А верхнюю треугольную матри­цу, начиная с главной или к-й диагонали;

Листинг 41.

>> А=[1 2 3;4 5 6;7 8 9];

>>triu(A)%Bepхняя треугольная матрица

ans =

1 2 3

0 5 6

0 0 9

>> triu(A,2) %Верхняя треугольная матрица,

>> %начиная со второй диагонали (выше главной)

ans =

0 0 3

0 0 0

0 0 0

>> triu(A,-l) )%Верхняя треугольная матрица,

>> %начиная с первой диагонали (ниже главной)

ans =

1 2 3

4 5 6

0 8 9

■ size(A) -определяет число строк и столбцов матрицы А, результатом е работы является вектор [n; m];

Листинг 42.

>> А=[2 4;1 3;7 9;5 8];

» size(A)%Paзмерность матрицы А

ans =

4 2

>> V=[2 4 6 8 1 3 5 7];

>> size(V)%Размерность вектора-строки V

ans =

1 8

>> size(V)%Размерность вектора-столбца V

ans =

8 1

>> zeros(size(A))%Формирование нулевой матрицы такого же размера, как и А

ans =

0 0

0 0

0 0

0 0

>> ones(size(V)) %Формирование единичного вектора такого же размера-как и V

ans =

11111111

■ prod (А [,к]) - формирует вектор-строку или вектор-столбец, в зависи­мости от значения к, каждый элемент которой является произведением элементов соответствующего столбца или строки матрицы А; если значе­ние параметра к в конструкции отсутствует, то по умолчанию вычисля­ются произведения столбцов матрицы; понятно, что результатом рабо­ты функции prod (prod (A) ) будет произведение всех элементов матрицы;

Листинг 43.

>> A=[l 3;2 4];

>> prod (А) %Произведения столбцов матрицы

ans =

3 8

>> prod(A,1) %Произведения столбцов матрицы

ans =

3 8

>> prod(A,2) %Произведения строк матрицы

>> prod(prod(A)) %Произведения всех элементов матрицы

ans =

24

■ cumprod(A) -отличается от функции cumprod(V) тем, что операции, опи­санные для нее, применяются либо к строкам, либо ко столбцам матри­цы А, в зависимости от значения параметра к; по умолчанию накаплива­ние произведения выполняется по столбцам матрицы А;

Листинг 44.

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

>> cuntprod(A,l)

ans =

1 2 0 -1

-2 2 0 -3

-4 0 0 -3

>> cumprod(A,2)

ans =

1 2 0 0

-2 -2 2 6

2 0 0 0

■ sum (A [, k]) - формирует вектор-строку или вектор-столбец (в зависимо­сти от значения к), каждый элемент которой является суммой элементов соответствующего столбца или строки матрицы А; если значение параметра к в конструкции отсутствует, то по умолчанию вычисляются суммы столбцов матрицы; произведение всех элементов матрицы вычисляется при помощи функции sum (sum (A) );

Листинг 45.

>> А=[1 2 3;1 2 3]

А =

12 3

12 3

>> sum(A,l) %Сумма элементов матрицы по столбцам

ans =

2 4 6

>> sum(A,2) %Сумма элементов матрицы по строкам

ans =

6

6

>> sum(sum(A)) %Сумма всех элементов матрицы

ans =

12

■ cumsum(A, [k]) -отличается от функции cumsum (V) тем, что операции, описанные для нее, применяются либо к строкам, либо ко столбцам мат­рицы А, в зависимости от значения параметра к; по умолчанию результа­том работы функции является матрица кумулятивных сумм столбцов мат­рицы А;

■ diff (А) -из матрицы А размерностью n*m формирует матрицу размер n-1*m, элементы которой представляют собой разность между элементами соседних строк А;

Листинг 46.

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

>>diff(A)

ans =

-3 -1 -1 4

4 -1 2 -2

■ min(A) - формирует вектор-строку, каждый элемент которой является наименьшим в соответствующем столбце матрицы А, определить положе­ние этих элементов в матрице можно, если вызвать функцию в формате [n, m] =min (А), где n - вектор минимальных элементов столбцов матри­цы A, am- вектор номеров строк матрицы А, в которых находятся эти элементы; конструкция min(min(A)) позволит отыскать минимум среди всех элементов матрицы (листинг 47); вызов функции в виде min(A, [] , к) или [n, m]=min(A, [] , к) позволит направлять поиск, в частно­сти отыскать минимальные элементы и их положение в строках матри­цы А (листинг 48); и, наконец, функция min (А, В) сформирует матрицу (листинг 6. 49) из строк min (А) и min (В);

Листинг 47.

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

А =

1 2 0 -1

-2 1 -1 3

2 0 1 1

>> min(А)%Минимальные элементы » %в столбцах матрицы А

ans =

-2 0 -1 -1

>> [n,m]=min(A)

n = %Минимумы в столбцах

-2 0 -1 -1

m = %номера их строк

2 3 2 1

>> min(min(А))%Наименьший элемент матрицы А

ans =

-2

Листинг 48.

>> min(A,[],1)%То же что и min(A), то есть формирует вектор-строку,

>> %каждый элемент которой равен минимальному в соответствующем >> %столбце матрицы А

ans =

-2 0 -1 -1

>> min(A,[],2)%Формирует вектор-столбец, каждый элемент которого,

>> %равен минимальному в соответствующей строке матрицы А

ans =

-1

-2

0

>> [n,m]-min(A,[],2)

n=%Минимумы по строкам

-1

-2

0

>> %и их положение в матрице, то есть номера столбцов,

>> %в которых они находятся

m =

4

1

2

>> min(A')%Дает те же значения, что и min(А,[],2),

>> %только в виде вектора-строки

ans =

-1 -2 0

Листинг 49.

>> А=[1 2;3 4];

>> В=[0 3;7 1];

>> min(A,B)

ans =

>> %Первая строка результирующей матрицы

>> %равна минимумам столбцов матрицы А, а вторая - матрицы В

0 2

3 1

■ max (А) - формирует вектор-строку, каждый элемент которой является наибольшим в соответствующем столбце матрицы А; действие функций [n, m]= max (A), max (max (A)), max (A, [], k),[n, m] = max(A, [], k), max (A, В) понятно из примеров листинга 50;

Листинг 50.

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

>>mах(А)%Наибольшие элементы столбцов матрицы А

ans =

  1. 2 1 3

>> [n,m]=max(A) %n - максимумы по столбцам, m - их номера в строках

n =

2 2 1 3

m =

3 1 3 2

>> max(max(А))%Наибольший элемент матрицы А

ans =3

>> max(А,[],2) %Наибольшие элементы строк матрицы А

ans =

2

3

2

>>max(A')%To же что и mах(А,[],2), но в результате вектор-строка ans =

2 3 2

>> А=[1 2;3 4];

>> В=[0 3;7 1];

>> mах(А,В)

>>%Первая строка результирующей матрицы

>>%равна максимумам столбцов матрицы А, а вторая - матрицы В

ans =

1 3

7 4

■ mean (A, [k]) - формирует вектор-строку или вектор-столбец, в зависи­мости от значения к, каждый элемент которого является средним значе­нием элементов соответствующего столбца или строки матрицы А, если значение параметра к в конструкции отсутствует, то по умолчанию вы­числяются средние значения столбцов матрицы; среднее значение всех элементов матрицы вычисляет функция mean (mean (А) );

Листинг 51.

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

>> mean(А)%Средние значения по столбцам

ans =

0.3333 1.0000 0 1.0000

>> mean{А,2]%Средние значения по строкам

ans =

0.5000

0.2500

1.0000

>> mean(mean(A))%Среднее всех элементов матрицы

ans =

0.5833

■ sort (A) - выдает матрицу того же размера, что и А, каждый столбец ц торой упорядочен по возрастанию;

Листинг 52.

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

>> sort(А)%Матрица, каждый столбец которой упорядочен по возрастанию

ans =

-2 0 -1 -1

1 1 0 1

2 2 1 3

>> sort(А'}%Матрица, каждый столбец которой представляет собой » %упорядоченную по возрастанию строку исходной матрицы А ans =

-1 -2 0

0 -1 1

1 1 1.

2 3 2

>> -sort(-A) %Матрица, каждый столбец которой упорядочен по убыванию

ans =

2 2 1 3

1 1 0 1

-2 0 -1 -1

>> -sort(-A') %матрица, каждый столбец которой представляет собой

>> %упорядоченную по убыванию строку исходной матрицы А

ans =

2 3 2

1 1 1

0 -1 1

-1 -2 0

■ sqrtm(A)- относится к так называемым матричным функциям и возвра­щает матрицу X, для которой Х*Х=А;

Листинг 53.

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

А =

1 0 -3

0 1 2

2 0 -1

>> X=sqrtm(A)

1.5302 -0.0000 -1.4186

-0.3535 1.0000 0.9457

0.9457 -0.0000 0.5845

>> Х*Х %Проверка Х*Х-А

ans =

1.0000 -0.0000 -3.0000

-0.0000 1.0000 2.0000

2.0000 -0.0000 -1.0000

>> C=sqrt(А}%Извлечение квадратного корня из каждого элемента матрицы А

С =

1.0000 0 0 + 1.732i

0 1.0000 1.4142

1.4142 0 0 + l.OOOOi

>> С*С

ans =

1.0000 + 2.4495i 0 -1.7321 + 1.73211

2.0000 1.0000 1.4142 + 1.41421

1.4142 + 1.41421 0 -1.0000 + 2.4495i

■ expm(A) и logm(А)-взаимообратные матричные функции, первая вычис­ляет матричную экспоненту еА, а вторая выполняет логарифмирование по основанию е;

Листинг 54.

>> A=[1 0 0;-1 2 0;2 1 -1];

А =

1 0 0

-1 2 0

2 1 -1

>> В=ехрm(А)

В =

2.7183 0 0

-4.6708 7.3891 0

1.1852 2.3404 0.3679

>> logm(B)

ans =

1.0000 0.0000 -0.0000

-1.0000 2.0000 -0.0000

2.0000 1.0000 -1.0000

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]