comparing rows in cell array
Info
This question is closed. Reopen it to edit or answer.
Show older comments
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 Comment
Guillaume
on 27 Feb 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
Answers (1)
Fangjun Jiang
on 27 Feb 2020
0 votes
unique(Allcases,'rows') might be easier.
7 Comments
Jonathan
on 27 Feb 2020
Fangjun Jiang
on 27 Feb 2020
Edited: Fangjun Jiang
on 27 Feb 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
on 27 Feb 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
on 29 Feb 2020
Fangjun Jiang
on 29 Feb 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
on 29 Feb 2020
Jonathan
on 29 Feb 2020
This question is closed.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!