Changing numbers in dataset

4 visualizaciones (últimos 30 días)
Rajesh
Rajesh el 7 de Jun. de 2022
Comentada: Voss el 8 de Jun. de 2022
Hi,
I have a dataset of size m*n. The dataset only contains integer numbers between 1 to 5. Now I want to change the numbers as
1=-1
2=-1+(2/4)=-1/2
3=-1+(4/4)=0
4=-1+(64)=1/2
5=-1+(8/4)=1
Is there any efficient way of doing that?

Respuesta aceptada

Voss
Voss el 7 de Jun. de 2022
Editada: Voss el 7 de Jun. de 2022
Considering that -1 can be written as -1+(0/4), a pattern becomes clear:
1 -> -1+(0/4)
2 -> -1+(2/4)
3 -> -1+(4/4)
4 -> -1+(6/4)
5 -> -1+(8/4)
In general, say:
x -> -1+(y/4)
The pattern is that each time x is incremented by 1 on the left-hand side: x = (1, 2, 3, 4, 5), that corresponds to y being incremented by 2 on the right-hand side: y = (0, 2, 4, 6, 8). And y is 0 when x is 1.
Thus we can say that y = 2*(x-1), so that the rule is:
x -> -1+(2*(x-1)/4)
or, simplifying:
x -> -1+(x-1)/2
So if x is your m-by-n matrix, then the transformed version of x is -1+(x-1)/2.
m = 3;
n = 4;
x = randi(5,[m,n])
x = 3×4
4 2 5 2 3 2 1 2 1 5 5 2
new_x = -1+(x-1)/2
new_x = 3×4
0.5000 -0.5000 1.0000 -0.5000 0 -0.5000 -1.0000 -0.5000 -1.0000 1.0000 1.0000 -0.5000
  2 comentarios
Rajesh
Rajesh el 7 de Jun. de 2022
Editada: Rajesh el 7 de Jun. de 2022
Thank you very much!
Voss
Voss el 8 de Jun. de 2022
You're welcome!

Iniciar sesión para comentar.

Más respuestas (1)

Chris
Chris el 7 de Jun. de 2022
For only five values, I think it's pretty efficient to do a direct replacement:
ds_new = zeros(size(dataset))
ds_new(dataset == 1) = -1;
ds_new(dataset == 2) = -0.5;
% ...etc
If you need more flexibility, this is what I came up with:
ds = randi(5,4)
ds = 4×4
4 4 1 2 4 2 5 4 3 1 2 5 1 3 2 3
ints = 1:5;
vals = 0.5*(ints-1)-1;
dsnew = zeros(size(ds));
for idx = 1:numel(ints)
dsnew(ds == idx) = vals(idx);
end
dsnew
dsnew = 4×4
0.5000 0.5000 -1.0000 -0.5000 0.5000 -0.5000 1.0000 0.5000 0 -1.0000 -0.5000 1.0000 -1.0000 0 -0.5000 0

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by