How to extract column information of a mix cell array! - Please Help :(
1 次查看(过去 30 天)
显示 更早的评论
Hi the wonderful MatLab community!
Im very new to MatLab and urgently require some assistance please!
I have a cell array
C=
1 '100'
2 '200'
3 '200'
4 '100'
5 '200'
...etc
The cell array changes will always have the two columns but will have random number of rows. The first column will always start from 1 and increase in sequential order moving down the cell array. The second column will only have numbers of either '100' or '200'.
How do you convert array of C such that C(:,2) == 200; basically outcome of array D to be:
D=
2
3
5
...etc
0 个评论
采纳的回答
Henry Giddens
2017-9-2
Hi,
In this example, all of your '100' and 200' values are strings, so you need to identify the cells in the second column of your cell array which have the string value of 200.
The following line of code does this, and also groups the output into an array of numerical values (rather than a cell array).
D = [C{strcmp(C(:,2),'200'),1}]'
3 个评论
Henry Giddens
2017-9-5
编辑:Henry Giddens
2017-9-5
If I have understood this correctly:
The above answer should give you all the entries in the cell array with only '200' in the middle column edited slightly because you are also interested in the final column now:
indx = C{strcmp(C(:,2),'200');
C2 = C(indx,:);
Now loop through the third column, and see if the same number appears in the firstcolumn:
indx2 = false(length(C2),1);
for i = 1:length(C2);
if ismember(C2{i,3},[C2{:,1}]);
indx2(i) = true;
end;
end
% select the rows from C2 that have been identified as meeting the criteria
% and convert to numerical array:
D = cell2mat([C2(indx2,1),C2(indx2,3)])
D =
4 1
7 4
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!