2013-11-23 6 views
4

У меня есть сомнения относительно функции в MATLAB.Удалить повторяющиеся смежные символы в строке

Я это, например:

a=['9' '9' '9' '-' '-' '1' '1' '2' '3' '3' '5' '6' '7' '7' '7' '9' '6' '4' '-' '-' '3'] 

a = 

999--1123356777964--3 

И я хочу, чтобы преобразовать, что к этому:

9-123567964-3 

Удалить соседний символ, который повторяется, я пытался использовать:

unique(a,'stable') 

Но эта функция удаляет некоторые символы, которые не смежны.

Есть ли какая-либо функция, которая выполняет эту операцию?

Спасибо.

+1

Я предлагаю вам изменить заголовок на что-то вроде «Удалить повторяющиеся соседние символы в строке», чтобы будущие читатели могли легко найти ваш вопрос. –

ответ

4
a(logical([1 diff(double(a))])) 

Объяснение: символы преобразуются в числа с double. Тогда diff дает отличный от нуля для каждого элемента, который отличается от предыдущего. Результат используется как logical index для выбора элементов от a. Первый элемент a всегда сохраняется (обратите внимание, что diff дает вектор с одним меньшим элементом, чем a).

+0

+1, very clever =) –

+0

@RobertP. Благодаря! –

+0

Спасибо за ваш ответ и объяснение, что мне очень помогло. –

Смежные вопросы