Строки в MATLAB: создание, манипуляции и функции
Создание символьной строки в MATLAB просто. Все переменные — массивы, строки — символьные массивы.
my_string = 'Tutorials Point'
Результат:
my_string = Tutorials Point
Проверка через whos:
Name Size Bytes Class Attributes my_string 1x16 32 char
Символы можно преобразовать в числовые коды (ASCII/Unicode) и обратно:
my_string = 'Tutorial''s Point'; str_ascii = uint8(my_string) % 8-битные коды char(str_ascii) % обратно в символы str_16bit = uint16(my_string) % 16-битные коды char(str_16bit)
Прямоугольные символьные массивы
Для хранения нескольких строк разной длины используют прямоугольные массивы (с дополнением пробелами).
Вертикальное объединение
- Оператор
[]с точкой с запятой — все строки должны быть одной длины (дополнять пробелами). - Функция
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')
Горизонтальное объединение
- Оператор
[]с запятой/пробелом — сохраняет конечные пробелы. - Функция
strcat— удаляет конечные пробелы.
name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = [name ', ' position ', ' worksAt] profile = strcat(name, ', ', position, ', ', worksAt)
Объединение строк в клеточный массив
Клеточные массивы гибче — хранят строки разной длины без дополнения пробелами. Функция cellstr преобразует символьный массив в клеточный массив строк.
name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = char(name, position, worksAt); profile = cellstr(profile); disp(profile)
Результат:
{ 'Zara Ali'; 'Sr. Surgeon'; 'R N Tagore Cardiology Research Center' }
Строковые функции в MATLAB
| Функция | Назначение |
|---|---|
| Хранение текста, объединение массивов | |
| blanks | Строка из пробелов |
| cellstr | Клеточный массив строк из символьного массива |
| char | Преобразование в символьный массив |
| iscellstr | Проверка: клеточный массив строк? |
| ischar | Проверка: символьный массив? |
| sprintf | Форматирование данных в строку |
| strcat | Горизонтальная конкатенация строк |
| strjoin | Объединение строк клеточного массива в одну |
| Поиск и замена подстрок | |
| isletter | Буквенные символы |
| isspace | Пробельные символы |
| isstrprop | Категория строки |
| sscanf | Чтение форматированных данных из строки |
| strfind | Поиск одной строки в другой |
| strrep | Поиск и замена подстроки |
| strsplit | Разделение строки по разделителю |
| strtok | Выделение частей строки |
| validatestring | Проверка валидности текста |
| symvar | Символические переменные в выражении |
| regexp | Регулярные выражения (с учетом регистра) |
| regexpi | Регулярные выражения (без учета регистра) |
| regexprep | Замена с помощью регулярного выражения |
| regexptranslate | Перевод строки в регулярное выражение |
| Сравнение строк | |
| strcmp | Сравнение (с учетом регистра) |
| strcmpi | Сравнение (без учета регистра) |
| strncmp | Сравнение первых n символов (с учетом регистра) |
| strncmpi | Сравнение первых n символов (без учета регистра) |
| Регистр и пробелы | |
| deblank | Удаление конечных пробелов |
| strtrim | Удаление начальных и конечных пробелов |
| lower | В нижний регистр |
| upper | В верхний регистр |
| 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
Объединение строк
str_array = {'red','blue','green','yellow','orange'};
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'};
new_student = strrep(students(8), 'Reva', 'Poulomi')
first_names = strtok(students)
Результат:
new_student = { 'Poulomi Dutta' }
first_names = { 'Zara', 'Neha', 'Monica', 'Madhu', 'Madhu', 'Bhawna', 'Nuha', 'Reva', 'Sunaina', '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
Результат:
ans = This is test and This is text are not equal
MATLAB
- Освоение строк в Java: создание, методы и лучшие практики
- MATLAB: Комплексный обзор ведущей среды численных вычислений
- Переменные в MATLAB: Основы, примеры и работа с векторами/матрицами
- Основные команды MATLAB для эффективных вычислений
- Типы данных в MATLAB: Полное руководство с примерами
- Операторы MATLAB: Арифметические, логические, битовые и операции над множествами
- Матрицы в MATLAB: Создание, индексация, удаление строк/столбцов и операции
- MATLAB: Мастерство работы с многомерными и специальными массивами
- Оператор двоеточия в MATLAB: создание векторов и эффективная итерация
- Числа в MATLAB: типы, хранение и преобразование