Removal of values from cell arrays
Show older comments
HI I have following arrays:
before={[2,3,4,5,6];[3,4,5,6,7,8];[5,6,7,8]}
after={[5,6];[4,8];5}
I got 'after' array after some calculations which removed some values from 'before' array Now I have another array X(3x7 cell array):
X= {0,1,0,0.9,0.3,[],[]; 0,0.8,0,0,-1,0.6,[]; 1,0.3,0,-0.4,[],[],[]} % [] at end of each cell were added to make it a square matrix.
In X i have got corresponding values for each value in 'before' array. Like 0 is for 2 in before{1,1}. 1 is for 3 in before{1,1}. Similarly for before{2,1} and before{3,1} I have corresponding values in X.
I want to remove those values from X whose corresponding value is removed from 'before'. Like in before{1,1} 2,3,4 are removed so 0,1,0 will be removed from X{1,1} and so on. Final resuly may look like this:
Result= {0.9,0.3; 0.8,0.6; 1,[]}
kindly help
Accepted Answer
More Answers (1)
KL
on 16 Mar 2018
If all your arrays have consistent dimension, it's a lot simpler. Not very different from the other answer though, just with cellfun,
before={[2,3,4,5,6];[3,4,5,6,7,8];[5,6,7,8];[]}; %added an empty cell
after={[5,6];[4,8];5;[]}; %added an empty cell
%modified X with the same size
X= {[0,1,0,0.9,0.3]; [0,0.8,0,0,-1,0.6]; [1,0.3,0,-0.4];[]}
%now here you get what you want
idx = cellfun(@(x,y) ismember(x,y),before,after,'uni',0);
XX = cellfun(@(x,y) x(y),X,idx,'uni',0)
Categories
Find more on Multidimensional Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!