【发布时间】:2015-09-09 12:00:26
【问题描述】:
在 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 是时间序列的数组(1x12 双精度)。 z 的公式基本上是:z = (x - mean)/stdDev 假设 x 最初设置为:
x = 第 1 至 5 列>> 40.466666670000002 43.538461540000000 40.466666670000002 41.846153850000000 46.266666669999999 第 6 至 10 栏>> 68.000000000000000 87.200000000000003 42.933333330000004 41.071428570000002 41.428571429999998 第 11 至 12 栏>> 83.200000000000003 96.076923080000000
我跑之后
x=zscore(x);
变成如下:
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 上实现代码。
【问题讨论】:
-
您的意思是如何从
z中找到x?没看懂哈哈抱歉。 -
不用担心...从数学上讲,我想要 x = z(StdDev) + mean (this) 函数代码,因为我已经知道 z = (x - mean)/stdDev (that) 作为 zscore 函数
-
好的,那不就是
z = (x-mean(x,dim))./sigma0吗? -
它没有给我正确的结果。
mean(x,2)给出:-2.405483220021172e-16 而sigma0返回 1