How to create an array out of a matrix based on criteria.
2 次查看(过去 30 天)
显示 更早的评论
Suppose i have a matrix of
a=[1,2;
1,3;
1,4;
2,12;
2,15;
5,7;
5,8;
6,98;
6.99;
7,8;
7,9;
7,11;
9,14;
9,16;
12,18;
14,20;
20,35;
98,102;
99,204;
204,300];
I want to create arrays arrays that will contain elements mentioned in the pair.
b=[1,2,3,4,12,15,18]
c=[5,7,8,9,14,16,20,35]
d=[6,98,99,102,204,300]
The idea is that if 2 is in a pair of 1, then every other element in pair with 2 will end up in the b array. So on and so forth for different categories, b,c,d,.... How can I achieve that kind of iteration in Matlab?
0 个评论
采纳的回答
Thorsten
2014-11-18
编辑:Thorsten
2014-11-18
b = a(1,:); c = [];
for i = 2:size(a, 1)
if ~isempty(intersect(a(i,:), b))
b = union(b, a(i,:));
else
c = union(c, a(i,:));
end
end
2 个评论
Thorsten
2014-11-19
Oh, you changed the question. That's not fair! (Just kidding.) The generalized solution is
b{1} = a(1,:);
for i = 2:size(a, 1)
bi = 1;
while bi <= numel(b) && isempty(intersect(a(i,:), b{bi}))
bi = bi + 1;
end
if bi <= numel(b) % append a(i,:) to b{bi}
b{bi} = union(a(i,:), b{bi});
else % create bi'th entry in cell b
b{bi} = a(i, :);
end
end
for bi = 1:numel(b)
disp(b{bi})
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!