Matlab中Z-归一化(Z-score)函数的求逆

Matlab中Z-归一化(Z-score)函数的求逆,matlab,inverse,Matlab,Inverse,在Matlab R2014a中,我有信心使用zscore(x)函数 function [z,mu,sigma] = zscore(x,flag,dim) if isequal(x,[]), z = []; return; end if nargin < 2 flag = 0; end if nargin < 3 % Figure out which dimension to work along. dim = find(size(x) ~= 1, 1);

在Matlab R2014a中,我有信心使用zscore(x)函数

function [z,mu,sigma] = zscore(x,flag,dim)
if isequal(x,[]), z = []; return; end

if nargin < 2
    flag = 0;
end
if nargin < 3
    % Figure out which dimension to work along.
    dim = find(size(x) ~= 1, 1);
    if isempty(dim), dim = 1; end
end

% Compute X's mean and sd, and standardize it
mu = mean(x,dim);
sigma = std(x,flag,dim);
sigma0 = sigma;
sigma0(sigma0==0) = 1;
z = bsxfun(@minus,x, mu);
z = bsxfun(@rdivide, z, sigma0); 
具体如下:

x= 第1列至第5列>> -0.730346157143482 -0.586298957286754 -0.730346157143482 -0.665657180852154 -0.458363881462091 第6列至第10列>> 0.560788093923360 1.461143213420378 -0.614675534465169 -0.701986757521516 -0.685239080313558 第11列至第12列>> 1.273569230191833 1.877413168652630


我需要应用它的反函数。我应该如何在Matlab上实现代码。

要计算逆,您需要知道原始x的平均值和标准偏差,因为有许多输入值可能会导致相同的z分数。我想你已经意识到,根据z分数的定义,z分数的平均值和标准差总是分别为0和1,因此没有给出有用的信息

如果你知道原始平均值和标准偏差。您可以简单地将原始x计算为x=std(x)*z+mean(x)。但是,如果您不这样做,那么问题就没有很好的定义,无法解决


例如,如果将100添加到所有原始数据中,z分数将保持不变。没有办法单独从z分数中区分哪个x值是正确的。如果将原始数据乘以常数,则相同

你是说如何从
z
中查找
x
?我不明白,哈哈对不起,不用担心。。。从数学上讲,我想要x=z(StdDev)+mean(this)函数代码,因为我已经知道z=(x-mean)/StdDev(that)是zscore函数OK,那么它不是简单的
z=(x-mean(x,dim))./sigma0
?它没有给我正确的结果
mean(x,2)
给出:-2.405483220021172e-16,而
sigma0
返回1Hanks,我确实需要知道原始x的平均值和sigma来计算zscore的反函数。对于这些未知数,我将把另一个数组的std偏差和平均值应用到我原来的x的Z核上。
x=zscore(x);