Modifying odd/even numbers of a column vector

How would I go about modifying the odd and even elements of the following vector ?
x = [4 5 7 6 5 8 2 1];
So that when run it can carry out either +,-,*,/,^ ?.
Also after the vectors have been changed the disp(x); shows all all elements, including ones not changed.

 Accepted Answer

If you have trouble with Matlab basics you may consider doing the Onramp tutorial (which is provided for free by Mathworks).
x = [4 5 7 6 5 8 2 1];
%with simple indexing:
x(1:2:end)=2*x(1:2:end);
disp(x);
8 5 14 6 10 8 4 1
%or with logical indexing with mod:
L=mod(x,2)==0;
x(L)=2*x(L);
disp(x);
16 5 28 12 20 16 8 1

More Answers (1)

You can modyfiy each element with mod function.
x = [4 5 7 6 5 8 2 1];
x_odd = x(mod(x,2)==1); % odd element
x_even = x(mod(x,2)==0); % even element
mod

3 Comments

Thanks for you reply!
This seperates the vector, which is not what I want.
Say for example I wanted to multiply just the odd elements by 2. I'd want the other elements to not be affected but still displayed like this:
x = [4 5 7 6 5 8 2 1];
disp(x);
4 10 14 6 10 8 2 2
Note that you made a small typo: you should have used == to compare the output of mod to 1 or 0.
Thank you, Rik! I will modify my typo.
--------------------------------
To Matt
I got what you want to do.
Then, you can do this with logical indexing.
It is same with Rik's code.
times = 2;
x = [4 5 7 6 5 8 2 1];
idx_odd = mod(x,2) == 1; % odd element
x(idx_odd) = times * x(idx_odd);
disp(x);

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

Asked:

on 24 Feb 2021

Commented:

on 24 Feb 2021

Community Treasure Hunt

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

Start Hunting!