How do I extract multiple vectors of different lengths from a single vector?

1 view (last 30 days)
I have a noise signal generated from a power supply rail that crosses zero at about 118 points. I want to extract vectors of the data from one negative zero crossing to the next to separate them out. They are from a PRBS7 pattern and I want to make multiple patterns from the one pattern by randomizing the order of the vectors.
My initial attempt to extract the vectors (Doesn't work because they are different lengths)
*ivddx is the noise vector, v is the vector that contains the zero crossing indices of ivddx
k=length(v)
for i = 1:k
if i==1
a(:,1)=ivddx(1):ivddx(v(1));
elseif i==k
a(:,k+1)=ivddx(v(k):end);
else
a(:,i)=ivddx(v(i):v(i+1)-1);
end
end

Answers (1)

Doug Hull
Doug Hull on 24 Feb 2014
You should store each extracted vector in a cell array. The elements of a cell array do not care if they are different lenths:
>> a{1} = [1]
a =
[1]
>> a{2} = [2 2]
a =
[1] [1x2 double]

Products

Community Treasure Hunt

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

Start Hunting!