2015-09-16 3 views
2

У меня есть массив ячеек с двумя столбцами. Один из них состоит из строк, а другой из двухместных. Я хотел бы удалить все строки, которые являются избыточными.Удалить строку и двойную избыточность в ячейке matlab

b = cell(4,2); 
b{1,1} = 'a'; 
b{1,2} = 2; 
b{2,1} = 'a'; 
b{2,2} = 1; 
b{3,1} = 'b'; 
b{3,2} = 1; 
b{4,1} = 'a'; 
b{4,2} = 2; 

Так что в списке выше строки a 2 будет удален. Также сортировка будет приятной. Я нашел «уникальную» функцию, которая говорит мне, что она работает только для всех строковых ячеек. Есть ли другая функция для смешанных ячеек?

С наилучшими пожеланиями Manuel

+2

вы можете объединить свой двойник в строку, используйте уникальный, а затем разделить их снова, так как ваша строка не содержат числа, это должно быть довольно легко сделать. Вы также можете выполнять сортировку, пока они объединены. – GameOfThrows

+0

Спасибо. Я сделал так, и это сработало. – Manuel

+0

Рассмотрите отправку ответа, чтобы люди с одинаковой проблемой нашли ответ! – Ikaros

ответ

0

Это ответ благодаря помощи я получил. Преобразование двойников в строки, объединить две строки, уникальный, разделятся и преобразовать строку в два раза:

b = cell(4,2); 
b{1,1} = 'a'; 
b{1,2} = 2; 
b{2,1} = 'a'; 
b{2,2} = 1; 
b{3,1} = 'b'; 
b{3,2} = 1; 
b{4,1} = 'a'; 
b{4,2} = 2; 
b 

btemp = {}; 
for i = 1:size(b) 
    [~,columns]=size(btemp); 
    btemp{columns+1} = strcat(b{i,1},sprintf('%.3f',b{i,2})); 
end 
btemp = unique(btemp); 
[~,columns]=size(btemp); 

b2 = cell(columns,2); 
for j = 1:columns 
    b2{j,1} = btemp{j}(1); 
    b2{j,2} = str2double(btemp{j}(2:end)); 
end 

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