如何将信号归一化为零均值和单位方差?
我是MATLAB新手,我正在尝试使用MATLAB构build语音变形系统。
所以我想知道如何使用MATLAB将信号归一化为零均值和单位方差?
如果你的信号在matrixX
,你可以通过去除平均值来使其为零均值:
X=X-mean(X(:));
单位方差除以标准差:
X=X/std(X(:));
如果你有统计工具箱,那么你可以计算
Z = zscore(S);
您可以确定信号的平均值,只需从所有条目中减去该值即可。 这会给你一个零均值的结果。
为了获得单位差异,确定信号的标准偏差,并将所有条目除以该值。
看起来你基本上正在考虑计算你的数据的z分数或标准分数 ,它是通过公式计算的:z =(x-mean(x))/ std(x)
这应该工作:
%% Original data (Normal with mean 1 and standard deviation 2) x = 1 + 2*randn(100,1); mean(x) var(x) std(x) %% Normalized data with mean 0 and variance 1 z = (x-mean(x))/std(x); mean(z) var(z) std(z)
为了避免被零除!
function x = normalize(x, eps) % Normalize vector `x` (zero mean, unit variance) % default values if (~exist('eps', 'var')) eps = 1e-6; end mu = mean(x(:)); sigma = std(x(:)); if sigma < eps sigma = 1; end x = (x - mu) / sigma; end