# Removal of values from cell arrays

1 visualizzazione (ultimi 30 giorni)
lucksBi il 15 Mar 2018
Commentato: lucksBi il 16 Mar 2018
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
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Bob Thompson il 15 Mar 2018
Is it possible for you to rearrange X to be 3x1 array of matrices like before and after? If so then you can use the following:
for rows = 1:size(before,1);
locations = ismember(before{rows},after{rows});
results(rows) = X{rows}(locations==1);
end
If you can't reorganize X it's going to be a bit more difficult, but let me know.
##### 8 CommentiMostra 6 commenti meno recentiNascondi 6 commenti meno recenti
Jan il 16 Mar 2018
results{rows} = X{rows}(locations)
lucksBi il 16 Mar 2018
Solved.. Thanks alot @Jan Simon & @Bob Nbob

Accedi per commentare.

### Più risposte (1)

KL il 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,
%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)
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
lucksBi il 16 Mar 2018
yes it also resolves problem.. Thank You so much for your time.

Accedi per commentare.

### Categorie

Scopri di più su Matrix Indexing in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by