Modifying odd/even numbers of a column vector

30 visualizaciones (últimos 30 días)
Matt Smith
Matt Smith el 24 de Feb. de 2021
Comentada: Matt Smith el 24 de Feb. de 2021
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.

Respuesta aceptada

Rik
Rik el 24 de Feb. de 2021
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

Más respuestas (1)

Hernia Baby
Hernia Baby el 24 de Feb. de 2021
Editada: Hernia Baby el 24 de Feb. de 2021
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 comentarios
Rik
Rik el 24 de Feb. de 2021
Note that you made a small typo: you should have used == to compare the output of mod to 1 or 0.
Hernia Baby
Hernia Baby el 24 de Feb. de 2021
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);

Iniciar sesión para comentar.

Categorías

Más información sobre Variables en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by