Как я могу извлечь первые 4 или средние 4 или последние четыре буквы строкового примера: когда строка читает 01 ED 01 F9 81 C6?
Извлечь первые 4 буквы из строки в matlab
Ответ 1
Строка обрабатывается как вектор символов. Попробуйте следующее:
>> 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)
возвращает первый char в массив (или вектор), называемый string
.
Ответ 2
Если вам нужны только символы без пробелов, вы можете использовать функцию 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 -array, а затем ссылаясь на дополнительный размер:
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
Ответ 3
Как упоминалось в trolle3000 и b3, вы используете скобки, содержащие индексы, для извлечения подмножеств строки.
Чтобы ответить на дополнительный вопрос о том, как вы работаете над строкой, я предлагаю вам разделить строку в каждом пространстве и преобразовать из шестнадцатеричного числа в десятичные числа.
s = '01 ED 01 F9 81 C6';
hex2dec(regexp(s, ' ', 'split'))
ans =
1
237
1
249
129
198