filtering a cell array according to a matrix

1 次查看(过去 30 天)
Imagine these two variables 'a' and 'b'. I want to filter the matrices in cell array 'b'. The matrices in cell array 'b' have 7 columns. The rows of every number in column 5 to 7 of the matrices in cell array 'b' that match the numbers in matrix 'a' should be recorded in a new variable c with the only exception that column 5 to 7 are deleted and only column 1 to 4 are recorded. How can I put a code for this?
a=rand(18,1)
b={rand(1877958,7); rand(1251972,7)};

采纳的回答

Star Strider
Star Strider 2015-10-8
Random numbers are, well, random, so there is no match (using rand), and I can only say that this code runs. I will leave it to you to test it in your actual application:
a=rand(18,1);
b={rand(1877958,7); rand(1251972,7)};
db = cell2mat(b); % Double Matrices Are Easier To Work With
b57 = db(:,5:7);
Lia = ismember(b57,a);
idx = find(sum(Lia,2)); % Row Indices Of ‘b’ Where ‘b57’ & ‘a’ Match
c = db(idx,1:4) % Desired Output (As I Read The Question)
  2 个评论
AA
AA 2015-10-8
thanks, it worked. i modified it a bit
for x = 1:100
for y = 1:61
Lia = ismember(dateshalf{x,y},ans);
idx = find(sum(Lia,2)); % Row Indices Of ‘b’ Where ‘b57’ & ‘a’ Match
Liaa{x,y}=idx;
qq{x,y} = q{x,y}(Liaa{x,y},1:60); % Desired Output (As I Read The Question)
end
end

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by