Учебники

MATLAB — Струны

Создать строку символов в MATLAB довольно просто. На самом деле, мы использовали это много раз. Например, вы вводите следующее в командной строке —

Live Demo

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 преобразует вектор целых чисел обратно в символы —

пример

Создайте файл сценария и введите в него следующий код —

Live Demo

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 . Если строки имеют разную длину, более короткие строки облагаются символьными символами, чтобы в каждой строке было одинаковое количество символов.

пример

Создайте файл сценария и введите в него следующий код —

Live Demo

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 . Этот метод удаляет завершающие пробелы во входных данных.

пример

Создайте файл сценария и введите в него следующий код —

Live Demo

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 преобразует массив символов в массив строк.

пример

Создайте файл сценария и введите в него следующий код —

Live Demo

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 Обоснуйте массив символов

Примеры

Следующие примеры иллюстрируют некоторые из вышеупомянутых строковых функций —

Форматирование строк

Создайте файл сценария и введите в него следующий код —

Live Demo

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 

Строки соединения

Создайте файл сценария и введите в него следующий код —

Live Demo

%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

Поиск и замена строк

Создайте файл сценария и введите в него следующий код —

Live Demo

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
}

Сравнение строк

Создайте файл сценария и введите в него следующий код —

Live Demo

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

Когда вы запускаете файл, он показывает следующий результат —