извлечь первые 4 буквы из строки в Matlab - PullRequest
10 голосов
/ 05 апреля 2011

Как извлечь первые 4 или средние 4 или последние четыре буквы примера строки: когда строка читается как 01 ED 01 F9 81 C6?

Ответы [ 3 ]

14 голосов
/ 05 апреля 2011

Строка обрабатывается как вектор символов. Попробуйте это:

>> string = '01 ED 01 F9 81 C6'; 
>> string(1:5), string(6:11), string(12:17)

ans =
01 ED

ans =
 01 F9

ans =
 81 C6

string в этом примере это переменная, а не метод. string(1) возвращает первый символ в массиве (или векторе) с именем string.

4 голосов
/ 05 апреля 2011

Если вам нужны только непробельные символы, вы можете использовать функцию ISSPACE , чтобы удалить пробелы, а затем индексировать массив символов для доступа к символам:

>> s = '01 ED 01 F9 81 C6';
>> s = s(~isspace(s))

s =

01ED01F981C6

>> s(1:4)

ans =

01ED

>> s(5:8)

ans =

01F9

>> s(9:end)

ans =

81C6

Вы можете расширитьэто для обработки нескольких строк массива символов с использованием RESHAPE для преобразования результата удаления пробела обратно в 2D-массив, а затем ссылки на дополнительное измерение:

 s = ['01 ED 01 F9 81 C6'; 'F8 CA DD 04 44 3B']

s =

01 ED 01 F9 81 C6
F8 CA DD 04 44 3B

>> s = reshape(s(~isspace(s)), size(s, 1), 12)

s =

01ED01F981C6
F8CADD04443B

>> s(:,1:4)

ans =

01ED
F8CA

>> s(:,5:8)

ans =

01F9
DD04

>> s(:,9:end)

ans =

81C6
443B
0 голосов
/ 05 апреля 2011

Как упоминалось в тролле 3000 и b3, вы используете скобки, содержащие индексы, для извлечения подмножеств строки.

Чтобы ответить на дополнительный вопрос о том, как вы работаете со строкой, я предлагаю вам разбить строку на каждый пробел и преобразовать шестнадцатеричное в десятичное число.

s = '01 ED 01 F9 81 C6';
hex2dec(regexp(s, ' ', 'split'))

ans =   
     1
   237
     1
   249
   129
   198
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...