Основні функції символьних даних.

Предыдущая12345678Следующая

В основі представлення символів у рядках лежить їхнє кодування за допомогою змінних таблиць кодів. Такі таблиці ставлять в однозначну відповідність кожному символові деякий код зі значенням від 0 до 255. Вектор, що містить рядок символів, у системі MATLAB задається в такий спосіб: S= 'Any Characters' - вектор, компонентами якого є числові коди, що відповідають символам.

До основних строкових функцій відносяться наступні:

char(X) — перетворить масив X позитивних цілих чисел (числових кодів від 0 до 65 535) у масив символів системи MATLAB;

char(С) — перетворить кожен елемент строкового масиву чарунок у ряди масиву символів, якщо рядки масиву чарунок різного розміру, до них наприкінці додаються пробіли (здійснюється набивання (padding) у термінах MATLAB) так щоб у кожному рядку масиву символів було однакове число символів;

char(Tl, T2, ТЗ), де Т — рядки, повертає масив символів, при цьому копії рядків T1, T2, Т3 перетворяться в рядки масиву символів додаванням при необхідності пробілів наприкінці рядків масивів символів;

double(S) — перетворить символи рядка S у числові коди 0—65535 і повертає вектор з цими числовими кодами;

ischar(S) — повертає логічну одиницю, якщо S є символьною змінною, і логічний нуль у противному випадку;

deblank(str) — повертає рядок, отриманий з аргументу — рядка str з вилученими з його кінця пробілами;

deblank(c) — застосовує функцію deblank до кожного елемента строкового масиву чарунок с.

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

findstr(str1,str2) — забезпечує пошук початкових індексів більш короткого рядка всередині більш довгого і повертає вектор цих індексів. Індекси вказують положення першого символу більш короткого рядка в більш довгому рядку;

lower('str') — повертає рядок символів str, у якій символи верхнього регістра переводяться в нижній регістр, а всі інші символи залишаються без змін;

upper( 'str') — повертає рядок символів str, у якому усі символи нижнього регістра переводяться у верхній регістр, а всі інші символи залишаються без змін;

strcat(sl,s2,s3,...) — виконує горизонтальне об'єднання відповідних рядків масивів символів s1, s2, s3 і т.ін. (причому пробіли наприкінці кожного ряду відкидаються) і повертає об'єднаний рядок результуючого масиву символів, пробіли додаються заново після аналізу рядків в отриманому масиві. Усі вхідні масиви повинні мати однакове число рядків (в окремому випадку повинні бути представлені у вигляді одного рядка символів), але якщо один із вхідних аргументів — не масив символів, а строковий масив чарунок, то кожний з інших вхідних аргументів може бути скаляром або будь-яким масивом тієї ж розмірності і того ж розміру. Якщо вхідний масив складається тільки із символів, то вихідний масив також буде масивом символів. Якщо кожний з вхідних масивів є строковим масивом чарунок, то функція strcat повертає строковий масив чарунок, сформований з об'єднаних відповідних елементів масивів si, s2, s3. при цьому кожний з елементів може бути скаляром тощо;



strvcat(t1,t2,t3....) — виконує вертикальне об'єднання рядків tl, t2, t3,.. у масив символів S аналогічно char(tl,t2.t3....);

strcmp('str1', 'str2') — повертає логічну одиницю, якщо два порівнювані рядки str1 і str2 ідентичні, і логічний нуль у противному випадку;

TF = strcmp(S,T) — повертає строковий масив чарунок TF, що містить одиниці для ідентичних елементів масивів S і Т и нулі для всіх інших, причому якщо один з масивів — не масив символів, а строковий масив чарунок, то перед порівнянням з порівнюваних копій рядів масиву символів видаляються пробіли наприкінці рядків. Масиви S і Т повинні мати однаковий розмір, або один з них може бути скалярною чарункою.

Перетворення символів і рядків:

int2str(X) — округляє елементи масиву X до цілих чисел і повертає масив символів, що містять символьні представлення округлених цілих чисел. Аргумент X може бути скаляром, вектором або матрицею;

mat2str(A) — перетворить матрицю А в єдиний рядок; якщо елемент матриці не скаляр, то він заміняється на [ ], при цьому враховуються 15 знаків після десяткової крапки;

mat2str(A, n) — перетворить матрицю А в рядок, використовуючи точність до n цифр після десяткової крапки. Функція eval(str) здійснює зворотне перетворення;

num2str(A) — виконує перетворення масиву А в рядок символів str з точністю до чотирьох десяткових розрядів і експонентним представленням, якщо потрібно;

num2str(A, precision) — виконує перетворення масиву А в рядок символів str з максимальною точністю, визначеної аргументом precision. Аргумент precision визначає число розрядів у вихідному рядку;

num2str(A, format) — виконує перетворення масиву чисел А, використовуючи заданий формат format. За замовченням приймається формат, що використовує чотири розряди після десяткової крапки для чисел з фіксованою або плаваючою крапкою;

str2double('str') — виконує перетворення чисельного рядка s, що представлений в ASCII-символах, у число з подвійною точністю. При цьому + і - можуть бути тільки на початку рядка;

str2num(s) — виконує перетворення чисельного масиву символів — матриці або рядка s, що представлений у ASCII-символах, у матрицю (масив розмірності 2).

За допомогою функції eval ‘строковий вираз’ рядок, що представляє математичний вираз, може бути обчислено.


КЕРУЮЧІ СТРУКТУРИ

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

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

Умовний оператор if у загальному вигляді записується в такий спосіб:

if Умова

Інструкції_1

elself Умова

Інструкції_2

else

Інструкції_3

end

Ця конструкція допускає кілька особливих варіантів.

У найпростішому випадку: if Умова Інструкції end

Якщо Умова повертає логічне значення 1 (тобто «істина»), виконуються Інструкції, що складають тіло структури if...end. При цьому оператор end указує на кінець переліку інструкцій. Інструкції в списку розділяються оператором "," (кома) або ";" (крапка з комою). Якщо Умова не виконується (дає логічне значення 0, «неправда»), то Інструкції також не виконуються.

Ще одна конструкція:

if Умова

Інструкції_1

else

Інструкції_2

end

виконує Інструкції_1, якщо виконується Умова, або Інструкції_2 - у противному випадку.

Умови записуються у вигляді:

Вираз_1 Оператор_відношення Вираз_2,

причому як Оператор_відношення використовуються наступні оператори: ==, , = або ~=. Усі ці оператори являють собою пари символів без пробілів між ними.

Цикли типу for...end звичайно використовуються для організації обчислень із заданим числом повторюваних циклів. Конструкція такого циклу має такий вигляд:

for vаr=Вираз. Інструкція. .... Інструкція end

Вираз найчастіше записується у вигляді s:d:e, де s — початкове значення змінної циклу var, d — збільшення цієї змінної та е — кінцеве значення керуючої змінної, при досягненні якого цикл завершується. Можливий і запис у вигляді s:е (у цьому випадку d=l). Список виконуваних у циклі інструкцій завершується оператором end.

Оператор continue передає керування в наступну ітерацію циклу, пропускаючи оператори, що записані за ним, причому у вкладеному циклі він передає керування на наступну ітерацію основного циклу. Оператор break може використовуватися для дострокового переривання виконання циклу. Як тільки він зустрічається в програмі, цикл переривається.

Цикл типу while виконується доти, поки виконується Умова:

while Умова Інструкції end

Конструкція перемикача (або розгалуження) використовується для здійснення множинного вибору:

switch switch_Вираз

case саsе_Вираз

Список_інструкцій

...

otherwise

Список_інструкцій

end

Якщо вираз після заголовка switch має значення одного з виразів саsе_вираз, то виконується блок операторів case, у противному випадку — список інструкцій після оператора otherwise. При виконанні блоку case виконуються ті списки інструкцій, для яких саsе_Вираз збігається з switch_виразом. Зверніть увагу на те, що саsе_Вираз може бути числом, константою, змінною, вектором чарунок або навіть рядковою змінною. В останньому випадку оператор case істинний, якщо функція strcmp (значення, вираз) повертає логічне значення «істина».

Приклад: Розробити програму, яка генерує матрицю псевдовипадкових чисел розміром 5*5 та знаходить кiлькiсть елементiв головної дiагоналi матрицi, менших за число 3. Виконати завдання з використанням матричних операцiй та функцій, а також без них.

Програма:

% підрахунок кiлькості елементiв головної дiагоналi матрицi, менших за число 3 без використання матричних функцій

x=5*randn(5,5) % генерація матриці

c=0; % в змінній с зберігається потрібна кількість

for i=1:1:5

if x(i,i)<3

c=c+1;

end;

end;

c % вивід значення с на екран

% підрахунок кiлькості елементiв головної дiагоналi матрицi, менших за число 3 з використанням матричних функцій

y=diag(x); % у – масив чисел, що складається з елементів головної діагоналі матриці х

length(find(y<3)) % в результаті виконання find(y<3) отримується масив чисел, менших за 3, а length() повертає кількість елементів цього масиву, яку і необхідно було підрахувати


5291041778869168.html
5291098960967845.html
    PR.RU™