Breaking down a large array

Hi,
I have a large array (nx1) of values that I'd like to break up into a new array. This new array takes the first 200 or so values from the original array and then only selects every 3rd value (or even a logarithmic selection) of the original array to construct the new array. I was thinking about doing this with a loop, but I was wondering if matlab had any built-in functions that could do this.
Thanks, Charles

 Akzeptierte Antwort

Roger Stafford
Roger Stafford am 23 Mai 2013

0 Stimmen

For spacing every third element
p = a:3:b;
For logarithmic spacing
p = round(k*a.^(1:n));
for appropriate a, k, and n. Then do this:
new_array = old_array(p);

4 Kommentare

Senaasa
Senaasa am 23 Mai 2013
Those would work if I wanted to split up the entire array. What I'm trying to do is split up a portion of the array while keeping the beginning of the array (first 200 points) the same. After these first 200 points, I then want to go by some incremental amount (say 3) and splice together that result with the first 200 points to form the new array.
p = [1:200, 202:3:length(old_array)];
Cedric
Cedric am 23 Mai 2013
Bearbeitet: Cedric am 23 Mai 2013
What Roger is generating is an array of IDs/positions (that he then uses for indexing operations); you can work with these as you work with any other array; in particular, you can concatenate them, e.g.
p = [1:200, 203:3:1000] ;
or
p = [1:200, 200+3^(1:5)] ;
etc. Experiment with smaller numbers so you can easily visualize p.
Senaasa
Senaasa am 23 Mai 2013
Ok, I've got it now. Thanks a lot guys

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by