У вас вопросы?
У нас ответы:) SamZan.net

Формирование векторов и матриц В MtLb можно использовать скаляры векторы и матрицы

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 3.2.2025

 Матрицы

1. Формирование векторов и матриц

В MatLab можно использовать скаляры, векторы и матрицы.

Массив - упорядоченная, пронумерованная совокупность однородных данных.

Матрица — это массив, представленный в виде прямоугольной таблицы, каждый элемент которой имеет индексы, определяющие однозначно его положение в матрице.

Вектор – это одномерная матрица. Без особых указаний со стороны пользователя это матрица-столбец.

Скаляр рассматривается как матрица [1x1],

Для ввода скаляра достаточно присвоить его значение какой-то переменной.

Для ввода массивов (векторов или матриц) их элементы заключают в квадратные скобки.

При вводе вектора-строки элементы отделяются пробелами или запятыми.

При вводе вектора-столбца элементы отделяются точкой с запятой.

При вводе матрицы  элементы строк отделяются пробелами или запятыми, элементы столбцов разделяют точкой с запятой.

MatLab различает строчные и прописные буквы. Количество воспринимаемых  в MatLab символов в имени переменной составляет 31.

Для ввода длинных формул или команд в командную строку следует поставить три точки (подряд, без пробелов), нажать клавишу <Enter> и продолжить набор формулы на следующей строке. Так можно разместить  выражение на нескольких строках.

  1.  Формирование векторов

1). Вектор - строка

V1=[1 2 3 4]       % или  V2=[1,2,3,4] или  V2=1:4

2). Вектор - столбец

V1=[1; 2; 3; 4]

V3=[2+2/(3+4),exp(5),sqrt(10)]%выражения

V1(2)%вызов элементов вектора

V3(1)

t=V2(3)

V3

Знак точка с запятой в конце ввода предотвращает вывод  вектора (матрицы) на экран;

%сформировать вектор, элементы которого расположены в арифметической прогрессии x=xn:h:xk;

X=1:2:20;

  1.   Формирование матриц

%1 способ

M=[1,2,3;4,2,5;7,8,9]      %или M=[1 2 3;4 5 6;7 8 9];

. . . . . . . . . .

M    %вывод на экран

%2 способ

Matr=[1:7;11:17;21:27;31:37]

%3 способ

функция magic(n) задает магическую матрицу nxn все ее элементы не превышают n^2;

суммы всех элементов столбцов, строк, диагонали равны 34 (для n=4);

 M1=magic(4)

%4 способ

 функции создания массивов со случайными элементами rand: rand(n)  rand(m,n)генерируют матрицу (nxn)или(mxn) с элементами, распределенными по равномерному закону в промежутке (0,1);

  YR=rand(4,3)

проверить равномерность распределения случайных чисел можно, построив большое число точек со случайными координатами;

 X=rand(1000,1);

 Y=rand(1000,1);

 plot(X,Y)

 

функция randn(n), randn(mxn)  генерируют матрицу nxn  (mxn) с элементами, распределенными по нормальному закону с мат. Ожиданием = 0 и ср. кв. отклонением = 1;

YN=randn(4,3)

            для проверки распределения построим гистограмму;

Y=randn(1000,1);

hist(Y,100)

строится гистограмма из 100 столбцов для 1000 случайных чисел с нормальным законом распределения;

Y1=randn(4,3)*10          %все элементы умножаются на 10;

a=3; b=20;                %интервал [a;b]

Y2=rand(4,3)*(b-a)+a
%генерируется матрица (4x3)с числами в интервале [20;3];

 

 %5 способ

функция eye(n), eye(m,n) возвращает единичную матрицу nxn или mxn 

t=eye(3)

t2=eye(4,3)

%6 способ

функция ones(n), ones(m,n) возвращает матрицу nxn или mxn, все элементы которой единицы;

H=ones(3,4)

 %7 способ

функция zeros(n), zeros(m,n) возвращает матрицу nxn или mxn, все элементы которой нули;

D=zeros(3,2)

%8 способ

По формуле.

        2. Действия со строками и столбцами

M1=magic(4)

Переприсваивание элемента M(2,2)

M(2,2)=10       

Выражение M(i) дает доступ к элементам матрицы, развернутым в один столбец

M(5)

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

Переставить столбцы в указанном порядке

B=A(:,[4,1,2,5,3])

Переставить строки в указанном порядке

B=A([2,5,1,4,3],:)

выделить 1,2,3 столбцы, строки переставить в указанном порядке

B=A([2,5,1,4,3],1:3)

Транспонирование квадратной матрицы

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

MT=M'

Транспонирование не квадратной матрицы

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

MT2=M2'

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

N=[1 4 3 6]

NT=N' 

%выделение подматрицы:

B=magic(6)

B(1:2,:)      %первые две строки, все столбцы;

B(1:2,:)=0     %обнулить первые две строки

Выделение столбцов со 2-го по 5-й, 6 строк:

C1=B(:,2:5)

Выделение подматрицы с 2-й по 5-ю строки и с 3-го по 5-й столбец

C2=B(2:5,3:5)

Выделение подматрицы с 1-й по 3-ю строки и с 2-го по последний столбец;

C3=B(1:3,2:end)

%Удаление столбцов и строк матрицы

B=magic(5)

B(:,2)=[]    %Удалим 2-й столбец

B(2,:)=[]    %Удалим 2-ю  строку

Помощь:

help elfun – вывести список всех элементарных математических функций.

help specfun 

help elmat – вывод более сложных математических и матричных функций.

3. Арифметические операторы и функции MATLAB

Таблица 1. Арифметические операции

  Название       Оператор

Синтаксис

Плюс                               +

М1+М2

Унарный плюс                       +

Минус                              -

М1-М2

Унарный минус                      -

Матричное умножение               *

М1*М2

Поэлементное умножение массивов   .*

А1*А2

Возведение матрицы в степень       ^

М1^х

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

А1.^х

Обратное (справа налево) деление матриц                             \

M1\M2

Деление матриц слева направо      /

М1/М2

Поэлементное деление массивов справа налево                             .\

А1.\А2

Поэлементное деление массивов слева направо                           ./

А1./А2

Транспонирование матрицы          A’     

Система MATLAB работает как с действительными, так и с комплексными числами.

Таблица 2. Элементарные алгебраические функции

Функция

Описание

abs(x),

Вычисление абсолютного значения действительного числа x.

sqrt(x)

Вычисление квадратного корня  

round(x)

Округление до целого.

fix(x)

Округление до ближайшего целого в сторону нуля. 

floor(x)

Округляет до меньшего целого

ceil(x)

Округляет до большого целого

rem(x, y)

Вычисление остатка от деления x на y.

exp(x)

Вычисление е в степени x.

log(x)

Вычисление натурального логарифма числа x.

log10(x)

Вычисление десятичного логарифма числа x.

factorial(x)

Вычисляет факториал числа х

pow2(x)

Возводит двойку в степень х

pi

Выдает число пи

lcm(x,y,z) 
gcd(x,y,z)

наименьшее общее кратное,

наибольший общий делитель

Функция

Описание

abs(x),

Вычисление абсолютного значения действительного числа x.

sqrt(x)

Вычисление квадратного корня  

round(x)

Округление до целого.

fix(x)

Округление до ближайшего целого в сторону нуля. 

floor(x)

Округляет до меньшего целого

ceil(x)

Округляет до большого целого

mod(x,y)

остаток от деления нацело с учетом знака

rem(x, y)

Вычисление остатка от деления x на y.

exp(x)

Вычисление е в степени x.

log(x)

Вычисление натурального логарифма числа x.

log2(x)

Вычисление логарифма по основанию 2

log10(x)

Вычисление  логарифма по основанию 10

factorial(x)

Вычисляет факториал числа х

pow2(x)

Возводит двойку в степень х

pi

Выдает число пи

lcm(x,y,z) 
gcd(x,y,z) 

наименьшее общее кратное,

наибольший общий делитель

Система

MATLAB предоставляет возможности для вычисления следующих тригонометрических и обратных тригонометрических функций переменной x (табл.3).

Таблица 3. Тригонометрическиe функции

Функция

Описание

sin(x)

Вычисление синуса

cos(x)

Вычисление косинуса

tan(x)

Вычисление тангенса

asin(x)

Вычисление арксинуса

acos(x)

Вычисление арккосинуса

atan(x)

Вычисление арктангенса

atan2(y, x)

Вычисление арктангенса по координатам точки

ПРИМЕРЫ:

1).Арифметические операторы и функции MATLAB

M1=[1 2;3 4]

M2=[5 6;7 8]

M=M1+M2

M=M1-M2

M1*2     %умножение на скаляр

M1.*M2   %поэлементное умножение матриц (массивов)

M1*M2    %матричное умножение

M1./M2   %поэлементное деление матриц (массивов)

M1/M2    %Деление матриц слева направо  

M1^2     %возведение матрицы в степень (M1*M1 2 раза)

M1.^2    %Поэлементное возведение матрицы (массива) в степень      

C1=8/2   %обычное деление

C2=8\2   %это 2/8=0.25; Используется в СЛАУ

M1\M2    %Обратное (справа налево) деление матриц  

T=M1'    %транспонирование матрицы

n=(0:5)  %вектор-строка

n=(0:5)' %транспонированный вектор (столбец)

tabl=[n n.^2 2.^n] %создает таблицу квадратов и степеней двойки

 

2). Встроенные функции

X=[1 2 3]

Y1 = log(X)%returns the natural logarithm of the elements of X.

Y2 = log2(X)%computes the base 2 logarithm of the elements of X.

Y3 = log10(X) %returns the base 10 logarithm of the elements of X.

Y4 = exp(X) %returns the exponential for each element of X.

Y5=sqrt(X)%корень квадратный из элементов матрицы (вектора)

%Матрицы

Z=[10 25 34;15 36 27;18 11 37]

Y1 = log(Z)

Y5=sqrt(Z)

3).Функции обработки матриц

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

b=[1 2 5 3 7 8 5 4 10]

abs(A)  %модуль

det(A)  %определитель матрицы

inv(A)  %обратная матрица

diag(A) %главная диагональ матрицы

sum(A)  %сумма по столбцам (sum(A,1))

sum(A,2) %сумма по строкам

sum(diag(A)) %сумма элементов главной диагонали матрицы (след)

trace(A) % след матрицы

S=sum(sum(A))%сумма матрицы

prod(A,1)%произведение элементов массива в столбцах (по умолчанию prod(C))

prod(A,2)%произведение элементов массива в строках

A'          %транспонирование матрицы

sum(A')     %сумма столбцов транспонированной матрицы (аналог sum(A,2) вектор-строка)     

sum(A')'    %аналог sum(A,1) вектор-столбец  

ndims(A)    %размерность массива

size(A)     %размер массива

%вектор A хранится в двумерном массиве размерностью три на три.

length(b)   %длина вектора

4).Функции max() и min().

disp('максимальный элемент массива')

max(A) - %возвращает наибольший элемент, если А -вектор;

        или возвращает вектор-строку, содержащую
        максимальные элементы каждого столбца,
        если А -матрица.

max(A,[],dim)  %возвращает наибольший элемент по столбцам
              (dim=1)или по строкам (dim=2)

C2=max(A,[],1)

C3=max(A,[],2)

C4=max(max(A,[],2))   %возвращает наибольший элемент матрицы

[C,I]=max(A) %возвращает наибольшие элементы и вектор их

             индексов

disp('минимальный элемент массива')

C1=min(A)

 

C2=min(A,[],1)

C3=min(A,[],2)

[C,I]=min(A)

% векторы

d1=[1 2 5 4 3]

d2=[4 8 7 3 1] C4=min(d1,d2) %сравнивает поэлементно векторы и возвращает меньший

%Функция mean(A)- возвращает арифметическое среднее значение

%элементов массива, если А -вектор;

%или возвращает вектор-строку, содержащую средние значения

%элементов каждого столбца, если А -матрица.

A=[1 2 6 4 8;6 7 13 5 4;7 9 0 8 12;6 6 7 1 2]

mean(A)

%mean(A,dim)возвращает средние значения по столбцам (dim=1)

%или по строкам (dim=2)

mean(A,2)

%median(A), median(A,dim)- возвращает медиану 

A=magic(6)

M1=median(A)

M2=median(A,2)

A=[ 1 9 3 7 4 5]

M1=mean(A)

M1 =

   4.8333

vpa(M1,3)    % Вывод с точностью до 3 значащих цифр

ans =

4.83

M3=std(A,1) %стандартное отклонение с усреднением 1/n

M4=std(A)   %стандартное отклонение с усреднением 1/(n-1)

std(X) возвращает стандартное отклонение элементов массива,

если А -вектор

или стандартное отклонение элементов каждого столбца,

если А -матрица.

%Функция fliplr(A) переставляет столбцы матрицы

                  относительно вертикальной оси

F=[1,2,3;5,45,3]

fliplr(F)

%Функция flipud(A) переставляет строки матрицы

                  относительно горизонтальной оси

F1=[3,2,12;6,5,4]

flipud(F1)

F2=magic(5)

flipud(F2)

5).Сортировка

disp('Сортировка элементов массива по возрастанию ') )%вывод комментария на экран disp(‘  ‘)

sort(b)

sort(A)        %сортировка по столбцам по возрастанию

sort(A,2)      %сортировка по строкам по возрастанию

-sort(-A)      %сортировка по столбцам по убыванию

-sort(-A,2)    %сортировка по строкам по убыванию

%Возвращает отсортированный массив и массив индексов элементов в исходном массиве

[b2,INDEX]=sort(b)

6).Округление до целого

F=[2.123 -4.999 7.513 3.001]

fix(F)   %Отсекает дробную часть без округления

round(F) %Округляет число до целого по всем правилам округления

floor(F) %Округляет до меньшего целого

ceil(F)  %Округляет до большого целого

 

7).Тригонометрические функции

sin(F)

cos(F)

tan(pi/4)

cot(pi/4)

Операции отношения и логические операции

Над массивами можно выполнять

операции поэлементного отношения : 

A < B , A <= B , A > B , A>= B  (только для действительных частей),

A == B, A~=B        (равно/не равно - для действительных и мнимых частей),

которые возвращают массив с единицами (истина) и нулями (ложь) той же размерности.

Примеры

>>A=magic(4)

A =

   16     2     3    13

    5    11    10     8

    9     7     6    12

    4    14    15     1

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

B =

    2     3     4     5

    5     4     3     2

    1     2     3     4

    6     5     4     3

>>A<B

ans =

    0     1     1     0

    0     0     0     0

    0     0     0     0

    1     0     0     1

>>A==B

ans =

    0     0     0     0

    1     0     0     0

    0     0     0     0

    0     0     0     0

>>A>=B

ans =

    1     0     0     1

    1     1     1     1

    1     1     1     1

    0     1     1     0

>>A~=B

ans =

    1     1     1     1

    0     1     1     1

    1     1     1     1

    1     1     1     1

 

    

 Логические операции

Аналогично реализуются и логические операции: 

~A         отрицание,

A & B      конъюнкция (логическое умножение - И),

A|B        дизъюнкция (логическое сложение - ИЛИ).

Примеры

>>A1=[0     2     3    13

     5     0    10     8

     9     7     0    12

     4    14    15     0]

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

B =

    2     3     4     5

    5     4     3     2

    1     2     3     4

    6     5     4     3

>>~A1

ans =

    1     0     0     0

    0     1     0     0

    0     0     1     0

    0     0     0     1

>>A1&B

ans =

    0     1     1     1

    1     0     1     1

    1     1     0     1

    1     1     1     0

>>A1|B

ans =

    1     1     1     1

    1     1     1     1

    1     1     1     1

    1     1     1     1

    

>>who

 

Your variables are:

 

A    A1   B    ans  

 

>>whos

 Name      Size            Bytes  Class      Attributes

 

 A         4x4               128  double               

 A1        4x4               128  double               

 B         4x4               128  double               

 ans       4x4                16  logical              

 

 

clc – очистка экрана

who – вывод имен активных переменных;

  whos – просмотра содержимого рабочей среды.

clear – удаление всех переменных;

clear x – удаление переменной х;

help elfun – вывести список всех элементарных математических функций.

help specfun 

help elmat – вывод более сложных математических и матричных функций.

help format    Информация о форматах

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

Для изменения приоритета операций в математических выражениях используются круглые скобки. Степень вложения скобок не ограничивается.

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

» v = [4 6 8 10];
» s = v + 1.2
s =
5.2000  6.2000  9.2000  11.2000


» r = 1.2 - v
r =
-2.8000  -4.8000  -6.8000  -8.8000


» r1 = v - 1.2
r1 = 2.8000 4.8000  6.8000  8.8000

Умножать вектор на число можно как справа, так и слева:

» v = [4 6 8 10];
» p = v*2


р =.
8   12   16   20


» pi  = 2*v
pi =
8   12   16   20

Делить при помощи знака / можно вектор на число:

» р = v/2
p =
2   3   4   5

Попытка деления числа на вектор приводит к сообщению об ошибке:

» р = 2/v


??? Error using ==> /
Matrix dimensions must agree.

Если требуется разделить число на каждый элемент вектора и записать результат в новый вектор, то следует использовать операцию ./

» w = [4 2 6];
» d = 12./w
d =
3  6  2

Все вышеописанные операции применимы как к вектор-строкам, так и к вектор-столбцам..


Особенность MatLab представлять все данные в виде массивов является очень удобной. Пусть, например, требуется вычислить значение функции sin сразу для всех элементов вектора с (который хранится в массиве с) и записать результат в вектор d. Для получения вектора d достаточно использовать один оператор присваивания:

» d = sin(c)

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

Из элементов массива можно формировать новые массивы.

Для помещения определенных элементов вектора в другой вектор в заданном порядке служит индексация при помощи вектора. Запись в массив w четвертого, второго и пятого элементов v производится следующим образом:

>> v = [1.3 3.6 7.4  8.2 0.9];

>> ind = [4 2 5];

>> w = v(ind)

w =

   8.2000    3.6000    0.9000

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

» w = [0.1 2.9 3.3 5.1 2.6 7.1 9.8];
» w(2:6) = 0;
» w
w =
0.1000  0  0  0  0  0  9.8000

Присваивание  w(2:6) = 0  эквивалентно последовательности команд
w(2) = 0; w(3)=0; w(4)=0; w(5)=0; w(6)=0.
Индексация при помощи двоеточия оказывается удобной при выделении части из большого объема данных в новый массив:

» w - [0.1 2.9 3.3 5.1 2.6 7.1 9.8];
» wl = w(3:5)
wl =
3.3000   5.1000   2.6000

Составьте массив w2, содержащий элементы w кроме четвертого. В этом случае удобно использовать  двоеточие и сцепление строк:

» w2 = [w(l:3)  w(5:7)]
w2 =

0.1000  2.9000  3.3000  2.6000  7.1000  9.8000

PAGE  15




1. евроинтеграции России
2. МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ МАШИНОСТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ МАМИ Институт экономики и управления
3. складна і багатогранна категорія яка виражає всю сукупність суспільних відносинекономічних соціальних п
4. тема абсолютно твердое тело
5. Современные образовательные технологии в учебном процессе начальной школы
6. .ru] @BookId- 13001 @BookInfo- Энгельс ФридрихПроисхождение семьи частной собственности и государства
7. ОТЧЕТ ПО ПРАКТИЧЕСКОЙ РАБОТЕ по дисциплине Теория информационных проце
8. Тема- Стилістичні можливості простого речення
9. 84 Акбашев 9-20 ЖЭУ22 99.
10. .1 Место нахождения цветника Указывается место нахождения закладки цветника его площадь.