Создать строку символов в 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 . Если строки имеют разную длину, более короткие строки облагаются символьными символами, чтобы в каждой строке было одинаковое количество символов.
Используя оператор конкатенации MATLAB [] и разделяя каждую строку точкой с запятой (;). Обратите внимание, что в этом методе каждая строка должна содержать одинаковое количество символов. Для строк разной длины вы должны заполнять пробелами по мере необходимости.
Использование функции 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 . Этот метод удаляет завершающие пробелы во входных данных.
Используя оператор конкатенации 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 | Определить, является ли элемент массивом символов |
Sprintf | Форматировать данные в строку |
strcat | Конкатенация строк по горизонтали |
strjoin | Соединить строки в массиве ячеек в одну строку |
Функции для идентификации частей строк, поиска и замены подстрок | |
ischar | Определить, является ли элемент массивом символов |
isletter | Элементы массива, которые являются буквенными буквами |
isspace | Элементы массива, которые являются пробелами |
isstrprop | Определить, относится ли строка к указанной категории |
sscanf | Считать отформатированные данные из строки |
strfind | Найти одну строку в другой |
strrep | Найти и заменить подстроку |
strsplit | Разделить строку по указанному разделителю |
strtok | Отдельные части строки |
validatestring | Проверьте правильность текстовой строки |
symvar | Определить символические переменные в выражении |
регулярное выражение | Соответствие регулярному выражению (с учетом регистра) |
regexpi | Соответствие регулярному выражению (без учета регистра) |
regexprep | Заменить строку с помощью регулярного выражения |
regexptranslate | Перевести строку в регулярное выражение |
Функции для сравнения строк | |
зЬгстр | Сравнить строки (с учетом регистра) |
strcmpi | Сравнить строки (без учета регистра) |
strncmp | Сравните первые n символов строк (с учетом регистра) |
strncmpi | Сравните первые n символов строк (без учета регистра) |
Функции для изменения строки в верхний или нижний регистр, создания или удаления пробела | |
deblank | Снять задние заготовки с конца струны |
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
Когда вы запускаете файл, он показывает следующий результат —