• Support PF! Buy your school textbooks, materials and every day products Here!

MATLAB, separate odds and evens from matrix

  • #1
599
6

Homework Statement



Given variable b that contains a row vector of length 10, assign the contents of the odd indeces in b to variable odd , and assign the contents of the even indeces of b to variable even.

Examples:

Input b = [8 -3 0 7 -6 -3 1 8 7 -2]
Output odd = [8 0 -6 1 7]
even =[-3 7 -3 8 -2]


Homework Equations




The Attempt at a Solution



b is some arbitrary matrix




O = mod(b,2);
odd = b(O)


E = ~mod(b,2);
even = b(E)

What's weird is that it works for b(E) but b(O) yields and error: Subscript indices must either be real positive integers or logicals.
 

Answers and Replies

  • #2
RUber
Homework Helper
1,687
344
I am not sure that mod is the best command to use for this purpose. You are just looking to split the matrix into 2 parts based on whether or not the index is odd or ever, right?
You essentially want something that looks like:
b = [8 -3 0 7 -6 -3 1 8 7 -2];
O=[1,3,5,7,9];
E=[2,4,6,8,10];
odd = b(O)
even=b(E)
The mod function was returning a logical index of whether or not the value was odd or even.
 
  • #3
599
6
But it has to be true for any arbitrary matrix of any length of numbers :/.
 
  • #4
818
67
But it has to be true for any arbitrary matrix of any length of numbers :/.
You want to generate the sequences 1,3,5,... and 2,4,6,... to use as indices for your matrix. Do you know of any easy way to do that in MATLAB? Hint: The colon operator.
 
  • #5
RUber
Homework Helper
1,687
344
For arbitrary length arrays, you can call length(b) to get your ending value. Or as milesyoung said, it might be more straightforward to use odd = b([1:2:end]) to count by twos using the colon.
 
  • #6
599
6
Ah ok, got it. Thanks!
 

Related Threads on MATLAB, separate odds and evens from matrix

  • Last Post
Replies
10
Views
3K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
4
Views
3K
  • Last Post
2
Replies
26
Views
2K
Replies
17
Views
3K
Replies
1
Views
709
  • Last Post
Replies
3
Views
3K
  • Last Post
Replies
1
Views
2K
Replies
0
Views
789
Replies
1
Views
936
Top