array manipulation - a few basic questions

Hi, I have to do a bit of array manipulation and I really don't have a clue about it.
First I need to know how to take a double array, and turn it in to a 2046x1 array (twice as long), with 1024-2046 just being exactly the same as 1-1023.
Then I need to know how to chop off the first half of an array, in this case taking a 2046x1 array and disregarding the first 1-1023, leaving only a 1023x1 array made up from only the second half of the 2046x1 array.
I know it's simple stuff, but I just haven't done it before.

1 Comment

Tom's question
Hi, I have to do a bit of array manipulation and I really don't have a clue about it.
First I need to know how to take a double array, and turn it in to a 2046x1 array (twice as long), with 1024-2046 just being exactly the same as 1-1023.
Then I need to know how to chop off the first half of an array, in this case taking a 2046x1 array and disregarding the first 1-1023, leaving only a 1023x1 array made up from only the second half of the 2046x1 array.
I know it's simple stuff, but I just haven't done it before.

Sign in to comment.

 Accepted Answer

Please try:
x = rand(1023,1);
y = repmat(x,2,1);
z = y(1024:2046);
HTH.
Rick

6 Comments

Or: y = [x; x];
or: y = vertcat(x, x);
Or: z = y(1024:end);
I avoid the END in indexing expressions in general. There have been several bugs in nested expressions and it is "slower" than "1024:numel(y)" - if one could claim that micro-seconds matter.
Many thanks guys - all useful.
I guessed that z = y(numel(x)+1:numel(y)); would work too. That make sense?
Yes, at least in this particular case, but not generally.

Sign in to comment.

More Answers (0)

Products

Tags

Asked:

Tom
on 18 Mar 2012

Community Treasure Hunt

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

Start Hunting!