remove elements from cell

Dear all, I know, I've asked alot and I really appreciate your help. I have a cell array:
a = {[1 2 3 55 77 8] [3 77] [ 1 2 5 7 8 9 0 2] [ 3 44 6]}
and I would like to remove the numbers before the index based on vector b=[3 9 6]. The expected answer should be:
cell2 = {[55 77 8] [77] [0 2] []}
Thanks.

1 comentario

Jan
Jan el 13 de Jul. de 2017
Editada: Jan el 13 de Jul. de 2017
It is very welcome if you ask many questions here. But it would be appreciated, if you explain the problem as detailed as needed to define it uniquely. The explanation "remove the numbers before the index based on vector b=[3 9 6]" is not clear. Then showing any own effort and asking a specific question concerning your code would be useful also, for you and for the readers.

Iniciar sesión para comentar.

Respuestas (2)

Image Analyst
Image Analyst el 12 de Jul. de 2017

1 voto

This will do it:
a = {[1 2 3 55 77 8] [3 77] [ 1 2 5 7 8 9 0 2] [ 3 44 6]}
b=[3 9 6]
% cell2 = {[55 77 8] [77] [0 2] []}
for k = 1 : length(a)
thisArray = a{k}; % Extract array from cell.
[inA, inB] = ismember(b, thisArray); % Find where any of b occurs in thisArray.
index = find(inB>0, 1, 'last'); % Find last occurrence.
outputArray = thisArray(inB(index)+1:end); % Extract out to new array.
cell2{k} = outputArray; % Stuff into a new cell array.
end
celldisp(cell2); % Display in command window.
It's easy and intuitive, though I'm sure someone will give you a cryptic one-liner shortly.

3 comentarios

skysky2000
skysky2000 el 13 de Jul. de 2017
thanks, but this is not work with my situation
dbmn
dbmn el 13 de Jul. de 2017
skysky could you tell us what didnt work in your case?
image_analyst: one liner coming up
cell2 = cellfun(@(x) x(max([find(ismember(x, b),1, 'last'), 0])+1:end), a, 'uni', 0);
p.s. when you use max([index, 0]) you can get rid of the empty matrices :)
skysky2000
skysky2000 el 19 de Jul. de 2017
thanks alot dbmn for your help

Iniciar sesión para comentar.

skysky2000
skysky2000 el 13 de Jul. de 2017

0 votos

any help please?

2 comentarios

Image Analyst
Image Analyst el 13 de Jul. de 2017
I gave you help. My code produced exactly the cell array that you said you wanted. What's the problem? Prove to me that it does not give you what you asked for, because I don't know what else to do.
Jan
Jan el 13 de Jul. de 2017
@skysky2000: Please do not bump your thread by posting a pseudo-answer. The question is not really clear, but Image Analysts has posted a method to produce the requested answer. Now it is your turn to explain, which details is not solved yet.

Iniciar sesión para comentar.

Categorías

Etiquetas

Preguntada:

el 12 de Jul. de 2017

Comentada:

el 19 de Jul. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by