How to separate vector into vectors of different lengths
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Md Shahriar Islam
el 12 de Oct. de 2018
Comentada: Md Shahriar Islam
el 12 de Oct. de 2018
I have a vector y=[1:1:10] and length vector l=[2,5,10] % these are the sample number of the vector y; I want to separate the y vector so that y1=[1,2]; y2=[3,4,5]; y3=[6,7,8,9,10];
4 comentarios
Star Strider
el 12 de Oct. de 2018
My pleasure, Stephen. I posted my Answer 6 days (and 1115 Questions) before this one, so it would have been difficult to find.
I probably should have made my explanation a bit more obvious, and emphasized that ‘Out’ was the desired result, although I thought it would be self-explanatory as I posted it.
Live and learn!
Respuesta aceptada
KSSV
el 12 de Oct. de 2018
y=[1:1:10] ;
l=[2,5,10] ;
y1=[1,2] ;
y2=[3,4,5] ;
y3=[6,7,8,9,10] ;
iwant = cell(length(l),1) ;
iwant{1} = y(1:l(1)) ;
for i = 2:length(l)
iwant{i} = y(l(i-1)+1:l(i)) ;
end
Más respuestas (1)
Stephen23
el 12 de Oct. de 2018
Editada: Stephen23
el 12 de Oct. de 2018
The simple MATLAB way:
>> y = 1:10;
>> x = [2,5,10];
>> c = mat2cell(y,1,diff([0,x]));
>> c{:}
ans =
1 2
ans =
3 4 5
ans =
6 7 8 9 10
13 comentarios
Stephen23
el 12 de Oct. de 2018
Editada: Stephen23
el 12 de Oct. de 2018
@Md Shahriar Islam: You missed my point. The question is: do you want the values in idx to represent the first 1 in a sequence of 1's, or do you want to detect any 1 in a sequence of 1's?
The same question in different words: what are the indices in idx supposed to represent? Are they supposed to represent the start of each "impact".
Please read my previous comment again, and tell my what indices you would expect for the small example I gave. This is very important to know exactly what you mean when you say that you want "to separate impacts".
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!