Changing numbers in dataset
2 次查看(过去 30 天)
显示 更早的评论
采纳的回答
Voss
2022-6-7
编辑:Voss
2022-6-7
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])
new_x = -1+(x-1)/2
更多回答(1 个)
Chris
2022-6-7
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)
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
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Descriptive Statistics 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!