Remove all number that comes after in cell array

1 visualización (últimos 30 días)
Jonathan Cheong
Jonathan Cheong el 8 de Mzo. de 2021
Comentada: Jonathan Cheong el 10 de Mzo. de 2021
Hello again, I have a 45x1 cell 'ddindexcell' with numbers of different dimensions. Then I have a list of numbers 'indend2'.
What I'd like to achieve is to remove all the numbers that comes after indend2, if found in the cell.
Example:
A = [1, 2, 3, 4, 5] B = [3, 59, ... ]
[20]
[57, 58, 59, 60]...
The output would be:
Output = [1, 2, 3]
[20]
[57, 58, 59]
Perhaps changing it into an array would make the whole process friendlier, but I'm not sure.
How can I acheive this? Thanks in advance.
  2 comentarios
Jorg Woehl
Jorg Woehl el 8 de Mzo. de 2021
Hi Jonathan, just to make sure I understand your problem correctly: I can see how B is supposed to act on the cell array A if the number listed in B is found in the cell of A. And if it is not found in A (such as in [20]), are the next cells of A simply skipped until the number listed B (i.e. 59 in your example) is found in a subsequent cell of A?
Jonathan Cheong
Jonathan Cheong el 8 de Mzo. de 2021
Hi Jorg,
Yes that's correct

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 9 de Mzo. de 2021
With some bold guessing:
A = {[1, 2, 3, 4, 5], [20], [57, 58, 59, 60]};
B = [3, 59];
iB = 1;
for iA = 1:numel(A) % Loop over elements of A
index = find(A{iA} == B(iB)); % Search current B
if ~isempty(index) % If a match is found:
A{iA} = A{iA}(1:index); % Crop current A
iB = iB + 1; % Select next B
end
end

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by