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.

 채택된 답변

Fangjun Jiang
Fangjun Jiang 2011년 12월 19일

1 개 추천

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

Maurizio
Maurizio 2011년 12월 19일
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 2011년 12월 19일
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 2011년 12월 19일
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 2011년 12월 19일
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 2011년 12월 19일
See update with an example.
Walter Roberson
Walter Roberson 2011년 12월 19일
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 2011년 12월 20일
@ 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 2011년 12월 20일
>> sum([Groups{k}{:,3}])
ans =
11

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2011년 12월 19일

0 개 추천

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

Fangjun Jiang
Fangjun Jiang 2011년 12월 19일
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 2011년 12월 19일
No loop variables were harmed in the making of this code snippet.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by