Converting Cell Array Output to Logical Matrix

6 visualizzazioni (ultimi 30 giorni)
I have an array output consisting of the following characters: "A1a", "A1b", "A2a", "A2b" for e.g.:
'A1a' 'A2a'
'A1a' 'A2b'
'A1b' 'A2a'
'A1b' 'A2b'
How do I convert it to a logical matrix such that, if the output contains the character "A1a", under the column "A1a", the value will be true" i.e. "1" ?
%Output
Row A1a A1b A2a A2b
1 1 0 1 0
2 1 0 0 1
3 0 1 1 0
4 0 1 0 1

Risposta accettata

Star Strider
Star Strider il 20 Gen 2016
Modificato: Star Strider il 20 Gen 2016
This works:
C = {'A1a' 'A2a'
'A1a' 'A2b'
'A1b' 'A2a'
'A1b' 'A2b'};
Cu = unique(C,'stable');
for k1 = 1:length(Cu)
L{k1} = cellfun(@(x) strcmpi(x,Cu(k1)), C);
N(:,:,k1) = L{k1};
end
T = squeeze(sum(N,2));
fprintf(1,'\n\tRow\t%3s\t%3s\t%3s\t%3s\n', Cu{:})
fprintf(1, '\t%2.0f\t%2.0f\t%2.0f\t%2.0f\t%2.0f\n', [[1:4]' T]')
Row A1a A1b A2a A2b
1 1 0 1 0
2 1 0 0 1
3 0 1 1 0
4 0 1 0 1

Più risposte (1)

Harsheel
Harsheel il 19 Gen 2016
Modificato: Harsheel il 19 Gen 2016
out = cellfun(@(x)(strcmp(x,'A1a')), A); % A is the input cell array

Categorie

Scopri di più su Data Types in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by