How to obtain the filtered Index of Cell Array
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
% This is the code
AllNames= {'A.1';'A.1';'A.10';'A.10';'A.10';'A.10';'A.15';'A.15';'A.16' ;'A.17';'A.17';'A.17';'A.17';'A.17';'A.20A';'A.20A';'A.20A';'A.20A'};
B=[2;6;3;4;5;1;8;6;4;3;2;8;6;1;6;8;9;2];
ide_names=unique(AllNames(1:end,1)) ;
for i= 1:length(ide_names)
index=find(AllNames(:,1)==ide_names(i,1));
data.Name(1,i)=ide_names(i,1);
data.Value=B(index,1);
end
% I want to create a new data struct(data) using the filtered Index from Cell Array A with values contain in B column vector. However, Once I ran the code below error is poping up.
_Undefined function 'eq' for input arguments of type 'cell'.
Error in a (line 6) index=find(AllNames(:,1)==ide_names(i,1));_
% could someone help me out, please
1 Commento
Jan
il 6 Mag 2013
I have formatted your code. It is easy: mark it with the mouse, hit the "{} Code" button, care for a blank line before and after the code.
Risposte (3)
Andrei Bobrov
il 6 Mag 2013
Modificato: Andrei Bobrov
il 6 Mag 2013
AllNames= {'A.1';'A.1';'A.10';'A.10';'A.10';'A.10';'A.15';'A.15';'A.16' ;'A.17';'A.17';'A.17';'A.17';'A.17';'A.20A' ;'A.20A';'A.20A';'A.20A'};
B=[2;6;3;4;5;1;8;6;4;3;2;8;6;1;6;8;9;2];
[a,c,c] = unique(AllNames); %[EDIT}
bb = accumarray(c,B,[],@(x){x});
data = struct('Name',a,'Value',bb);
0 Commenti
Jan
il 6 Mag 2013
You can change the line:
index=find(AllNames(:,1)==ide_names(i,1)); % ERROR
to
index = strcmp(AllNames(:,1), ide_names{i,1});
But using the outputs of unique is faster.
0 Commenti
Vedere anche
Categorie
Scopri di più su Startup and Shutdown 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!