Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

matlab_8

.pdf
Скачиваний:
14
Добавлен:
27.05.2015
Размер:
211.45 Кб
Скачать

Работа со строками

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

Вектор, содержащий строку символов, в MatLab

задается следующим образом:

str = 'this is a string'

Компонентами символьного вектора являются числовые коды, соответствующие символам.

В основе представления символов в строках лежит их кодирование с помощью сменных таблиц кодов. Однобайтовые таблицы (например, ASCII) в информационных системах ставят в однозначное соответствие каждому символу некоторый код со значением от 0 до 255. В более современных приложениях (MatLab в том числе) используются расширенные двухбайтовые таблицы кодировки символов — Unicode. Они позводяют кодировать до 2^16 = 65536 символов.

Основные строковые функции MatLab:

• double(S) преобразует символы строки

S в числовые коды 0-65535 и возвращает вектор с этими числовыми кодами.

char(X) преобразует массив X положительных целых чисел в массив символов

char(C) преобразует каждый элемент строкового массива ячеек С в ряды массива символов. Если строки массива ячеек разного размера, к ним в конце добавляются пробелы, чтобы чтобы все строки имели однинаковую длину.

char (T1, T2, T3, …) соединяет строки Тх в массив символов. Копии строк Tх преобразуются в строки массива символов добавлением пробелов в конце.

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

deblank(str) возвращает строку, полученную из аргумента – строки str с удаленными из ее конца пробелами.

Пример:

>>S = 'computer'

S = computer

>>X = double(S)

X =

99 111 109 112 117 116 101 114

>>ischar(S)

ans = 1

>>c{1,1}='My ';

>>c{1,2}='home ';

>>c{1,3}='computer ';

>>c

c =

'My ' 'home ' 'computer '

>>c = deblank(c)

c =

'My' 'home' 'computer'

Операции над строками:

• findstr(str1,str2) обеспечивает поиск начальных индексов более короткой строки внутри более длинной. Возвращает вектор этих индексов, которые указывают положение первого символа более короткой строки в более длинной строке.

>>str1 = 'Example of the function is the findstr function';

>>str2 = 'the';

>>k = findstr(str1, str2)

k = 12 28

strjust(S) возвращает выровненный вправо массив символов (то есть перемещает пробелы в конце рядов массива символов, если они есть, в начало тех же рядов).

strmatch(str, STRS) просматривает массив символов или строковый массив ячеек STRS по строкам, находит строки символов, начинающиеся состроки str, и возвращает соответствующие индексы строк.

strmatch(str, STRS, exact) возвращает только индексы строк символов массива STRS, точно совпадающих со строкой символов str.

strrep(str1, str2, str3) заменяет все подстроки str2, найденные внутри строки символов str1, на строку str3.

lower(str) возвращает строку символов str, в которой символы верхнего регистра переводятся в нижний регистр.

Аналогично

upper('str') возвращает строку символов str, в которой все символы нижнего регистра переводятся в верхний регистр

>> upper('This is String') ans =

THIS IS STRING

• strcat(s1, s2, s3, …) выполняет горизонтальное объединение соответствующих строк массивов символов s1, s2, s3 и т. д., причем пробелы в конце каждого ряда отбрасываются, и возвращается объединенная строка результирующего массива. Все входные массивы должны иметь одинаковое число строк.

>> strcat('3f345tg', 'c4e5rg') ans =

3f345tgc4e5rg