comparing rows in cell array
Infos
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Afficher commentaires plus anciens
Allcases = readtable('227.xlsx');
caseID = Allcases{:,1};
caseX = Allcases{:,2};
caseY = Allcases{:,3};
i = 1
f = {}
while i<5
g = {caseID(i), caseX(i), caseY(i)}
if *****************:
f = [f;g];
end
i = i+1;
end
Hi, I am trying to build a cell array of unique values. In this case, I am only trying to add the row g to f if it hasn't occured before in f. Could anyone please help me complete the missing code? I am very new to Matlab and have been spending hours to try and fix this problem.
1 commentaire
Guillaume
le 27 Fév 2020
Note that:
i = 1;
while i < 5
%... some code that doesn't change i
i = i+5;
end
is more simply written as:
for i = 1:5
%... some code that doesn't change i
end
Réponses (1)
Fangjun Jiang
le 27 Fév 2020
0 votes
unique(Allcases,'rows') might be easier.
7 commentaires
Jonathan
le 27 Fév 2020
Fangjun Jiang
le 27 Fév 2020
Modifié(e) : Fangjun Jiang
le 27 Fév 2020
What is the data type of caseID, caseX and caseY? Might be helpful just providing a simplified data example.
f=[];
g=[1,2,3];
f=[f;g];
g=[1,1,2];
if ~ismember(g,f,'rows')
f=[f;g];
end
Guillaume
le 27 Fév 2020
"Sorry didn't specify but the reason it is more complicated is because I tried to simplify the problem here as part of a bigger project. Because I've got to add other data/changing, unique won't really work."
This explanation is very unclear, you need to provide a lot more details. You can't expect us to keep suggesting methods that make sense with the limited information you provide and then come back with: 'sorry, won't work'.
Jonathan
le 29 Fév 2020
Fangjun Jiang
le 29 Fév 2020
assume it is not a floating point data equal comparison,
if f{end,3}~=g{1,3} || f{end,5}~=g{1,5}
f=[f;g];
end
Jonathan
le 29 Fév 2020
Jonathan
le 29 Fév 2020
Cette question est clôturée.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!