§ 2. Вектор-рядки і вектор-стовпці

Масиви є одним із найпоширеніших способів зберігання даних і використовуються у всіх мовах програмування та обчислювальних пакетах. До особливостей роботи з масивами MatLab відноситься те, що одновимірний масив може бути вектор-рядком або вектор-стовпцем. Якщо спосіб представлення масиву важливий, то ми будемо підкреслювати, про рядок або стовпчик йдеться. Якщо ж це несуттєво, то говоритимемо про вектор-рядки і вектор-стовпці просто як про вектори або одновимірні масиви (одномірний масив у MatLab є двовимірний, у якого один з розмірів дорівнює одиниці).

Для введення вектора використовуються квадратні дужки, елементи вектора відокремлюються один від одного:

крапкою з комою, якщо потрібно отримати вектор-стовпець;

пробілом або комою, якщо необхідно розмістити елементи у векторному рядку.

Занесіть векторні стовпці та векторні рядки

множення

вектора

у відповідні масиви, набравши в командному рядку:

Крапка з комою в кінці кожного рядка поставлена ​​для придушення виведення на екран, вона ніяк не пов'язана з крапкою з комою, яка є роздільником елементів у векторних стовпцях. Виведіть у командне вікно значення змінних a, b, u, v і подивіться, як MatLab відображає вміст векторних рядків та векторних стовпців. Отримайте інформацію про змінних за допомогою команди whos. У попередньому параграфі було помічено, що числа зберігаються у двовимірних масивах, кожен із розмірів яких дорівнює одиниці. Вектори також представляються двовимірними масивами, один із розмірів яких дорівнює одиниці.

Для отримання довжини вектора призначена функція length, вектор вказується як її вхідний аргумент:

Вектор-стовпці з однаковим числом елементів можна складати та віднімати один з одного за допомогоюзнаків "+" та "-". Аналогічне вірно і для векторних рядків:

Складання та віднімання вектор-рядка та вектор-стовпця або векторів різних розмірів призводить до помилки. Операція призначена для множення векторів за правилом матричного множення. Оскільки MatLab розрізняє вектор-рядки та вектор стовпці, то допустимо або множення вектор-рядки на такий же по довжині вектор-стовпець (скалярний твір), або множення вектор-стовпця на вектор-рядок (зовнішнє твір, в результаті якого виходить прямокутна матриця) . Скалярний добуток двох векторів повертає функцію dot, а векторний — cross:

Зрозуміло, векторний твір визначено лише для векторів із трьох елементів.

Для операції транспонування зарезервовано апостроф '. Якщо вектор містить комплексні числа, то операція призводить до комплексно-сполученого вектора. При обчисленні скалярного і векторного творів функціями Crossіdot не обов'язково стежити за тим, щоб обидва вектори були або стовпцями, або рядками. Результат виходить правильний, наприклад, при зверненні c = cross (a, b '), тільки стане вектор-рядком.

MatLab підтримує поелементні операції із векторами. Поряд з множенням за правилом матричного множення існує операція поелементного множення .*(точка із зірочкою). Ця операція застосовується до векторів однакової довжини і призводить до вектора тієї ж довжини, що вихідні, елементи якого дорівнюють творам відповідних елементів вихідних векторів. Наприклад, для векторів, введених вище, поелементне множення дає наступний результат:

Аналогічним чином працює поелементний поділ ./(крапка з косою межею). Крім того, операція. (точка зі зворотною косою рисою) здійснює зворотний поелементний поділ, тобтовиразиa./bіb.\aеквівалентні. Зведення елементів вектора ступеня, рівні відповідним елементам b, проводиться з використанням. Для транспонування вектор-рядків або вектор-стовпців призначене поєднання. (точка з апострофом). Операції' і.' для речових векторів призводять до однакових результатів. Не обов'язково застосовувати поелементні операції при множенні вектора на число та числа на вектор, поділ вектора на число, складання та віднімання вектора та числа. При виконанні, наприклад, операції a*2, результат являє собою вектор того ж розміру, що aa, з подвоєними елементами.

Вектори можуть бути аргументами вбудованих математичних функцій, таких, як sin, cos і т. д. В результаті виходить вектор з елементами, рівними значенню функції, що викликається від відповідних елементів вихідного вектора, наприклад:

Однак для обчислення складнішої функції від вектора значень, скажімо

векторів
,

вираз f = (v * sin (v) + v ^ 2) / (v + 1) викличе помилку вже при спробі множення v на sin (v). Справа в тому, що v є вектор-рядком довжиною чотири, тобто зберігається в двовимірному масиві розміром один на чотири. Так само представлений і sin(v), отже, множення за допомогою зірочки (за правилом матричного множення) позбавлене сенсу. Аналогічна ситуація виникає і при зведенні вектора v квадрат, тобто, фактично, при обчисленні v * v. Правильний запис виразу в MatLab вимагає використання поелементних операцій:

Часто потрібно обчислити функцію від вектора значень аргументу, що відрізняються один від одного на постійний крок. Для створення таких вектор-рядків передбачено двокрапку. Послідовність команд

призводить до заповнення наступних векторів:

-12.7922 3.1365 0.0997 0.1374 0.6744 1.2794 1.7832

Крок може бутинегативним, у разі початкове значення має бути більше, або дорівнює кінцевому щоб одержати непустого вектора. Якщо крок дорівнює одиниці, його можна не вказувати, наприклад:

-3 -2 -1 0 1 2 3 4

Зрозуміло, що для заповнення вектор-стовпця елементами з постійним кроком слід транспонувати вектор-рядок. Створення векторів за допомогою двокрапки та вміння проводити поелементні операції необхідно для візуалізації масивів даних, про що буде сказано в наступних розділах.

MatLab має великий набір вбудованих функцій для обробки векторних даних, частина з них наведена в табл. 2.1. Повний список наявних функцій виводиться в командне вікно за допомогою help datafun, а для отримання детальної інформації про кожну функцію потрібно вказати її ім'я як аргумент команди help. Зверніть увагу, що ряд функцій допускає звернення до них як з одним, так і з двома вихідними аргументами. У разі кількох вихідних аргументів вони полягають у квадратні дужки та відокремлюються один від одного комою.

Дуже часто потрібно обробити лише частину вектора або звернутися до деяких його елементів. Розберемо правила MatLab, якими проводиться індексація векторних даних. Для доступу до елемента вектора необхідно вказати номер у круглих дужках відразу після імені змінної, в якій міститься вектор. Наприклад, сума першого і третього елементів вектора знаходиться за допомогою виразу

Звернення до останнього елемента вектора можна зробити з використанням end, тобто v (end) і v (length (v)) призводять до однакових результатів.