How to scale/normalize values in a matrix to be between -1 and 1
显示 更早的评论
I found the script that scale/normalize values in a matrix to be between 0 and 1
I = [ 1 2 3; 4 5 6]; % Some n x m matrix I that contains unscaled values.
scaledI = (I-min(I(:))) ./ (max(I(:)-min(I(:))));
min(scaledI(:)) % the min is 0
max(scaledI(:)) % the max 1
Was wondering if anyone could help me normalize values in matrix between -1 and +1 Thanks
采纳的回答
更多回答(2 个)
Steven Lord
2019-8-1
If you're using release R2018a or later, use the normalize function. Specify 'range' as the method and the range to which you want the data normalized (in this case [-1, 1]) as the methodtype.
x = 5*rand(1, 10)
n = normalize(x, 'range', [-1 1])
[minValue, maxValue] = bounds(n) % Should return -1 and 1
function data = normalize(d)
% the data is normalized so that max is 1, and min is 0
data = (d -repmat(min(d,[],1),size(d,1),1))*spdiags(1./(max(d,[],1)-min(d,[],1))’,0,size(d,2),size(d,2));
2 个评论
Syed
2023-6-1
i need denormalized command
Suppose I told you that I had a normalized data set. Here it is.
x = [0 1];
What was the un-normalized data that was used to generate x? Any of these sets could have resulted in this normalized data.
y1 = [0 1];
y2 = [-1 1];
y3 = [42 1e6];
normalize(y1, 'range', [0 1])
normalize(y2, 'range', [0 1])
normalize(y3, 'range', [0 1])
So what additional information do you have that would let you "denormalize" x to generate a specific one of y1, y2, or y3?
类别
在 帮助中心 和 File Exchange 中查找有关 Dynamic System Models 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!