MATLAB - Строки
Создание символьной строки в MATLAB довольно просто. Фактически, мы использовали его много раз. Например, вы вводите в командной строке следующее:
my_string = 'Tutorials Point'
MATLAB выполнит вышеуказанный оператор и вернет следующий результат -
my_string = Tutorials Point
MATLAB рассматривает все переменные как массивы, а строки рассматриваются как символьные массивы. Давайте использоватьwhos команда для проверки созданной выше переменной -
whos
MATLAB выполнит вышеуказанный оператор и вернет следующий результат -
Name Size Bytes Class Attributes
my_string 1x16 32 char
Интересно, что вы можете использовать числовые функции преобразования, такие как uint8 или же uint16для преобразования символов в строке в их числовые коды. Вchar функция преобразует целочисленный вектор обратно в символы -
пример
Создайте файл сценария и введите в него следующий код -
my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string) % 8-bit ascii values
str_back_to_char= char(str_ascii)
str_16bit = uint16(my_string) % 16-bit ascii values
str_back_to_char = char(str_16bit)
Когда вы запускаете файл, он отображает следующий результат -
str_ascii =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
str_16bit =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
Прямоугольный массив символов
Строки, которые мы обсуждали до сих пор, представляют собой одномерные массивы символов; однако нам нужно хранить больше. Нам нужно хранить в нашей программе более объемные текстовые данные. Это достигается за счет создания прямоугольных массивов символов.
Самый простой способ создания прямоугольного массива символов - это объединение двух или более одномерных символьных массивов по вертикали или горизонтали по мере необходимости.
Вы можете комбинировать струны по вертикали одним из следующих способов:
Использование оператора конкатенации MATLAB []и разделяя каждую строку точкой с запятой (;). Обратите внимание, что в этом методе каждая строка должна содержать одинаковое количество символов. Для строк разной длины вы должны заполнить пробелами по мере необходимости.
Используя charфункция. Если строки имеют разную длину, char дополняет более короткие строки завершающими пробелами, чтобы в каждой строке было одинаковое количество символов.
пример
Создайте файл сценария и введите в него следующий код -
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
Когда вы запускаете файл, он отображает следующий результат -
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
Вы можете комбинировать строки по горизонтали одним из следующих способов:
Используя оператор конкатенации MATLAB, []и разделение входных строк запятой или пробелом. Этот метод сохраняет любые конечные пробелы во входных массивах.
Используя функцию конкатенации строк, strcat. Этот метод удаляет конечные пробелы во входных данных.
пример
Создайте файл сценария и введите в него следующий код -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
Когда вы запускаете файл, он отображает следующий результат -
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
Объединение строк в массив ячеек
Из нашего предыдущего обсуждения ясно, что комбинирование строк разной длины может быть проблемой, поскольку все строки в массиве должны иметь одинаковую длину. Мы использовали пробелы в конце строк, чтобы уравнять их длину.
Однако более эффективный способ объединения строк - преобразование результирующего массива в массив ячеек.
Массив ячеек MATLAB может содержать различные размеры и типы данных в массиве. Массивы ячеек обеспечивают более гибкий способ хранения строк различной длины.
В cellstr Функция преобразует массив символов в массив ячеек строк.
пример
Создайте файл сценария и введите в него следующий код -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
Когда вы запускаете файл, он отображает следующий результат -
{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
Строковые функции в MATLAB
MATLAB предоставляет множество строковых функций, создающих, комбинирующих, анализирующих, сравнивающих и управляющих строками.
В следующей таблице представлено краткое описание строковых функций в MATLAB -
Функция | Цель |
---|---|
Функции для хранения текста в массивах символов, объединения массивов символов и т. Д. | |
пробелы | Создать строку пустых символов |
Cellstr | Создать массив ячеек строк из массива символов |
символ | Преобразовать в символьный массив (строку) |
iscellstr | Определите, является ли ввод массивом ячеек строк |
Ischar | Определите, является ли элемент массивом символов |
спринт | Форматировать данные в строку |
strcat | Объединить строки по горизонтали |
strjoin | Объединить строки в массиве ячеек в одну строку |
Функции для определения частей строк, поиска и замены подстрок | |
Ischar | Определите, является ли элемент массивом символов |
островок | Элементы массива, представляющие собой буквы алфавита |
isspace | Элементы массива, являющиеся пробелами |
isstrprop | Определить, относится ли строка к указанной категории |
sscanf | Чтение форматированных данных из строки |
strfind | Найдите одну строку в другой |
strrep | Найти и заменить подстроку |
strsplit | Разделить строку по указанному разделителю |
strtok | Избранные части струны |
валидация | Проверить правильность текстовой строки |
символ | Определить символьные переменные в выражении |
регулярное выражение | Соответствие регулярному выражению (с учетом регистра) |
регулярное выражение | Соответствие регулярному выражению (без учета регистра) |
регулярное выражение | Заменить строку регулярным выражением |
regexptranslate | Перевести строку в регулярное выражение |
Функции для сравнения строк | |
strcmp | Сравнить строки (с учетом регистра) |
strcmpi | Сравнить строки (без учета регистра) |
strncmp | Сравните первые n символов строк (с учетом регистра) |
strncmpi | Сравните первые n символов строк (без учета регистра) |
Функции для преобразования строки в верхний или нижний регистр, создания или удаления пробелов | |
дебланк | Снимите замыкающие пробелы с конца строки |
Strtrim | Удалите начальные и конечные пробелы из строки |
ниже | Преобразовать строку в нижний регистр |
верхний | Преобразовать строку в верхний регистр |
strjust | Выровнять массив символов |
Примеры
Следующие примеры иллюстрируют некоторые из вышеупомянутых строковых функций.
Форматирование строк
Создайте файл сценария и введите в него следующий код -
A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
Когда вы запускаете файл, он отображает следующий результат -
ans = 3141.592654
3141.59
+3141.59
3141.59
000003141.59
Соединение строк
Создайте файл сценария и введите в него следующий код -
%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")
Когда вы запускаете файл, он отображает следующий результат -
str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange
Поиск и замена строк
Создайте файл сценария и введите в него следующий код -
students = {'Zara Ali', 'Neha Bhatnagar', ...
'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma',...
'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)
Когда вы запускаете файл, он отображает следующий результат -
new_student =
{
[1,1] = Poulomi Dutta
}
first_names =
{
[1,1] = Zara
[1,2] = Neha
[1,3] = Monica
[1,4] = Madhu
[1,5] = Madhu
[1,6] = Bhawna
[1,7] = Nuha
[1,8] = Reva
[1,9] = Sunaina
[1,10] = Sofia
}
Сравнение строк
Создайте файл сценария и введите в него следующий код -
str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end
Когда вы запускаете файл, он отображает следующий результат -
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal