Иллюстрированный самоучитель по Matlab

Основные функции символьных данных


В основе представления символов в строках лежит их кодирование с помощью сменных

таблиц кодов.

Такие таблицы ставят в однозначное соответствие каждому символу некоторый код со значением от 0 до 255.

Вектор, содержащий строку символов, в системе MATLAB задается следующим образом:

S= 'Any Characters' — вектор, компонентами которого являются числовые коды, соответствующие символам [

Символ  внутри такой строки дублируется (заменяется на ''). — Примеч. ред.

].

Первые 127 чисел — это коды ASCII, представляющие буквы латинского языка, цифры и спецзнаки. Они образуют основную таблицу кодов. Вторая таблица (коды от 128 до 255) является дополнительной и может использоваться для представления символов других языков, например русского. Длина вектора S соответствует числу символов в строке, включая пробелы. Апостроф внутри строки символов должен вводиться как два апострофа ' '.

К основным

строковым функциям

относятся следующие:

char (X) — преобразует массив X положительных целых чисел (числовых кодов от 0 до 65 535) в массив символов системы MATLAB (причем только первые 127 кодов — английский набор ASCII, со 128 до 255 — расширенный набор ASCII) и возвращает его, на платформе Windows при значении выше 65 535 выдает предупреждение об ошибке, но возвращает русскую букву я (я повторяется так же, как char(255+256rt), где п — целые неотрицательные числа) [

Результат char(x) при х>65535 зависит от платформы, русификации и т. д. — Примеч. ред.



];

Пример:

» X=reshape(32:127,32,3); 

» S= char(X')

S=

!"#$*&'()*+.-./0123456789::<=>? 

(aABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_

 "abcdefghijklmnopqrstuvwxyz{|}-[]

» t1=

'

computer'

» t2='for';

» t3='home':

» t4='users':

» S = Char(tl.t2.t3.t4)

S =

computer

for

home

users

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


char (Tl, T2, ТЗ), где Т — строки, возвращает массив символов, при этом копии строк T1, T2, Т3 преобразуются в ряды массива символов добавлением при необходимости пробелов в конце рядов массивов символов, как описано ранее;char (java.Tang.string) — преобразует объект класса java.lang. string вмассив символов MATLAB;

char (javaarray of java.lang.string) — единственный случай, когда выходным аргументом функции является не массив символов, а строковый массив ячеек, в который преобразуется массив строк Java;

double(S) — преобразует символы строки S в числовые коды 0—65535 и возвращает вектор с этими числовыми кодами;

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

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

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

Примеры:

» S = 'computer'

S =

computer

» X = double(S)

X =

99 111 109 112 117 116 101 114

» ischar(S)

ans =

1

»c{l,l}='My ';

» c{l,2}='home ';

» c{1.3}='computer ';

» с

с=

'My ' 'home ' 'computer 

» с = deblank(c) 

с =

'My' 'home' 'computer'



Примечание



Правильная работа строковых функций с дополнительной кодовой таблицей ASCII возможна, но не гарантируется для систем, не прошедших адаптацию под тот или иной язык. В частности, проблемы работы с символами кириллицы (например перевод строки при наборе малой буквы «с» в командной строке) уже обсуждались. Поэтому примеры в этой главе даны для строк с символами основной кодовой таблицы.


Содержание раздела