Manipolation of Cell Arrays.

I have {A}=<250x22>cell. thanks to another question I'm able to know the pairs of two colums of {A} for example I have just these three combination :{a}&{b} or {b}&{z} or {r}&{t}. What I would like to create three different cell arrays based on the three combination.

 Respuesta aceptada

Fangjun Jiang
Fangjun Jiang el 19 de Dic. de 2011

1 voto

A={'a','b',1 2 3;
'a','b',3 4 5;
'b','z',3 4 5;
'b','z',4 5 6;
'r','t',5 6 7;
'r','t',6 7 8};
UniqComb={'a','b';'b','z';'r','t'};
N=size(UniqComb,1);
Groups=cell(N,1);
for k=1:N
index=and(strcmp(A(:,1),UniqComb(k,1)),strcmp(A(:,2),UniqComb(k,2)));
Groups{k}=A(index,:);
end
>> Groups{1}
Groups{2}
Groups{3}
ans =
'a' 'b' [1] [2] [3]
'a' 'b' [3] [4] [5]
ans =
'b' 'z' [3] [4] [5]
'b' 'z' [4] [5] [6]
ans =
'r' 't' [5] [6] [7]
'r' 't' [6] [7] [8]

8 comentarios

Maurizio
Maurizio el 19 de Dic. de 2011
Fangjun I have 250x22cell. The combination are only for the two colums. What I would like to do is to create based on these three configuration 3 cell array indipendent where on each cell array there are only the data of the correct configuration
Fangjun Jiang
Fangjun Jiang el 19 de Dic. de 2011
That is what the code is for. All the data in Groups{1} will have first column as 'a' and second column as 'b'. All the data in Groups{2} will have first column as 'b' and second column as 'z'. And etc.
Maurizio
Maurizio el 19 de Dic. de 2011
may be I'm not able to explain.
I analyse the colums 2 and 3 of {A} ({A}=250x22 cell) and I have three different combination of these 250 rows.
The combination on all the 250 rows (on the two colums) are 'a' with 'b' or 'b' with 'z' or 'r' with 't'. What I would like to do is read all the 250 rows and create three different structure based on the three configuaration..Example
first combination 240 times.
second combination 5 times.
third combiantion 5 times.
The combination can be in disorder.
What I like to do is create 3 different structure each one with all
the colums (22) of the correct combination and with the example above will be for example is 240x20 cell, 5x20 cell and 5x20cell.
Fangjun Jiang
Fangjun Jiang el 19 de Dic. de 2011
Besides the column 1,2 and column 2,3 difference, that is the exact code. Why don't you try it on your data set A?
Fangjun Jiang
Fangjun Jiang el 19 de Dic. de 2011
See update with an example.
Walter Roberson
Walter Roberson el 19 de Dic. de 2011
I'm not certain but possibly Maurizio would like the order to be irrelevant; i.e., to also allow 'b' 'a', 'z' 'b' and 't' 'r'
Maurizio
Maurizio el 20 de Dic. de 2011
@ Fangjun... is it possible to create a for loop that for each Groups{} sum all the number that I have only on the column 3 and 4?
Fangjun Jiang
Fangjun Jiang el 20 de Dic. de 2011
>> sum([Groups{k}{:,3}])
ans =
11

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 19 de Dic. de 2011

0 votos

a_1 = strcmp('a', A(:,1));
b_1 = strcmp('b', A(:,1));
b_2 = strcmp('b', A(:,2));
r_1 = strcmp('r', A(:,1));
t_2 = strcmp('t', A(:,2));
mab = A(a_1 & b_2, :);
mbz = A(b_1 & z_2, :);
mrt = A(r_1 & t_2, :);

2 comentarios

Fangjun Jiang
Fangjun Jiang el 19 de Dic. de 2011
Walter, what about http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C....2CA10_in_a_loop.3F ?
Walter Roberson
Walter Roberson el 19 de Dic. de 2011
No loop variables were harmed in the making of this code snippet.

Iniciar sesión para comentar.

Categorías

Más información sobre Operators and Elementary Operations en Centro de ayuda y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by