MATLAB - объединение элементов в массиве ячеек - PullRequest
0 голосов
/ 05 июля 2010

У меня есть массив ячеек:

X =

{1x2} {1x2}


X{1} = '' A

X{1 2} = 10 113

Я хочу объединить вложенные ячейки таким образом, чтобы

 Y = 10 113A

Спасибо, S: -)

Ответы [ 4 ]

1 голос
/ 05 июля 2010
y = cellfun(@(a, b) sprintf('%d%s', b, a), x{1}, x{2}, 'UniformOutput', false);
1 голос
/ 05 июля 2010

Если у вас есть этот массив ячеек для X:

X = {{'' 'A'} {10 113}};

Вы можете создать свой массив Y, используя INT2STR и STRCAT :

Y = strcat(int2str([X{2}{:}].'),X{1}.').';
0 голосов
/ 25 сентября 2012

Matlab File Exchange имеет функцию, написанную именно для этого. uniqueRowsCA

0 голосов
/ 05 июля 2010

Для тех, кто заинтересован, я думаю, что нашел решение.

Я переопределил свой массив ячеек как:

X1 =

{1x2}

X1 = '' 'A'

X2 = 

[1x2 double]

X2 = 10 113

Затем я применил это для цикла:

NUM = [];

for i = 1:size(X2')              #take the transpose of X2
    p = num2str(X2(i));          #convert doubles to strings
    str = STRCAT(p, X1(i));      #concatenate
    NUM = [NUM str];             #add to another array
end


NUM = '10' '113A'

Я уверен, что есть более эффективный способ, но мы с MATLAB никогда не будем в хороших отношениях. Иногда достаточно быстро и грязно!

Cheers, S: -)

...