# Removal of values from cell arrays

3 Ansichten (letzte 30 Tage)
lucksBi am 15 Mär. 2018
Kommentiert: lucksBi am 16 Mär. 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 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Bob Thompson am 15 Mär. 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 Kommentare6 ältere Kommentare anzeigen6 ältere Kommentare ausblenden
Jan am 16 Mär. 2018
results{rows} = X{rows}(locations)
lucksBi am 16 Mär. 2018
Solved.. Thanks alot @Jan Simon & @Bob Nbob

Melden Sie sich an, um zu kommentieren.

### Weitere Antworten (1)

KL am 16 Mär. 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 Kommentar-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
lucksBi am 16 Mär. 2018
yes it also resolves problem.. Thank You so much for your time.

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by