how to take an alternating range of elements from a vector to make two new vectors

Hello everyone,
I will try to explain the title with an example.
So let's say i have a vector (a 1x100)
a = [ 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0]
i want to extract only the 1s and the 0s in new vectors. so we will have two 1x50 vectors
a_1=[ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
a_0=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
is there a way to do that in matlab?
regards
Ali

 Accepted Answer

a = [ 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0];
a_1 = a(a == 1); % elements of a where a equals 1
a_0 = a(a == 0); % elements of a where a equals 0
disp(a_1);
Columns 1 through 37 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Columns 38 through 50 1 1 1 1 1 1 1 1 1 1 1 1 1
disp(a_0);
Columns 1 through 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Columns 38 through 50 0 0 0 0 0 0 0 0 0 0 0 0 0

4 Comments

Thank you for your answer. I wrote a very simple example to explain the problem. I have different values in my measurement.
I want to take every 10 elements and skipping the next 10 till the end of the vector.
I see. Here's a way you can do that:
% a = [ 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0];
a = 1:100; % a different a to illustrate
a_temp = reshape(a,10,[]);
a_1 = reshape(a_temp(:,1:2:end),1,[]);
a_0 = reshape(a_temp(:,2:2:end),1,[]);
disp(a_1);
Columns 1 through 37 1 2 3 4 5 6 7 8 9 10 21 22 23 24 25 26 27 28 29 30 41 42 43 44 45 46 47 48 49 50 61 62 63 64 65 66 67 Columns 38 through 50 68 69 70 81 82 83 84 85 86 87 88 89 90
disp(a_0);
Columns 1 through 37 11 12 13 14 15 16 17 18 19 20 31 32 33 34 35 36 37 38 39 40 51 52 53 54 55 56 57 58 59 60 71 72 73 74 75 76 77 Columns 38 through 50 78 79 80 91 92 93 94 95 96 97 98 99 100

Sign in to comment.

More Answers (0)

Categories

Tags

Asked:

on 12 Apr 2022

Commented:

on 13 Apr 2022

Community Treasure Hunt

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

Start Hunting!