How to extract the all combinations of array (permutations combinations)

조회 수: 4 (최근 30일)
Hi,
I have a matrix as below:
A Success
B Failure
C Success
A Success
B Success
C Success
I want to count how many time B appeared after A or A appeared after A or C appeared after B (for example: i-1 should be A, and i should B: so it counted as AB). The resultant combinations are as shown below: So, again I want to count how many time A appeared after A, B appeared after A, B appeared after B, C appeared after B (or C,or A,or D)etc.
AA AB AC
BA BB BC
CA CB CC
My out put should be: Out_sucess (only succeefull combinations):
0 1 0
0 0 2
1 0 0
Out_Fail(Failed combinations):
0 1 0
0 0 0
0 0 0
Kindly help how do I get these out puts
  댓글 수: 4
the cyclist
the cyclist 2015년 8월 14일
편집: the cyclist 2015년 8월 14일
@dpb, I think he/she is only looking at "nearest neighbor" pairs, and basing the classification on the success/failure of the 2nd member of the pair. (At least, this gives the quoted result.)
Kanakaiah Jakkula
Kanakaiah Jakkula 2015년 8월 15일
Sir,
The meaning of resultant matrix I shown above is AA means A appeared after A. AB means B appeared after A like in row2. BA means A appeared after B. BC means C appeared after B as in row3 etc. I don't mind B appeared after A or after B itself). I just want to count how it appeared (that is after A or after B, or C) but how many time B appeared after A, and B appeared after B it self. Same as for A &C. That's why I want to count as below matrix:
Count_Matrix:
0 2 0
0 0 2
1 0 0
For instance, in the Count_Matrix(1,2) the count is 2, because B appeared after A twice at row2 &row5. Count_Matrix(3,1) the count is 1, because A appeared after C once at row4 etc.

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

채택된 답변

the cyclist
the cyclist 2015년 8월 14일
편집: the cyclist 2015년 8월 14일
Perhaps not the most efficient way, but here is a very pedantic way:
M = {
'A' 'Success'
'B' 'Failure'
'C' 'Success'
'A' 'Success'
'B' 'Success'
'C' 'Success'};
[~,loc] = ismember([M(1:end-1,1) M(2:end,1)],{'A','B','C'});
[successCount,failureCount] = deal(zeros(3));
for ni = 1:size(loc,1);
switch M{ni+1,2}
case 'Success'
successCount(loc(ni,1),loc(ni,2)) = successCount(loc(ni,1),loc(ni,2)) + 1;
case 'Failure'
failureCount(loc(ni,1),loc(ni,2)) = failureCount(loc(ni,1),loc(ni,2)) + 1;
end
end
successCount
failureCount
  댓글 수: 11
Kanakaiah Jakkula
Kanakaiah Jakkula 2015년 8월 21일
Sir,
Thank you very much. It works, I encountered one problem. Here, the failure cases are separated into three categories like: 'Failure', 'Abort', 'Manual' all these belongs to failure only, but different naming. I modified the code using OR symbol (), but it gives the following error: ??? Operands to the and && operators must be convertible to logical scalar values.
Error in ==> Matrix_successFailCount_Mod at 36 case 'Failure'||'Abort'||'Manual'
My code is below: And May I seek your kind help sir, Many thanks in advance.
clc;
clear all;
close all;
M = {
'A' 'Success'
'B' 'Failure'
'B' 'Success'
'C' 'Success'
'A' 'Success'
'B' 'Success'
'C' 'Success'
'A' 'Abort'
'A' 'Manual'};
Scores=[20;20; 23;21;31;20;4;6;24];
ABC_matrix={'A''B''C'};
% [~,Names_array]=xlsread('HTDNames2.csv');
% [Scores,M]=xlsread('All_Data_ABCDEF3.csv');
% [~,loc] = ismember([M(1:end-1,1) M(2:end,1)],Names_array');
[~,loc] = ismember([M(1:end-1,1) M(2:end,1)],{'A','B','C'});
[successCount,failureCount] = deal(zeros(3));
for ni = 1:size(loc,1);
linearIndex = sub2ind([3,3],loc(ni,1),loc(ni,2));
switch M{ni+1,2}
case 'Success'
successCount(linearIndex) = successCount(linearIndex) + 1;
case 'Failure'||'Abort'||'Manual'
failureCount(linearIndex) = failureCount(linearIndex) + 1;
end
AvgScores_S=mean(successCount);
AvgScores_F=mean(failureCount);
end
successCount;
failureCount;
the cyclist
the cyclist 2015년 8월 21일
편집: the cyclist 2015년 8월 21일
The documentation for switch is pretty clear on how to handle this:
case {'Failure','Abort','Manual'}

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Numerical Integration and Differentiation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by