Colon operator for cells

Hello,
i have the following table:
Tab1=table('Size',[9 2],'VariableTypes',{'cell','double'},'VariableNames',{'Description','Value'});
Tab1.Description(:)={'Name1','Name2','Name3','Name4','Name5','Name6','Name7','Name8','Name9'};
Tab1.Value(:)=[5,10,17,7,25,75,23,47,54];
Tab1=
Description Value
_______ _______
'Name1' 5
'Name2' 10
'Name3' 17
'Name4' 7
'Name5' 25
'Name6' 75
'Name7' 23
'Name8' 47
'Name9' 54
I want to access Description from 'Name3' until 'Name8', is there a way to do it with the concrete content ('Name3' and 'Name8') and without using the rows/columns?
So i want the solution of the following calculation, but the calculation itself should be different:
Tab1.Description(3:8,1);
'Name3'
'Name4'
'Name5'
'Name6'
'Name7'
'Name8'
I am searching for a solution similar to:
Tab1.Description({'Name3'}:{'Name8'});
This doesnt work, because of: Undefined operator ':' for input arguments of type 'cell'.
I will greatly appreciate any assistance.

Respuestas (1)

madhan ravi
madhan ravi el 22 de Abr. de 2019

0 votos

idx="Name"+(3:8);
Tab1(ismember(Tab1{:,1},idx),:)

4 comentarios

Max Bornemann
Max Bornemann el 22 de Abr. de 2019
Thank you sir! This solution is only possible with the example names given. Is there also a solution if i swap names, for example 'Name2' is now 'Max' and 'Name3' is now 'Linda'?
Tab1=
Description Value
_______ _______
'Name1' 5
'Name2' 10
'Max' 17
'Name4' 7
'Name5' 25
'Name6' 75
'Name7' 23
'Linda' 47
'Name9' 54
So solution would look like:
'Max'
'Name4'
'Name5'
'Name6'
'Name7'
'Linda'
madhan ravi
madhan ravi el 22 de Abr. de 2019
For older versions:
idx = regexp(sprintf('Name%d\n',3:8),'(\w*)','match');
% or
idx = sprintfc('Name%d',3:8); % undocumented
madhan ravi
madhan ravi el 22 de Abr. de 2019
Editada: madhan ravi el 22 de Abr. de 2019
So mention the idx as is and then use ismember() ?
idx = {'Max'
'Name4'
'Name5'
'Name6'
'Name7'
'Linda'};
Tab1(ismember(Tab1{:,1},idx),:)
Max Bornemann
Max Bornemann el 22 de Abr. de 2019
Sorry about the circumstances. Like this i would have the solution i want (idx) by just writing it down. I just need variable description, the corresponding value is not needed. Imagine there are way more rows with various names between 'Max' and 'Linda' and i dont even no them. I just know that 'Max' and 'Linda' are unique in description. So is there a way to "cut out" from Tab1.description every entry from 'Max' to 'Linda' including both?

Iniciar sesión para comentar.

Categorías

Más información sobre Creating, Deleting, and Querying Graphics Objects en Centro de ayuda y File Exchange.

Preguntada:

el 22 de Abr. de 2019

Comentada:

el 22 de Abr. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by