MATLAB — Строки
Создать строку символов в MATLAB довольно просто. На самом деле, мы использовали его много раз. Например, вы вводите в командной строке следующее —
Живая демонстрацияmy_string = 'Tutorials Point'
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
my_string = Tutorials Point
MATLAB рассматривает все переменные как массивы, а строки — как массивы символов. Воспользуемся кто команда для проверки созданной выше переменной —
whos
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
Name Size Bytes Class Attributes my_string 1x16 32 char
Интересно, что вы можете использовать функции числового преобразования, такие как uint8 или uint16 для преобразования символов в строке в их числовые коды. знак функция преобразует целочисленный вектор обратно в символы —
Пример
Создайте файл сценария и введите в него следующий код —
Живая демонстрация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 | Определить, является ли ввод массивом ячеек из строк |
| исчар | Определить, является ли элемент массивом символов |
| sprintf | Форматировать данные в строку |
| strcat | Объединить строки по горизонтали |
| strjoin | Объединить строки в массиве ячеек в одну строку |
| Функции для определения частей строк, поиска и замены подстрок | |
| исчар | Определить, является ли элемент массивом символов |
| островок | Элементы массива, которые являются буквами алфавита |
| isspace | Элементы массива, которые являются символами пробела |
| isstrprop | Определить, относится ли строка к указанной категории |
| sscanf | Чтение форматированных данных из строки |
| strfind | Найти одну строку внутри другой |
| strrep | Найти и заменить подстроку |
| strsplit | Разделить строку по указанному разделителю |
| strtok | Выбранные части строки |
| validatestring | Проверить достоверность текстовой строки |
| симвар | Определить символьные переменные в выражении |
| регулярное выражение | Соответствие регулярному выражению (с учетом регистра) |
| регулярное выражение | Соответствие регулярному выражению (без учета регистра) |
| регулярное выражение | Заменить строку с помощью регулярного выражения |
| regexptranslate | Перевести строку в регулярное выражение |
| Функции для сравнения строк | |
| strcmp | Сравнить строки (с учетом регистра) |
| strcmpi | Сравнить строки (без учета регистра) |
| strncmp | Сравнить первые n символов строк (с учетом регистра) |
| strncmpi | Сравнить первые n символов строк (без учета регистра) |
| Функции для перевода строки в верхний или нижний регистр, создания или удаления пробелов | |
| удалить пробел | Удалить пробелы в конце строки |
| strtrim | Удалить начальные и конечные пробелы из строки |
| ниже | Преобразовать строку в нижний регистр |
| верхний | Преобразовать строку в верхний регистр |
| стрюст | Выровнять массив символов |
Примеры
Следующие примеры иллюстрируют некоторые из вышеупомянутых строковых функций —
Форматирование строк
Создайте файл сценария и введите в него следующий код —
Живая демонстрация
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
MATLAB